From 2b6241404b372a05b9eed851e181306eb540eff4 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 27 Oct 2023 10:06:57 +0200 Subject: [PATCH 01/47] feat: Convert ROS Messages to Capella package --- .gitignore | 3 + .gitmodules | 6 + .gitmodules.license | 2 + docs/examples/advanced.ipynb | 2289 ++++++++ docs/examples/advanced.ipynb.license | 2 + docs/examples/data/empty_model/.project | 12 + .../data/empty_model/.project.license | 2 + docs/examples/data/empty_model/ros_msgs.afm | 4 + .../data/empty_model/ros_msgs.afm.license | 2 + docs/examples/data/empty_model/ros_msgs.aird | 74 + .../data/empty_model/ros_msgs.aird.license | 2 + .../data/empty_model/ros_msgs.capella | 272 + .../data/empty_model/ros_msgs.capella.license | 2 + docs/examples/data/model/.project | 12 + docs/examples/data/model/.project.license | 2 + docs/examples/data/model/ros_msgs.afm | 4 + docs/examples/data/model/ros_msgs.afm.license | 2 + docs/examples/data/model/ros_msgs.aird | 74 + .../examples/data/model/ros_msgs.aird.license | 2 + docs/examples/data/model/ros_msgs.capella | 4579 +++++++++++++++++ .../data/model/ros_msgs.capella.license | 2 + .../data/msgs/MultiArrayDimension.msg | 3 + .../data/msgs/MultiArrayDimension.msg.license | 2 + docs/examples/data/msgs/MultiArrayLayout.msg | 26 + .../data/msgs/MultiArrayLayout.msg.license | 2 + docs/examples/data/msgs/UInt64MultiArray.msg | 5 + .../data/msgs/UInt64MultiArray.msg.license | 2 + docs/examples/model_from_capella.ipynb | 138 + .../examples/model_from_capella.ipynb.license | 2 + docs/examples/model_from_msgs.ipynb | 123 + docs/examples/model_from_msgs.ipynb.license | 2 + docs/examples/quickstart.ipynb | 2304 +++++++++ docs/examples/quickstart.ipynb.license | 2 + pyproject.toml | 1 + rosidl2capella/capella_wrapper.py | 184 + rosidl2capella/idl_model.py | 85 + rosidl2capella/rosidl_parser.py | 137 + rosidl2capella/synchronize.py | 38 + 38 files changed, 10405 insertions(+) create mode 100644 .gitmodules create mode 100644 .gitmodules.license create mode 100644 docs/examples/advanced.ipynb create mode 100644 docs/examples/advanced.ipynb.license create mode 100644 docs/examples/data/empty_model/.project create mode 100644 docs/examples/data/empty_model/.project.license create mode 100644 docs/examples/data/empty_model/ros_msgs.afm create mode 100644 docs/examples/data/empty_model/ros_msgs.afm.license create mode 100644 docs/examples/data/empty_model/ros_msgs.aird create mode 100644 docs/examples/data/empty_model/ros_msgs.aird.license create mode 100644 docs/examples/data/empty_model/ros_msgs.capella create mode 100644 docs/examples/data/empty_model/ros_msgs.capella.license create mode 100644 docs/examples/data/model/.project create mode 100644 docs/examples/data/model/.project.license create mode 100644 docs/examples/data/model/ros_msgs.afm create mode 100644 docs/examples/data/model/ros_msgs.afm.license create mode 100644 docs/examples/data/model/ros_msgs.aird create mode 100644 docs/examples/data/model/ros_msgs.aird.license create mode 100644 docs/examples/data/model/ros_msgs.capella create mode 100644 docs/examples/data/model/ros_msgs.capella.license create mode 100644 docs/examples/data/msgs/MultiArrayDimension.msg create mode 100644 docs/examples/data/msgs/MultiArrayDimension.msg.license create mode 100644 docs/examples/data/msgs/MultiArrayLayout.msg create mode 100644 docs/examples/data/msgs/MultiArrayLayout.msg.license create mode 100644 docs/examples/data/msgs/UInt64MultiArray.msg create mode 100644 docs/examples/data/msgs/UInt64MultiArray.msg.license create mode 100644 docs/examples/model_from_capella.ipynb create mode 100644 docs/examples/model_from_capella.ipynb.license create mode 100644 docs/examples/model_from_msgs.ipynb create mode 100644 docs/examples/model_from_msgs.ipynb.license create mode 100644 docs/examples/quickstart.ipynb create mode 100644 docs/examples/quickstart.ipynb.license create mode 100644 rosidl2capella/capella_wrapper.py create mode 100644 rosidl2capella/idl_model.py create mode 100644 rosidl2capella/rosidl_parser.py create mode 100644 rosidl2capella/synchronize.py diff --git a/.gitignore b/.gitignore index 975287e..4baa4a1 100644 --- a/.gitignore +++ b/.gitignore @@ -137,6 +137,9 @@ venv.bak/ .spyderproject .spyproject +# VS Code settings +.vscode/ + # Rope project settings .ropeproject diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..3d86f0a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "std_msgs"] + path = rosidl2capella/ros/std_msgs + url = https://github.com/ros/std_msgs.git +[submodule "common_msgs"] + path = rosidl2capella/ros/common_msgs + url = https://github.com/ros/common_msgs.git diff --git a/.gitmodules.license b/.gitmodules.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/.gitmodules.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/advanced.ipynb b/docs/examples/advanced.ipynb new file mode 100644 index 0000000..7761e9f --- /dev/null +++ b/docs/examples/advanced.ipynb @@ -0,0 +1,2289 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from rosidl2capella.idl_model import IDLModel\n", + "from rosidl2capella.capella_wrapper import CapellaWrapper" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "Property values are not available in this model\n" + ] + } + ], + "source": [ + "msg_model = IDLModel.from_msg_model(\"data/msgs\")\n", + "capella_wrapper = CapellaWrapper(\"data/model\", \"la\")\n", + "capella_model = capella_wrapper.as_idlmodel" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "msg_model.packages.keys() == capella_model.packages.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "msg_model.packages[\"root\"].classes.keys() == capella_model.packages[\"root\"].classes.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" + ] + } + ], + "source": [ + "capella_wrapper.create_packages(set(msg_model.packages.keys()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n" + ] + } + ], + "source": [ + "for pkg_name, package in msg_model.packages.items():\n", + " capella_wrapper.create_classes(package.classes, pkg_name)\n", + " capella_wrapper.create_types(package.types, pkg_name)\n", + " capella_wrapper.create_basic_types(package.basic_types, pkg_name)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "all_classes = {}\n", + "for pkg in msg_model.packages.values():\n", + " all_classes |= pkg.classes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" + ] + } + ], + "source": [ + "for package_name, package in msg_model.packages.items():\n", + " for class_name, (_, properties) in package.classes.items():\n", + " for prop in properties:\n", + " _, prop_type, type_pkg, _, _, _ = prop\n", + " type_pkg = type_pkg or package_name\n", + " if prop_type in msg_model.packages[type_pkg].classes:\n", + " try:\n", + " capella_wrapper.create_composition(\n", + " class_name, prop, package_name\n", + " )\n", + " except KeyError:\n", + " print(class_name, prop, package_name)\n", + " else:\n", + " capella_wrapper.create_attribute(\n", + " class_name, prop, package_name\n", + " )" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/advanced.ipynb.license b/docs/examples/advanced.ipynb.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/advanced.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/empty_model/.project b/docs/examples/data/empty_model/.project new file mode 100644 index 0000000..c8c652b --- /dev/null +++ b/docs/examples/data/empty_model/.project @@ -0,0 +1,12 @@ + + + ros_msgs + + + + + + + org.polarsys.capella.project.nature + + diff --git a/docs/examples/data/empty_model/.project.license b/docs/examples/data/empty_model/.project.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/empty_model/.project.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/empty_model/ros_msgs.afm b/docs/examples/data/empty_model/ros_msgs.afm new file mode 100644 index 0000000..cf2da5c --- /dev/null +++ b/docs/examples/data/empty_model/ros_msgs.afm @@ -0,0 +1,4 @@ + + + + diff --git a/docs/examples/data/empty_model/ros_msgs.afm.license b/docs/examples/data/empty_model/ros_msgs.afm.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/empty_model/ros_msgs.afm.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/empty_model/ros_msgs.aird b/docs/examples/data/empty_model/ros_msgs.aird new file mode 100644 index 0000000..81c024f --- /dev/null +++ b/docs/examples/data/empty_model/ros_msgs.aird @@ -0,0 +1,74 @@ + + + + ros_msgs.afm + ros_msgs.capella + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/data/empty_model/ros_msgs.aird.license b/docs/examples/data/empty_model/ros_msgs.aird.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/empty_model/ros_msgs.aird.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/empty_model/ros_msgs.capella b/docs/examples/data/empty_model/ros_msgs.capella new file mode 100644 index 0000000..b4f60ee --- /dev/null +++ b/docs/examples/data/empty_model/ros_msgs.capella @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/data/empty_model/ros_msgs.capella.license b/docs/examples/data/empty_model/ros_msgs.capella.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/empty_model/ros_msgs.capella.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/model/.project b/docs/examples/data/model/.project new file mode 100644 index 0000000..c8c652b --- /dev/null +++ b/docs/examples/data/model/.project @@ -0,0 +1,12 @@ + + + ros_msgs + + + + + + + org.polarsys.capella.project.nature + + diff --git a/docs/examples/data/model/.project.license b/docs/examples/data/model/.project.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/model/.project.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/model/ros_msgs.afm b/docs/examples/data/model/ros_msgs.afm new file mode 100644 index 0000000..cf2da5c --- /dev/null +++ b/docs/examples/data/model/ros_msgs.afm @@ -0,0 +1,4 @@ + + + + diff --git a/docs/examples/data/model/ros_msgs.afm.license b/docs/examples/data/model/ros_msgs.afm.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/model/ros_msgs.afm.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/model/ros_msgs.aird b/docs/examples/data/model/ros_msgs.aird new file mode 100644 index 0000000..81c024f --- /dev/null +++ b/docs/examples/data/model/ros_msgs.aird @@ -0,0 +1,74 @@ + + + + ros_msgs.afm + ros_msgs.capella + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/data/model/ros_msgs.aird.license b/docs/examples/data/model/ros_msgs.aird.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/model/ros_msgs.aird.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/model/ros_msgs.capella b/docs/examples/data/model/ros_msgs.capella new file mode 100644 index 0000000..0b5c5fd --- /dev/null +++ b/docs/examples/data/model/ros_msgs.capella @@ -0,0 +1,4579 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/data/model/ros_msgs.capella.license b/docs/examples/data/model/ros_msgs.capella.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/model/ros_msgs.capella.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/msgs/MultiArrayDimension.msg b/docs/examples/data/msgs/MultiArrayDimension.msg new file mode 100644 index 0000000..018fb0c --- /dev/null +++ b/docs/examples/data/msgs/MultiArrayDimension.msg @@ -0,0 +1,3 @@ +string label # label of given dimension +uint32 size # size of given dimension (in type units) +uint32 stride # stride of given dimension diff --git a/docs/examples/data/msgs/MultiArrayDimension.msg.license b/docs/examples/data/msgs/MultiArrayDimension.msg.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/msgs/MultiArrayDimension.msg.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/msgs/MultiArrayLayout.msg b/docs/examples/data/msgs/MultiArrayLayout.msg new file mode 100644 index 0000000..5ee45f3 --- /dev/null +++ b/docs/examples/data/msgs/MultiArrayLayout.msg @@ -0,0 +1,26 @@ +# The multiarray declares a generic multi-dimensional array of a +# particular data type. Dimensions are ordered from outer most +# to inner most. + +MultiArrayDimension[] dim # Array of dimension properties +uint32 data_offset # padding elements at front of data + +# Accessors should ALWAYS be written in terms of dimension stride +# and specified outer-most dimension first. +# +# multiarray(i,j,k) = data[data_offset + dim_stride[1]*i + dim_stride[2]*j + k] +# +# A standard, 3-channel 640x480 image with interleaved color channels +# would be specified as: +# +# dim[0].label = "height" +# dim[0].size = 480 +# dim[0].stride = 3*640*480 = 921600 (note dim[0] stride is just size of image) +# dim[1].label = "width" +# dim[1].size = 640 +# dim[1].stride = 3*640 = 1920 +# dim[2].label = "channel" +# dim[2].size = 3 +# dim[2].stride = 3 +# +# multiarray(i,j,k) refers to the ith row, jth column, and kth channel. diff --git a/docs/examples/data/msgs/MultiArrayLayout.msg.license b/docs/examples/data/msgs/MultiArrayLayout.msg.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/msgs/MultiArrayLayout.msg.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/msgs/UInt64MultiArray.msg b/docs/examples/data/msgs/UInt64MultiArray.msg new file mode 100644 index 0000000..bf32429 --- /dev/null +++ b/docs/examples/data/msgs/UInt64MultiArray.msg @@ -0,0 +1,5 @@ +# Please look at the MultiArrayLayout message definition for +# documentation on all multiarrays. + +MultiArrayLayout layout # specification of data layout +uint64[] data # array of data diff --git a/docs/examples/data/msgs/UInt64MultiArray.msg.license b/docs/examples/data/msgs/UInt64MultiArray.msg.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/data/msgs/UInt64MultiArray.msg.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/model_from_capella.ipynb b/docs/examples/model_from_capella.ipynb new file mode 100644 index 0000000..f9c557e --- /dev/null +++ b/docs/examples/model_from_capella.ipynb @@ -0,0 +1,138 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from rosidl2capella.capella_wrapper import CapellaWrapper" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Property values are not available in this model\n" + ] + } + ], + "source": [ + "idl_model = CapellaWrapper(\"data/model\", \"la\").as_idlmodel" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'diagnostic_msgs': ,\n", + " 'std_msgs': ,\n", + " 'shape_msgs': ,\n", + " 'stereo_msgs': ,\n", + " 'nav_msgs': ,\n", + " 'geometry_msgs': ,\n", + " 'actionlib_msgs': ,\n", + " 'trajectory_msgs': ,\n", + " 'sensor_msgs': ,\n", + " 'root': ,\n", + " 'visualization_msgs': ,\n", + " 'common_msgs': }" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idl_model.packages" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "package = idl_model.packages.get(\"root\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['MultiArrayDimension', 'UInt64MultiArray', 'MultiArrayLayout'])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "package.classes.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'string', 'uint32', 'uint64'}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "package.basic_types" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/model_from_capella.ipynb.license b/docs/examples/model_from_capella.ipynb.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/model_from_capella.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/model_from_msgs.ipynb b/docs/examples/model_from_msgs.ipynb new file mode 100644 index 0000000..e7205ff --- /dev/null +++ b/docs/examples/model_from_msgs.ipynb @@ -0,0 +1,123 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from rosidl2capella.idl_model import IDLModel" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "idl_model = IDLModel.from_msg_model(\"data/msgs\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'root': ,\n", + " 'sensor_msgs': ,\n", + " 'nav_msgs': ,\n", + " 'visualization_msgs': ,\n", + " 'trajectory_msgs': ,\n", + " 'geometry_msgs': ,\n", + " 'shape_msgs': ,\n", + " 'diagnostic_msgs': ,\n", + " 'common_msgs': ,\n", + " 'stereo_msgs': ,\n", + " 'actionlib_msgs': ,\n", + " 'std_msgs': }" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "idl_model.packages" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "package = idl_model.packages.get(\"root\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['MultiArrayDimension', 'UInt64MultiArray', 'MultiArrayLayout'])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "package.classes.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'string', 'uint32', 'uint64'}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "package.basic_types" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/model_from_msgs.ipynb.license b/docs/examples/model_from_msgs.ipynb.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/model_from_msgs.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/quickstart.ipynb b/docs/examples/quickstart.ipynb new file mode 100644 index 0000000..ec346f8 --- /dev/null +++ b/docs/examples/quickstart.ipynb @@ -0,0 +1,2304 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from rosidl2capella.idl_model import IDLModel\n", + "from rosidl2capella.capella_wrapper import CapellaWrapper" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "msg_model = IDLModel.from_msg_model(\"data/msgs\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "Property values are not available in this model\n" + ] + } + ], + "source": [ + "capella_wrapper = CapellaWrapper(\"data/empty_model\", \"la\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "capella_wrapper.as_idlmodel.packages" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" + ] + } + ], + "source": [ + "capella_wrapper.create_packages(set(msg_model.packages.keys()))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n" + ] + } + ], + "source": [ + "for pkg_name, package in msg_model.packages.items():\n", + " capella_wrapper.create_classes(package.classes, pkg_name)\n", + " capella_wrapper.create_types(package.types, pkg_name)\n", + " capella_wrapper.create_basic_types(package.basic_types, pkg_name)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "all_classes = {}\n", + "for pkg in msg_model.packages.values():\n", + " all_classes |= pkg.classes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" + ] + } + ], + "source": [ + "for package_name, package in msg_model.packages.items():\n", + " for class_name, (_, properties) in package.classes.items():\n", + " for prop in properties:\n", + " _, prop_type, type_pkg, _, _, _ = prop\n", + " type_pkg = type_pkg or package_name\n", + " if prop_type in msg_model.packages[type_pkg].classes:\n", + " capella_wrapper.create_composition(\n", + " class_name, prop, package_name\n", + " )\n", + " else:\n", + " capella_wrapper.create_attribute(\n", + " class_name, prop, package_name\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'diagnostic_msgs': ,\n", + " 'shape_msgs': ,\n", + " 'sensor_msgs': ,\n", + " 'geometry_msgs': ,\n", + " 'root': ,\n", + " 'actionlib_msgs': ,\n", + " 'std_msgs': ,\n", + " 'stereo_msgs': ,\n", + " 'nav_msgs': ,\n", + " 'visualization_msgs': ,\n", + " 'trajectory_msgs': ,\n", + " 'common_msgs': }" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "capella_wrapper.as_idlmodel.packages" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/quickstart.ipynb.license b/docs/examples/quickstart.ipynb.license new file mode 100644 index 0000000..c3fb022 --- /dev/null +++ b/docs/examples/quickstart.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/pyproject.toml b/pyproject.toml index e48a756..4b90cfa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ classifiers = [ ] dependencies = [ "click", + "capellambse @ git+https://github.com/DSD-DBS/py-capellambse.git@roletag-create", ] [project.urls] diff --git a/rosidl2capella/capella_wrapper.py b/rosidl2capella/capella_wrapper.py new file mode 100644 index 0000000..862f6c8 --- /dev/null +++ b/rosidl2capella/capella_wrapper.py @@ -0,0 +1,184 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Wrapper for Capella model.""" +import capellambse + +from rosidl2capella.idl_model import IDLModel, IDLPackage + + +class CapellaWrapper: + """Wrapper for Capella model.""" + + def __init__( + self, + path_to_capella_model: str, + layer: str, + ) -> None: + self.model = capellambse.MelodyModel(path_to_capella_model) + match layer: + case "oa": + self.data = self.model.oa.data_package + case "sa": + self.data = self.model.sa.data_package + case "la": + self.data = self.model.la.data_package + case "pa": + self.data = self.model.pa.data_package + + def create_packages(self, packages: set[str]) -> None: + """Create packages in Capella model.""" + for package_name in packages: + self.data.packages.create("DataPkg", name=package_name) + + def create_classes( + self, + classes: dict[str, tuple[str, list]], + package_name: str, + ): + """Create classes in Capella model.""" + for class_name, info in classes.items(): + description, _ = info + self.data.packages.by_name(package_name).classes.create( + name=class_name, description=description + ) + + def create_types( + self, types: dict[str, tuple[str, list]], package_name: str + ): + """Create types in Capella model.""" + for type_name, info in types.items(): + description, properties = info + type = self.data.packages.by_name(package_name).datatypes.create( + "Enumeration", name=type_name, description=description + ) + for prop in properties: + prop_name, _, value, description = prop + property = type.owned_literals.create( + "EnumerationLiteral", + name=prop_name, + description=description, + ) + property.value = capellambse.new_object( + "LiteralNumericValue", value=float(value) + ) + + def create_basic_types(self, basic_types: set[str], package_name: str): + """Create basic types in Capella model.""" + for basic_type in basic_types: + if basic_type in ["string", "char"]: + type = "StringType" + elif basic_type == "bool": + type = "BooleanType" + else: + type = "NumericType" + self.data.packages.by_name(package_name).datatypes.create( + type, name=basic_type + ) + + def create_composition( + self, + class_name: str, + properties: tuple[str, str, str, str, str, str], + package_name: str, + ): + """Create composition in Capella model.""" + ( + prop_name, + prop_type, + type_pkg, + min_card, + max_card, + comment, + ) = properties + package = self.data.packages.by_name(package_name) + superclass = package.classes.by_name(class_name) + type_pkg = type_pkg or package_name + partclass = self.data.packages.by_name(type_pkg).classes.by_name( + prop_type + ) + composition = superclass.owned_properties.create( + name=prop_name, type=partclass, kind="COMPOSITION" + ) + association = package.owned_associations.create( + navigable_members=[composition], description=comment + ) + association.members.create( + "Property", + type=superclass, + kind="ASSOCIATION", + min_card=capellambse.new_object("LiteralNumericValue", value=1), + max_card=capellambse.new_object("LiteralNumericValue", value=1), + ) + composition.min_card = capellambse.new_object( + "LiteralNumericValue", value=float(min_card) + ) + composition.max_card = capellambse.new_object( + "LiteralNumericValue", value=float(max_card or "inf") + ) + + def create_attribute( + self, + class_name: str, + properties: tuple[str, str, str, str, str, str], + package_name: str, + ): + """Create attribute in Capella model.""" + ( + prop_name, + prop_type, + type_pkg, + min_card, + max_card, + comment, + ) = properties + package = self.data.packages.by_name(package_name) + superclass = package.classes.by_name(class_name) + type_pkg = type_pkg or package_name + property_type = self.data.packages.by_name(type_pkg).datatypes.by_name( + prop_type + ) + attribute = superclass.owned_properties.create( + name=prop_name, + type=property_type, + kind="COMPOSITION", + description=comment, + ) + attribute.min_card = capellambse.new_object( + "LiteralNumericValue", value=float(min_card) + ) + attribute.max_card = capellambse.new_object( + "LiteralNumericValue", value=float(max_card or "inf") + ) + + def save_changes(self): + """Save changes to Capella model.""" + self.model.save() + + def delete_from_capella_model( + self, to_delete: dict[str, IDLPackage] + ) -> None: + """Delete elements from Capella model.""" + for pkg_name, idlpackage in to_delete.items(): + package = self.data.packages.by_name(pkg_name) + for class_name in idlpackage.classes: + package.classes.remove(package.classes.by_name(class_name)) + for type_name in idlpackage.types.keys() | idlpackage.basic_types: + package.datatypes.remove(package.datatypes.by_name(type_name)) + + @property + def as_idlmodel(self) -> IDLModel: + """Return Capella model as IDL model.""" + packages = {} + for package in self.data.packages: + classes = {cls.name: None for cls in package.classes} + types = {} + basic_types = set() + for type in package.datatypes: + if type.xtype.rpartition(":")[2] == "Enumeration": + types[type.name] = None + else: + basic_types.add(type.name) + packages[package.name] = IDLPackage( + classes=classes, types=types, basic_types=basic_types + ) + return IDLModel(packages) diff --git a/rosidl2capella/idl_model.py b/rosidl2capella/idl_model.py new file mode 100644 index 0000000..d43537d --- /dev/null +++ b/rosidl2capella/idl_model.py @@ -0,0 +1,85 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""IDL model definitions.""" +import os +import typing as t + +import rosidl2capella.rosidl_parser as parser + +PATH = os.path.dirname(__file__) + + +class IDLPackage: + """IDL package definition.""" + + classes: dict[str, t.Any] + types: dict[str, t.Any] + basic_types: set[str] + + def __init__( + self, + classes: dict[str, t.Any] | set[str], + types: dict[str, t.Any] | set[str], + basic_types: set[str], + ) -> None: + self.classes = ( + classes + if isinstance(classes, dict) + else {k: None for k in classes} + ) + self.types = ( + types if isinstance(types, dict) else {k: None for k in types} + ) + self.basic_types = basic_types + + +class IDLModel: + """IDL model definition.""" + + packages: dict[str, IDLPackage] + + def __init__(self, packages: dict[str, IDLPackage]) -> None: + self.packages = packages + + @classmethod + def from_msg_model(cls, path_to_msg_model: str) -> "IDLModel": + """Create IDL model from message files.""" + packages = {} + packages["root"] = cls._parse_package(path_to_msg_model) + common_msgs_dir = os.path.join(PATH, "ros", "common_msgs") + for dir_name in os.listdir(common_msgs_dir): + if os.path.isdir(os.path.join(common_msgs_dir, dir_name)): + packages[dir_name] = cls._parse_package( + os.path.join(common_msgs_dir, dir_name) + ) + packages["std_msgs"] = cls._parse_package( + os.path.join(PATH, "ros", "std_msgs") + ) + return cls(packages) + + @staticmethod + def _parse_package(path_to_pkg_root: str) -> IDLPackage: + """Parse package from message files.""" + classes = parser.MessagesPkg.from_msg_folder( + path_to_pkg_root + ).as_structs + types = parser.MessagesPkg.from_msg_folder( + path_to_pkg_root, True + ).as_structs + basic_types = set() + all_type_defs = classes | types + for _, properties in all_type_defs.values(): + for prop in properties: + prop_type = prop[1] + if prop_type not in all_type_defs: + basic_types.add(prop_type) + return IDLPackage(classes, types, basic_types) + + def delete_from_model(self, to_delete: dict[str, IDLPackage]) -> None: + """Delete elements from IDL model.""" + for pkg_name, package in to_delete.items(): + for class_name in package.classes.keys(): + self.packages[pkg_name].classes.pop(class_name) + for type_name in package.types.keys(): + self.packages[pkg_name].types.pop(type_name) + self.packages[pkg_name].basic_types -= package.basic_types diff --git a/rosidl2capella/rosidl_parser.py b/rosidl2capella/rosidl_parser.py new file mode 100644 index 0000000..ba25d18 --- /dev/null +++ b/rosidl2capella/rosidl_parser.py @@ -0,0 +1,137 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Parser for ROS message files.""" +import os +import re +from pathlib import Path + +RE_TNC = re.compile( + r"^([A-Za-z0-9\[\]\/_]+).*?([A-Za-z0-9_]+)(?:.*?# ([^\n]+))?" +) +RE_NAME = re.compile(r"([a-zA-Z0-9]+)[.]msg") +RE_ENUM = re.compile( + r"^([A-Za-z0-9]+).*?([A-Za-z0-9_]+).*?= ([0-9]+)(?:.*?# ([^\n]+))?" +) +RE_COMMENT = re.compile(r"cf. ([a-zA-Z0-9_]+)(?:, ([a-zA-Z0-9_]+))?") + + +class MessageDef: + """Message definition.""" + + def __init__(self, name, description, props, is_type): + self.name = name + self.description = description + self.props = props + self.is_type = is_type + + @property + def as_struct(self): + """Return message definition as struct.""" + if self.is_type: + return (self.description, self.props) + out = [] + for prop, prop_type_raw, comment in self.props: + p = prop_type_raw.split("[", 1) + min_card = "0" if len(p) > 1 else "1" + max_card = p[1].replace("]", "") if len(p) > 1 else "1" + match = RE_COMMENT.search(comment) + enum, subenum = match.groups() if match else (None, None) + type_path = list(p[0].split("/", 1)) + prop_type = ( + re.sub("_XXX$", "", subenum) + if subenum + else enum + if enum + else type_path[-1] + ) + type_pkg = type_path[0] if len(type_path) > 1 else "" + out.append( + (prop, prop_type, type_pkg, min_card, max_card, comment) + ) + return (self.description, out) + + @classmethod + def from_msg_file(cls, filename, is_type): + """Create message definition from message file.""" + with open(filename) as fh: + raw_msg = fh.read() + + lines = raw_msg.split("\n") + msg = [] + comment = [] + for line in lines: + if line.startswith("#"): + comment.append(line) + else: + msg.extend(lines[lines.index(line) :]) + break + description = "\n".join(comment).replace("#", "").strip() + name = RE_NAME.findall(str(filename))[0] + if is_type: + blocks = "\n".join(msg).split("\n\n") + out = [] + for block in blocks: + lines = block.split("\n") + pairs = [ + tnvc for line in lines for tnvc in RE_ENUM.findall(line) + ] + props = [(n, t, v, c) for t, n, v, c in pairs] + commonprefix = os.path.commonprefix( + [prop[0] for prop in props] + ) + name = ( + commonprefix.rpartition("_")[0] + if len(blocks) > 1 + else name + ) + props = [ + (prop[0].replace(commonprefix, ""), *prop[1:]) + for prop in props + ] + out.append(cls(name, description, props, is_type)) + return out + pairs = [tnc for line in msg for tnc in RE_TNC.findall(line)] + props = [(n, t, c) for t, n, c in pairs] + return cls(name, description, props, is_type) + + +class MessagesPkg: + """Messages package.""" + + def __init__(self, messages): + self.messages = messages + + def __getitem__(self, key): + """Get message by key.""" + return self.messages[key] + + def __contains__(self, key): + """Check if message is in package.""" + return key in self.messages + + @property + def as_structs(self): + """Return messages as structs.""" + return {k: v.as_struct for k, v in self.messages.items()} + + @classmethod + def from_msg_folder(cls, path_to_pkg_root, get_types=False): + """Create messages package from message folder.""" + if get_types: + msg_files = list(Path(path_to_pkg_root).rglob("types/*.msg")) + else: + msg_files = [ + f + for f in Path(path_to_pkg_root).rglob("**/*.msg") + if "types" not in f.parts + ] + out = cls({}) + for msg in map( + lambda x: MessageDef.from_msg_file(x, get_types), msg_files + ): + if isinstance(msg, list): + for m in msg: + out.messages[m.name] = m + else: + out.messages[msg.name] = msg + return out diff --git a/rosidl2capella/synchronize.py b/rosidl2capella/synchronize.py new file mode 100644 index 0000000..086e0d6 --- /dev/null +++ b/rosidl2capella/synchronize.py @@ -0,0 +1,38 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Synchronize ROS message definitions with Capella data model.""" +from rosidl2capella.capella_wrapper import CapellaWrapper +from rosidl2capella.idl_model import IDLModel, IDLPackage + + +def calculate_overlap( + left: IDLModel, right: IDLModel +) -> dict[str, IDLPackage]: + """Calculate overlap between two IDL models.""" + overlap = {} + for pkg_name, left_package in left.packages.items(): + right_package = right.packages.get(pkg_name) + if right_package: + overlap[pkg_name] = IDLPackage( + left_package.classes.keys() & right_package.classes.keys(), + left_package.types.keys() & right_package.types.keys(), + left_package.basic_types & right_package.basic_types, + ) + return overlap + + +class MSGS2Capella: + """Synchronize ROS message definitions with Capella data model.""" + + def __init__( + self, path_to_msg_model: str, path_to_capella_model: str, layer: str + ) -> None: + self.capella_wrapper = CapellaWrapper(path_to_capella_model, layer) + self.msg_model = IDLModel.from_msg_model(path_to_msg_model) + self.capella_model = self.capella_wrapper.as_idlmodel + + def resolve_overlap(self): + """Resolve overlap between IDL models.""" + + def sync_models(self): + """Synchronize IDL models.""" From e10fac116f1d3dfcfdf5cd0a455ccdbb465c8284 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 31 Oct 2023 13:29:45 +0100 Subject: [PATCH 02/47] feat: Implement CLI --- docs/examples/advanced.ipynb | 98 +++++++++++++++++++++++-------- rosidl2capella/__main__.py | 89 +++++++++++++++++++++++++++- rosidl2capella/capella_wrapper.py | 18 +++--- rosidl2capella/synchronize.py | 18 ------ 4 files changed, 172 insertions(+), 51 deletions(-) diff --git a/docs/examples/advanced.ipynb b/docs/examples/advanced.ipynb index 7761e9f..b44ab8c 100644 --- a/docs/examples/advanced.ipynb +++ b/docs/examples/advanced.ipynb @@ -7,7 +7,8 @@ "outputs": [], "source": [ "from rosidl2capella.idl_model import IDLModel\n", - "from rosidl2capella.capella_wrapper import CapellaWrapper" + "from rosidl2capella.capella_wrapper import CapellaWrapper\n", + "from rosidl2capella import synchronize" ] }, { @@ -52,7 +53,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -61,7 +62,7 @@ "True" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -72,35 +73,55 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "overlap = synchronize.calculate_overlap(msg_model, capella_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "capella_wrapper.delete_from_capella_model(overlap)\n", + "capella_model = capella_wrapper.as_idlmodel" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" - ] + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" } ], + "source": [ + "msg_model.packages[\"root\"].classes.keys() == capella_model.packages[\"root\"].classes.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], "source": [ "capella_wrapper.create_packages(set(msg_model.packages.keys()))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -326,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -337,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -2263,6 +2284,37 @@ " class_name, prop, package_name\n", " )" ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'diagnostic_msgs': ,\n", + " 'std_msgs': ,\n", + " 'shape_msgs': ,\n", + " 'stereo_msgs': ,\n", + " 'nav_msgs': ,\n", + " 'geometry_msgs': ,\n", + " 'actionlib_msgs': ,\n", + " 'trajectory_msgs': ,\n", + " 'sensor_msgs': ,\n", + " 'root': ,\n", + " 'visualization_msgs': ,\n", + " 'common_msgs': }" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "capella_wrapper.as_idlmodel.packages" + ] } ], "metadata": { diff --git a/rosidl2capella/__main__.py b/rosidl2capella/__main__.py index a8b133f..289cc91 100644 --- a/rosidl2capella/__main__.py +++ b/rosidl2capella/__main__.py @@ -1,10 +1,12 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 """Main entry point into rosidl2capella.""" - import click import rosidl2capella +from rosidl2capella import synchronize +from rosidl2capella.capella_wrapper import CapellaWrapper +from rosidl2capella.idl_model import IDLModel @click.command() @@ -13,8 +15,91 @@ prog_name="rosidl2capella", message="%(prog)s %(version)s", ) -def main(): +@click.argument( + "path_to_msg_model", + type=click.Path( + exists=True, + file_okay=False, + readable=True, + resolve_path=True, + path_type=str, + ), +) +@click.argument( + "path_to_capella_model", + type=click.Path( + exists=True, + file_okay=False, + readable=True, + resolve_path=True, + path_type=str, + ), +) +@click.argument( + "layer", + type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=False), + required=True, +) +def main(path_to_msg_model, path_to_capella_model, layer): """Console script for rosidl2capella.""" + msg_model = IDLModel.from_msg_model(path_to_msg_model) + capella_wrapper = CapellaWrapper(path_to_capella_model, layer) + overlap = synchronize.calculate_overlap( + msg_model, capella_wrapper.as_idlmodel + ) + while True: + match click.prompt( + "There are overlaps between the models. Keep Capella Model (c), Accept IDL (i), Abort (a)?", + type=click.Choice(["c", "i", "a"], case_sensitive=False), + ): + case "c": + msg_model.delete_from_model(overlap) + break + case "i": + capella_wrapper.delete_from_capella_model(overlap) + break + case "a": + click.echo("Aborted!") + return + case _: + continue + + capella_wrapper.create_packages(set(msg_model.packages.keys())) + + for pkg_name, package in msg_model.packages.items(): + capella_wrapper.create_classes(package.classes, pkg_name) + capella_wrapper.create_types(package.types, pkg_name) + capella_wrapper.create_basic_types(package.basic_types, pkg_name) + + all_classes = {} + for pkg in msg_model.packages.values(): + all_classes |= pkg.classes + + for package_name, package in msg_model.packages.items(): + for class_name, (_, properties) in package.classes.items(): + for prop in properties: + _, prop_type, type_pkg, _, _, _ = prop + type_pkg = type_pkg or package_name + if prop_type in msg_model.packages[type_pkg].classes: + try: + capella_wrapper.create_composition( + class_name, prop, package_name + ) + except KeyError: + print(class_name, prop, package_name) + else: + capella_wrapper.create_attribute( + class_name, prop, package_name + ) + + if click.confirm( + "Changes cannot be made undone. Do you want to continue?", abort=True + ): + click.echo("Changes saved to Capella Model!") + capella_wrapper.save_changes() + else: + click.echo("Changes discarded!") + return if __name__ == "__main__": diff --git a/rosidl2capella/capella_wrapper.py b/rosidl2capella/capella_wrapper.py index 862f6c8..fee6a40 100644 --- a/rosidl2capella/capella_wrapper.py +++ b/rosidl2capella/capella_wrapper.py @@ -28,7 +28,10 @@ def __init__( def create_packages(self, packages: set[str]) -> None: """Create packages in Capella model.""" for package_name in packages: - self.data.packages.create("DataPkg", name=package_name) + try: + self.data.packages.by_name(package_name) + except KeyError: + self.data.packages.create("DataPkg", name=package_name) def create_classes( self, @@ -36,19 +39,19 @@ def create_classes( package_name: str, ): """Create classes in Capella model.""" + package = self.data.packages.by_name(package_name) for class_name, info in classes.items(): description, _ = info - self.data.packages.by_name(package_name).classes.create( - name=class_name, description=description - ) + package.classes.create(name=class_name, description=description) def create_types( self, types: dict[str, tuple[str, list]], package_name: str ): """Create types in Capella model.""" + package = self.data.packages.by_name(package_name) for type_name, info in types.items(): description, properties = info - type = self.data.packages.by_name(package_name).datatypes.create( + type = package.datatypes.create( "Enumeration", name=type_name, description=description ) for prop in properties: @@ -64,6 +67,7 @@ def create_types( def create_basic_types(self, basic_types: set[str], package_name: str): """Create basic types in Capella model.""" + package = self.data.packages.by_name(package_name) for basic_type in basic_types: if basic_type in ["string", "char"]: type = "StringType" @@ -71,9 +75,7 @@ def create_basic_types(self, basic_types: set[str], package_name: str): type = "BooleanType" else: type = "NumericType" - self.data.packages.by_name(package_name).datatypes.create( - type, name=basic_type - ) + package.datatypes.create(type, name=basic_type) def create_composition( self, diff --git a/rosidl2capella/synchronize.py b/rosidl2capella/synchronize.py index 086e0d6..bd72c65 100644 --- a/rosidl2capella/synchronize.py +++ b/rosidl2capella/synchronize.py @@ -1,7 +1,6 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 """Synchronize ROS message definitions with Capella data model.""" -from rosidl2capella.capella_wrapper import CapellaWrapper from rosidl2capella.idl_model import IDLModel, IDLPackage @@ -19,20 +18,3 @@ def calculate_overlap( left_package.basic_types & right_package.basic_types, ) return overlap - - -class MSGS2Capella: - """Synchronize ROS message definitions with Capella data model.""" - - def __init__( - self, path_to_msg_model: str, path_to_capella_model: str, layer: str - ) -> None: - self.capella_wrapper = CapellaWrapper(path_to_capella_model, layer) - self.msg_model = IDLModel.from_msg_model(path_to_msg_model) - self.capella_model = self.capella_wrapper.as_idlmodel - - def resolve_overlap(self): - """Resolve overlap between IDL models.""" - - def sync_models(self): - """Synchronize IDL models.""" From bbb16ea0f9db957d33cbabcba5e5e33fc74d869c Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 10 Nov 2023 09:22:43 +0100 Subject: [PATCH 03/47] fix: Create basic type if type not found --- .gitmodules | 15 +- .gitmodules.license | 2 - docs/examples/advanced.ipynb | 2341 --------- docs/examples/advanced.ipynb.license | 2 - docs/examples/data/model/ros_msgs.capella | 4579 ----------------- .../data/msgs/MultiArrayDimension.msg.license | 2 - .../data/msgs/MultiArrayLayout.msg.license | 2 - .../data/msgs/UInt64MultiArray.msg.license | 2 - docs/examples/model_from_capella.ipynb | 138 - .../examples/model_from_capella.ipynb.license | 2 - docs/examples/model_from_msgs.ipynb | 123 - docs/examples/model_from_msgs.ipynb.license | 2 - docs/examples/quickstart.ipynb | 2304 --------- docs/examples/quickstart.ipynb.license | 2 - rosidl2capella/__main__.py | 91 +- rosidl2capella/capella_wrapper.py | 186 - rosidl2capella/idl_model.py | 85 - rosidl2capella/modules/__init__.py | 44 + rosidl2capella/modules/parse_capella.py | 48 + rosidl2capella/modules/parse_message.py | 138 + rosidl2capella/modules/serialize_capella.py | 195 + rosidl2capella/msg2capella.py | 144 + rosidl2capella/rosidl_parser.py | 137 - rosidl2capella/synchronize.py | 20 - .../data/empty_model/.project | 0 .../data/empty_model/.project.license | 0 .../data/empty_model/ros_msgs.afm | 0 .../data/empty_model/ros_msgs.afm.license | 0 .../data/empty_model/ros_msgs.aird | 0 .../data/empty_model/ros_msgs.aird.license | 0 .../data/empty_model/ros_msgs.capella | 0 .../data/empty_model/ros_msgs.capella.license | 0 {docs/examples => tests}/data/model/.project | 0 .../data/model/.project.license | 0 .../data/model/ros_msgs.afm | 0 .../data/model/ros_msgs.afm.license | 0 .../data/model/ros_msgs.aird | 0 .../data/model/ros_msgs.aird.license | 0 tests/data/model/ros_msgs.capella | 288 ++ .../data/model/ros_msgs.capella.license | 0 .../data/msgs/MultiArrayLayout.msg | 3 + .../data/msgs/UInt64MultiArray.msg | 3 + .../msgs/sub_msgs}/MultiArrayDimension.msg | 3 + 43 files changed, 878 insertions(+), 10023 deletions(-) delete mode 100644 .gitmodules.license delete mode 100644 docs/examples/advanced.ipynb delete mode 100644 docs/examples/advanced.ipynb.license delete mode 100644 docs/examples/data/model/ros_msgs.capella delete mode 100644 docs/examples/data/msgs/MultiArrayDimension.msg.license delete mode 100644 docs/examples/data/msgs/MultiArrayLayout.msg.license delete mode 100644 docs/examples/data/msgs/UInt64MultiArray.msg.license delete mode 100644 docs/examples/model_from_capella.ipynb delete mode 100644 docs/examples/model_from_capella.ipynb.license delete mode 100644 docs/examples/model_from_msgs.ipynb delete mode 100644 docs/examples/model_from_msgs.ipynb.license delete mode 100644 docs/examples/quickstart.ipynb delete mode 100644 docs/examples/quickstart.ipynb.license delete mode 100644 rosidl2capella/capella_wrapper.py delete mode 100644 rosidl2capella/idl_model.py create mode 100644 rosidl2capella/modules/__init__.py create mode 100644 rosidl2capella/modules/parse_capella.py create mode 100644 rosidl2capella/modules/parse_message.py create mode 100644 rosidl2capella/modules/serialize_capella.py create mode 100644 rosidl2capella/msg2capella.py delete mode 100644 rosidl2capella/rosidl_parser.py delete mode 100644 rosidl2capella/synchronize.py rename {docs/examples => tests}/data/empty_model/.project (100%) rename {docs/examples => tests}/data/empty_model/.project.license (100%) rename {docs/examples => tests}/data/empty_model/ros_msgs.afm (100%) rename {docs/examples => tests}/data/empty_model/ros_msgs.afm.license (100%) rename {docs/examples => tests}/data/empty_model/ros_msgs.aird (100%) rename {docs/examples => tests}/data/empty_model/ros_msgs.aird.license (100%) rename {docs/examples => tests}/data/empty_model/ros_msgs.capella (100%) rename {docs/examples => tests}/data/empty_model/ros_msgs.capella.license (100%) rename {docs/examples => tests}/data/model/.project (100%) rename {docs/examples => tests}/data/model/.project.license (100%) rename {docs/examples => tests}/data/model/ros_msgs.afm (100%) rename {docs/examples => tests}/data/model/ros_msgs.afm.license (100%) rename {docs/examples => tests}/data/model/ros_msgs.aird (100%) rename {docs/examples => tests}/data/model/ros_msgs.aird.license (100%) create mode 100644 tests/data/model/ros_msgs.capella rename {docs/examples => tests}/data/model/ros_msgs.capella.license (100%) rename {docs/examples => tests}/data/msgs/MultiArrayLayout.msg (92%) rename {docs/examples => tests}/data/msgs/UInt64MultiArray.msg (72%) rename {docs/examples/data/msgs => tests/data/msgs/sub_msgs}/MultiArrayDimension.msg (64%) diff --git a/.gitmodules b/.gitmodules index 3d86f0a..be6d6e6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,9 @@ -[submodule "std_msgs"] - path = rosidl2capella/ros/std_msgs - url = https://github.com/ros/std_msgs.git -[submodule "common_msgs"] - path = rosidl2capella/ros/common_msgs - url = https://github.com/ros/common_msgs.git +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: CC0-1.0 + +[submodule "rosidl2capella/ros_interfaces/common_interfaces"] + path = rosidl2capella/ros_interfaces/common_interfaces + url = https://github.com/ros2/common_interfaces.git +[submodule "rosidl2capella/ros_interfaces/rcl_interfaces"] + path = rosidl2capella/ros_interfaces/rcl_interfaces + url = https://github.com/ros2/rcl_interfaces.git diff --git a/.gitmodules.license b/.gitmodules.license deleted file mode 100644 index 95e8b6e..0000000 --- a/.gitmodules.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/advanced.ipynb b/docs/examples/advanced.ipynb deleted file mode 100644 index b44ab8c..0000000 --- a/docs/examples/advanced.ipynb +++ /dev/null @@ -1,2341 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from rosidl2capella.idl_model import IDLModel\n", - "from rosidl2capella.capella_wrapper import CapellaWrapper\n", - "from rosidl2capella import synchronize" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "Property values are not available in this model\n" - ] - } - ], - "source": [ - "msg_model = IDLModel.from_msg_model(\"data/msgs\")\n", - "capella_wrapper = CapellaWrapper(\"data/model\", \"la\")\n", - "capella_model = capella_wrapper.as_idlmodel" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "msg_model.packages.keys() == capella_model.packages.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "msg_model.packages[\"root\"].classes.keys() == capella_model.packages[\"root\"].classes.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "overlap = synchronize.calculate_overlap(msg_model, capella_model)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "capella_wrapper.delete_from_capella_model(overlap)\n", - "capella_model = capella_wrapper.as_idlmodel" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "msg_model.packages[\"root\"].classes.keys() == capella_model.packages[\"root\"].classes.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "capella_wrapper.create_packages(set(msg_model.packages.keys()))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n" - ] - } - ], - "source": [ - "for pkg_name, package in msg_model.packages.items():\n", - " capella_wrapper.create_classes(package.classes, pkg_name)\n", - " capella_wrapper.create_types(package.types, pkg_name)\n", - " capella_wrapper.create_basic_types(package.basic_types, pkg_name)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "all_classes = {}\n", - "for pkg in msg_model.packages.values():\n", - " all_classes |= pkg.classes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" - ] - } - ], - "source": [ - "for package_name, package in msg_model.packages.items():\n", - " for class_name, (_, properties) in package.classes.items():\n", - " for prop in properties:\n", - " _, prop_type, type_pkg, _, _, _ = prop\n", - " type_pkg = type_pkg or package_name\n", - " if prop_type in msg_model.packages[type_pkg].classes:\n", - " try:\n", - " capella_wrapper.create_composition(\n", - " class_name, prop, package_name\n", - " )\n", - " except KeyError:\n", - " print(class_name, prop, package_name)\n", - " else:\n", - " capella_wrapper.create_attribute(\n", - " class_name, prop, package_name\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'diagnostic_msgs': ,\n", - " 'std_msgs': ,\n", - " 'shape_msgs': ,\n", - " 'stereo_msgs': ,\n", - " 'nav_msgs': ,\n", - " 'geometry_msgs': ,\n", - " 'actionlib_msgs': ,\n", - " 'trajectory_msgs': ,\n", - " 'sensor_msgs': ,\n", - " 'root': ,\n", - " 'visualization_msgs': ,\n", - " 'common_msgs': }" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "capella_wrapper.as_idlmodel.packages" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/advanced.ipynb.license b/docs/examples/advanced.ipynb.license deleted file mode 100644 index c3fb022..0000000 --- a/docs/examples/advanced.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/model/ros_msgs.capella b/docs/examples/data/model/ros_msgs.capella deleted file mode 100644 index 0b5c5fd..0000000 --- a/docs/examples/data/model/ros_msgs.capella +++ /dev/null @@ -1,4579 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/examples/data/msgs/MultiArrayDimension.msg.license b/docs/examples/data/msgs/MultiArrayDimension.msg.license deleted file mode 100644 index c3fb022..0000000 --- a/docs/examples/data/msgs/MultiArrayDimension.msg.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/msgs/MultiArrayLayout.msg.license b/docs/examples/data/msgs/MultiArrayLayout.msg.license deleted file mode 100644 index c3fb022..0000000 --- a/docs/examples/data/msgs/MultiArrayLayout.msg.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/data/msgs/UInt64MultiArray.msg.license b/docs/examples/data/msgs/UInt64MultiArray.msg.license deleted file mode 100644 index c3fb022..0000000 --- a/docs/examples/data/msgs/UInt64MultiArray.msg.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/model_from_capella.ipynb b/docs/examples/model_from_capella.ipynb deleted file mode 100644 index f9c557e..0000000 --- a/docs/examples/model_from_capella.ipynb +++ /dev/null @@ -1,138 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from rosidl2capella.capella_wrapper import CapellaWrapper" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Property values are not available in this model\n" - ] - } - ], - "source": [ - "idl_model = CapellaWrapper(\"data/model\", \"la\").as_idlmodel" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'diagnostic_msgs': ,\n", - " 'std_msgs': ,\n", - " 'shape_msgs': ,\n", - " 'stereo_msgs': ,\n", - " 'nav_msgs': ,\n", - " 'geometry_msgs': ,\n", - " 'actionlib_msgs': ,\n", - " 'trajectory_msgs': ,\n", - " 'sensor_msgs': ,\n", - " 'root': ,\n", - " 'visualization_msgs': ,\n", - " 'common_msgs': }" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "idl_model.packages" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "package = idl_model.packages.get(\"root\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['MultiArrayDimension', 'UInt64MultiArray', 'MultiArrayLayout'])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "package.classes.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'string', 'uint32', 'uint64'}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "package.basic_types" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/model_from_capella.ipynb.license b/docs/examples/model_from_capella.ipynb.license deleted file mode 100644 index c3fb022..0000000 --- a/docs/examples/model_from_capella.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/model_from_msgs.ipynb b/docs/examples/model_from_msgs.ipynb deleted file mode 100644 index e7205ff..0000000 --- a/docs/examples/model_from_msgs.ipynb +++ /dev/null @@ -1,123 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from rosidl2capella.idl_model import IDLModel" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "idl_model = IDLModel.from_msg_model(\"data/msgs\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'root': ,\n", - " 'sensor_msgs': ,\n", - " 'nav_msgs': ,\n", - " 'visualization_msgs': ,\n", - " 'trajectory_msgs': ,\n", - " 'geometry_msgs': ,\n", - " 'shape_msgs': ,\n", - " 'diagnostic_msgs': ,\n", - " 'common_msgs': ,\n", - " 'stereo_msgs': ,\n", - " 'actionlib_msgs': ,\n", - " 'std_msgs': }" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "idl_model.packages" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "package = idl_model.packages.get(\"root\")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['MultiArrayDimension', 'UInt64MultiArray', 'MultiArrayLayout'])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "package.classes.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'string', 'uint32', 'uint64'}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "package.basic_types" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/model_from_msgs.ipynb.license b/docs/examples/model_from_msgs.ipynb.license deleted file mode 100644 index c3fb022..0000000 --- a/docs/examples/model_from_msgs.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/docs/examples/quickstart.ipynb b/docs/examples/quickstart.ipynb deleted file mode 100644 index ec346f8..0000000 --- a/docs/examples/quickstart.ipynb +++ /dev/null @@ -1,2304 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from rosidl2capella.idl_model import IDLModel\n", - "from rosidl2capella.capella_wrapper import CapellaWrapper" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "msg_model = IDLModel.from_msg_model(\"data/msgs\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "Property values are not available in this model\n" - ] - } - ], - "source": [ - "capella_wrapper = CapellaWrapper(\"data/empty_model\", \"la\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "capella_wrapper.as_idlmodel.packages" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" - ] - } - ], - "source": [ - "capella_wrapper.create_packages(set(msg_model.packages.keys()))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n" - ] - } - ], - "source": [ - "for pkg_name, package in msg_model.packages.items():\n", - " capella_wrapper.create_classes(package.classes, pkg_name)\n", - " capella_wrapper.create_types(package.types, pkg_name)\n", - " capella_wrapper.create_basic_types(package.basic_types, pkg_name)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "all_classes = {}\n", - "for pkg in msg_model.packages.values():\n", - " all_classes |= pkg.classes" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" - ] - } - ], - "source": [ - "for package_name, package in msg_model.packages.items():\n", - " for class_name, (_, properties) in package.classes.items():\n", - " for prop in properties:\n", - " _, prop_type, type_pkg, _, _, _ = prop\n", - " type_pkg = type_pkg or package_name\n", - " if prop_type in msg_model.packages[type_pkg].classes:\n", - " capella_wrapper.create_composition(\n", - " class_name, prop, package_name\n", - " )\n", - " else:\n", - " capella_wrapper.create_attribute(\n", - " class_name, prop, package_name\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'diagnostic_msgs': ,\n", - " 'shape_msgs': ,\n", - " 'sensor_msgs': ,\n", - " 'geometry_msgs': ,\n", - " 'root': ,\n", - " 'actionlib_msgs': ,\n", - " 'std_msgs': ,\n", - " 'stereo_msgs': ,\n", - " 'nav_msgs': ,\n", - " 'visualization_msgs': ,\n", - " 'trajectory_msgs': ,\n", - " 'common_msgs': }" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "capella_wrapper.as_idlmodel.packages" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/quickstart.ipynb.license b/docs/examples/quickstart.ipynb.license deleted file mode 100644 index c3fb022..0000000 --- a/docs/examples/quickstart.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/rosidl2capella/__main__.py b/rosidl2capella/__main__.py index 289cc91..9202995 100644 --- a/rosidl2capella/__main__.py +++ b/rosidl2capella/__main__.py @@ -4,9 +4,7 @@ import click import rosidl2capella -from rosidl2capella import synchronize -from rosidl2capella.capella_wrapper import CapellaWrapper -from rosidl2capella.idl_model import IDLModel +from rosidl2capella.msg2capella import msg2capella @click.command() @@ -15,92 +13,9 @@ prog_name="rosidl2capella", message="%(prog)s %(version)s", ) -@click.argument( - "path_to_msg_model", - type=click.Path( - exists=True, - file_okay=False, - readable=True, - resolve_path=True, - path_type=str, - ), -) -@click.argument( - "path_to_capella_model", - type=click.Path( - exists=True, - file_okay=False, - readable=True, - resolve_path=True, - path_type=str, - ), -) -@click.argument( - "layer", - type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=False), - required=True, -) -def main(path_to_msg_model, path_to_capella_model, layer): +def main(): """Console script for rosidl2capella.""" - msg_model = IDLModel.from_msg_model(path_to_msg_model) - capella_wrapper = CapellaWrapper(path_to_capella_model, layer) - overlap = synchronize.calculate_overlap( - msg_model, capella_wrapper.as_idlmodel - ) - while True: - match click.prompt( - "There are overlaps between the models. Keep Capella Model (c), Accept IDL (i), Abort (a)?", - type=click.Choice(["c", "i", "a"], case_sensitive=False), - ): - case "c": - msg_model.delete_from_model(overlap) - break - case "i": - capella_wrapper.delete_from_capella_model(overlap) - break - case "a": - click.echo("Aborted!") - return - case _: - continue - - capella_wrapper.create_packages(set(msg_model.packages.keys())) - - for pkg_name, package in msg_model.packages.items(): - capella_wrapper.create_classes(package.classes, pkg_name) - capella_wrapper.create_types(package.types, pkg_name) - capella_wrapper.create_basic_types(package.basic_types, pkg_name) - - all_classes = {} - for pkg in msg_model.packages.values(): - all_classes |= pkg.classes - - for package_name, package in msg_model.packages.items(): - for class_name, (_, properties) in package.classes.items(): - for prop in properties: - _, prop_type, type_pkg, _, _, _ = prop - type_pkg = type_pkg or package_name - if prop_type in msg_model.packages[type_pkg].classes: - try: - capella_wrapper.create_composition( - class_name, prop, package_name - ) - except KeyError: - print(class_name, prop, package_name) - else: - capella_wrapper.create_attribute( - class_name, prop, package_name - ) - - if click.confirm( - "Changes cannot be made undone. Do you want to continue?", abort=True - ): - click.echo("Changes saved to Capella Model!") - capella_wrapper.save_changes() - else: - click.echo("Changes discarded!") - return if __name__ == "__main__": - main() + msg2capella() diff --git a/rosidl2capella/capella_wrapper.py b/rosidl2capella/capella_wrapper.py deleted file mode 100644 index fee6a40..0000000 --- a/rosidl2capella/capella_wrapper.py +++ /dev/null @@ -1,186 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Wrapper for Capella model.""" -import capellambse - -from rosidl2capella.idl_model import IDLModel, IDLPackage - - -class CapellaWrapper: - """Wrapper for Capella model.""" - - def __init__( - self, - path_to_capella_model: str, - layer: str, - ) -> None: - self.model = capellambse.MelodyModel(path_to_capella_model) - match layer: - case "oa": - self.data = self.model.oa.data_package - case "sa": - self.data = self.model.sa.data_package - case "la": - self.data = self.model.la.data_package - case "pa": - self.data = self.model.pa.data_package - - def create_packages(self, packages: set[str]) -> None: - """Create packages in Capella model.""" - for package_name in packages: - try: - self.data.packages.by_name(package_name) - except KeyError: - self.data.packages.create("DataPkg", name=package_name) - - def create_classes( - self, - classes: dict[str, tuple[str, list]], - package_name: str, - ): - """Create classes in Capella model.""" - package = self.data.packages.by_name(package_name) - for class_name, info in classes.items(): - description, _ = info - package.classes.create(name=class_name, description=description) - - def create_types( - self, types: dict[str, tuple[str, list]], package_name: str - ): - """Create types in Capella model.""" - package = self.data.packages.by_name(package_name) - for type_name, info in types.items(): - description, properties = info - type = package.datatypes.create( - "Enumeration", name=type_name, description=description - ) - for prop in properties: - prop_name, _, value, description = prop - property = type.owned_literals.create( - "EnumerationLiteral", - name=prop_name, - description=description, - ) - property.value = capellambse.new_object( - "LiteralNumericValue", value=float(value) - ) - - def create_basic_types(self, basic_types: set[str], package_name: str): - """Create basic types in Capella model.""" - package = self.data.packages.by_name(package_name) - for basic_type in basic_types: - if basic_type in ["string", "char"]: - type = "StringType" - elif basic_type == "bool": - type = "BooleanType" - else: - type = "NumericType" - package.datatypes.create(type, name=basic_type) - - def create_composition( - self, - class_name: str, - properties: tuple[str, str, str, str, str, str], - package_name: str, - ): - """Create composition in Capella model.""" - ( - prop_name, - prop_type, - type_pkg, - min_card, - max_card, - comment, - ) = properties - package = self.data.packages.by_name(package_name) - superclass = package.classes.by_name(class_name) - type_pkg = type_pkg or package_name - partclass = self.data.packages.by_name(type_pkg).classes.by_name( - prop_type - ) - composition = superclass.owned_properties.create( - name=prop_name, type=partclass, kind="COMPOSITION" - ) - association = package.owned_associations.create( - navigable_members=[composition], description=comment - ) - association.members.create( - "Property", - type=superclass, - kind="ASSOCIATION", - min_card=capellambse.new_object("LiteralNumericValue", value=1), - max_card=capellambse.new_object("LiteralNumericValue", value=1), - ) - composition.min_card = capellambse.new_object( - "LiteralNumericValue", value=float(min_card) - ) - composition.max_card = capellambse.new_object( - "LiteralNumericValue", value=float(max_card or "inf") - ) - - def create_attribute( - self, - class_name: str, - properties: tuple[str, str, str, str, str, str], - package_name: str, - ): - """Create attribute in Capella model.""" - ( - prop_name, - prop_type, - type_pkg, - min_card, - max_card, - comment, - ) = properties - package = self.data.packages.by_name(package_name) - superclass = package.classes.by_name(class_name) - type_pkg = type_pkg or package_name - property_type = self.data.packages.by_name(type_pkg).datatypes.by_name( - prop_type - ) - attribute = superclass.owned_properties.create( - name=prop_name, - type=property_type, - kind="COMPOSITION", - description=comment, - ) - attribute.min_card = capellambse.new_object( - "LiteralNumericValue", value=float(min_card) - ) - attribute.max_card = capellambse.new_object( - "LiteralNumericValue", value=float(max_card or "inf") - ) - - def save_changes(self): - """Save changes to Capella model.""" - self.model.save() - - def delete_from_capella_model( - self, to_delete: dict[str, IDLPackage] - ) -> None: - """Delete elements from Capella model.""" - for pkg_name, idlpackage in to_delete.items(): - package = self.data.packages.by_name(pkg_name) - for class_name in idlpackage.classes: - package.classes.remove(package.classes.by_name(class_name)) - for type_name in idlpackage.types.keys() | idlpackage.basic_types: - package.datatypes.remove(package.datatypes.by_name(type_name)) - - @property - def as_idlmodel(self) -> IDLModel: - """Return Capella model as IDL model.""" - packages = {} - for package in self.data.packages: - classes = {cls.name: None for cls in package.classes} - types = {} - basic_types = set() - for type in package.datatypes: - if type.xtype.rpartition(":")[2] == "Enumeration": - types[type.name] = None - else: - basic_types.add(type.name) - packages[package.name] = IDLPackage( - classes=classes, types=types, basic_types=basic_types - ) - return IDLModel(packages) diff --git a/rosidl2capella/idl_model.py b/rosidl2capella/idl_model.py deleted file mode 100644 index d43537d..0000000 --- a/rosidl2capella/idl_model.py +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""IDL model definitions.""" -import os -import typing as t - -import rosidl2capella.rosidl_parser as parser - -PATH = os.path.dirname(__file__) - - -class IDLPackage: - """IDL package definition.""" - - classes: dict[str, t.Any] - types: dict[str, t.Any] - basic_types: set[str] - - def __init__( - self, - classes: dict[str, t.Any] | set[str], - types: dict[str, t.Any] | set[str], - basic_types: set[str], - ) -> None: - self.classes = ( - classes - if isinstance(classes, dict) - else {k: None for k in classes} - ) - self.types = ( - types if isinstance(types, dict) else {k: None for k in types} - ) - self.basic_types = basic_types - - -class IDLModel: - """IDL model definition.""" - - packages: dict[str, IDLPackage] - - def __init__(self, packages: dict[str, IDLPackage]) -> None: - self.packages = packages - - @classmethod - def from_msg_model(cls, path_to_msg_model: str) -> "IDLModel": - """Create IDL model from message files.""" - packages = {} - packages["root"] = cls._parse_package(path_to_msg_model) - common_msgs_dir = os.path.join(PATH, "ros", "common_msgs") - for dir_name in os.listdir(common_msgs_dir): - if os.path.isdir(os.path.join(common_msgs_dir, dir_name)): - packages[dir_name] = cls._parse_package( - os.path.join(common_msgs_dir, dir_name) - ) - packages["std_msgs"] = cls._parse_package( - os.path.join(PATH, "ros", "std_msgs") - ) - return cls(packages) - - @staticmethod - def _parse_package(path_to_pkg_root: str) -> IDLPackage: - """Parse package from message files.""" - classes = parser.MessagesPkg.from_msg_folder( - path_to_pkg_root - ).as_structs - types = parser.MessagesPkg.from_msg_folder( - path_to_pkg_root, True - ).as_structs - basic_types = set() - all_type_defs = classes | types - for _, properties in all_type_defs.values(): - for prop in properties: - prop_type = prop[1] - if prop_type not in all_type_defs: - basic_types.add(prop_type) - return IDLPackage(classes, types, basic_types) - - def delete_from_model(self, to_delete: dict[str, IDLPackage]) -> None: - """Delete elements from IDL model.""" - for pkg_name, package in to_delete.items(): - for class_name in package.classes.keys(): - self.packages[pkg_name].classes.pop(class_name) - for type_name in package.types.keys(): - self.packages[pkg_name].types.pop(type_name) - self.packages[pkg_name].basic_types -= package.basic_types diff --git a/rosidl2capella/modules/__init__.py b/rosidl2capella/modules/__init__.py new file mode 100644 index 0000000..a11c286 --- /dev/null +++ b/rosidl2capella/modules/__init__.py @@ -0,0 +1,44 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""The capella ros-tools modules package.""" +from collections import namedtuple + +import capellambse + +ROS_INTERFACES = "ros_interfaces" +BASIC_TYPES = "basic_types" + + +EnumValue = namedtuple("EnumValue", ["name", "type", "value", "comment"]) +MsgProp = namedtuple( + "MsgProp", ["name", "type", "typedir", "min", "max", "comment"] +) + + +class BaseCapella: + """Base class for capella model.""" + + def __init__( + self, + path_to_capella_model: str, + layer: str, + ) -> None: + self.model = capellambse.MelodyModel(path_to_capella_model) + self.data = getattr(self.model, layer).data_package + + +class MessageDef: + """Message definition.""" + + def __init__(self, name: str, description: str, props: list): + self.name = name + self.description = description + self.props = props + + +class MessagesPkg: + """Messages package.""" + + def __init__(self, messages: dict, packages: dict): + self.messages = messages + self.packages = packages diff --git a/rosidl2capella/modules/parse_capella.py b/rosidl2capella/modules/parse_capella.py new file mode 100644 index 0000000..aab1ee4 --- /dev/null +++ b/rosidl2capella/modules/parse_capella.py @@ -0,0 +1,48 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Class definition for Capella model parser.""" +import typing as t + +from . import BaseCapella, EnumValue, MsgProp + + +class ParseCapella(BaseCapella): + """Parser for Capella model.""" + + def get_packages(self, package: t.Any) -> set[str]: + """Get packages in Capella model.""" + return {pkg.name for pkg in package.packages} + + def get_classes(self, package: t.Any) -> dict[str, t.Any]: + """Get classes in Capella model.""" + classes: dict = {} + for cls in package.classes: + props = [ + MsgProp( + prop.name, + prop.type.name, + "", + prop.min_card.value, + prop.max_card.value, + prop.description, + ) + for prop in cls.owned_properties + ] + classes[cls.name] = (cls.description, props) + return classes + + def get_types(self, package: t.Any) -> dict[str, t.Any]: + """Get types in Capella model.""" + types: dict = {} + for type in package.datatypes: + props = [ + EnumValue( + prop.name, + prop.type.name, + prop.value.value, + prop.description, + ) + for prop in type.owned_literals + ] + types[type.name] = (type.description, props) + return types diff --git a/rosidl2capella/modules/parse_message.py b/rosidl2capella/modules/parse_message.py new file mode 100644 index 0000000..c52edc1 --- /dev/null +++ b/rosidl2capella/modules/parse_message.py @@ -0,0 +1,138 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Parser for ROS messages.""" +import os +import re +from pathlib import Path + +from . import EnumValue, MessageDef, MessagesPkg, MsgProp + +RE_TNC = re.compile( + r"^([A-Za-z0-9\[\]\/_]+).*?([A-Za-z0-9_]+)(?:.*?# ([^\n]+))?" +) +RE_ENUM = re.compile( + r"^([A-Za-z0-9]+).*?([A-Za-z0-9_]+).*?= ([0-9]+)(?:.*?# ([^\n]+))?" +) +RE_COMMENT = re.compile(r"cf. ([a-zA-Z0-9_]+)(?:, ([a-zA-Z0-9_]+))?") + + +class ParseMessageDef(MessageDef): + """Parser for message files.""" + + @property + def as_struct(self) -> tuple: + """Return message definition as struct.""" + return (self.description, self.props) + + @classmethod + def from_msg_file(cls, file: Path) -> list: + """Create message definition from message file.""" + raw_msg = file.read_text() + lines = raw_msg.split("\n") + for i, line in enumerate(lines): + if not line.startswith("#"): + break + else: + i = 0 + description = "\n".join(l.lstrip("#").strip() for l in lines[:i]) + props = [] + for line in lines[i:]: + for prop_type_raw, prop_name, comment in RE_COMMENT.findall(line): + p = prop_type_raw.split("[", 1) + min_card = "0" if len(p) > 1 else "1" + max_card = p[1].replace("]", "") if len(p) > 1 else "1" + match = RE_COMMENT.search(comment) + filename, commonprefix = ( + match.groups() if match else (None, None) + ) + type_path = list(p[0].split("/", 1)) + if commonprefix: + prop_type = re.sub("_XXX$", "", commonprefix) + else: + prop_type = filename if filename else type_path[-1] + type_pkg = type_path[0] if len(type_path) > 1 else "" + props.append( + MsgProp( + prop_name, + prop_type, + type_pkg, + min_card, + max_card, + comment, + ) + ) + + return [cls(file.stem, description, props)] + + @classmethod + def from_type_file(cls, file: Path) -> list: + """Create message definition from type file.""" + raw_msg = file.read_text() + lines = raw_msg.split("\n") + for i, line in enumerate(lines): + if not line.startswith("#"): + break + else: + i = 0 + description = "\n".join(l.lstrip("#").strip() for l in lines[:i]) + blocks = "\n".join(lines[i:]).split("\n\n") + out = [] + for block in blocks: + lines = block.split("\n") + props = [ + (n, t, v, c) + for line in lines + for (t, n, v, c) in RE_ENUM.findall(line) + ] + commonprefix = os.path.commonprefix([prop[0] for prop in props]) + name = ( + commonprefix.rpartition("_")[0] + if len(blocks) > 1 + else file.stem + ) + props = [ + EnumValue(prop[0].replace(commonprefix, ""), *prop[1:]) + for prop in props + ] + out.append(cls(name, description, props)) + return out + + +class ParseMessagesPkg(MessagesPkg): + """Parse messages package.""" + + @property + def as_structs(self) -> tuple: + """Return package as structs.""" + messages = {k: v.as_struct for k, v in self.messages.items()} + packages = {k: v.as_structs for k, v in self.packages.items()} + return (messages, packages) + + @classmethod + def from_msg_folder(cls, path_to_pkg_root: Path): + """Create package package from message folder.""" + out = cls({}, {}) + func = ( + ParseMessageDef.from_type_file + if "types" in path_to_pkg_root.parts + else ParseMessageDef.from_msg_file + ) + for f in path_to_pkg_root.iterdir(): + if f.name.endswith(".msg"): + msg = func(f) + for m in msg: + out.messages[m.name] = m + elif f.is_dir(): + out.packages[f.name] = cls.from_msg_folder(f) + + return out + + @classmethod + def from_pkg_folders(cls, path_to_root: Path): + """Create package from package folder.""" + out = cls({}, {}) + for dir in path_to_root.rglob("**/msg/"): + out.packages[dir.parent.name] = ParseMessagesPkg.from_msg_folder( + dir + ) + return out diff --git a/rosidl2capella/modules/serialize_capella.py b/rosidl2capella/modules/serialize_capella.py new file mode 100644 index 0000000..e8619e3 --- /dev/null +++ b/rosidl2capella/modules/serialize_capella.py @@ -0,0 +1,195 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Class definition for Capella model serializer.""" +import typing as t + +import capellambse + +from . import BASIC_TYPES, ROS_INTERFACES, BaseCapella, MsgProp + + +class SerializeCapella(BaseCapella): + """Serializer for Capella model.""" + + def create_packages(self, packages: set[str], package: t.Any) -> None: + """Create packages in Capella model.""" + for package_name in packages: + try: + package.packages.by_name(package_name) + except KeyError: + package.packages.create("DataPkg", name=package_name) + + def create_classes( + self, + classes: dict[str, tuple[str, list]], + package: t.Any, + ) -> list: + """Create classes in Capella model.""" + overlap = [] + for class_name, info in classes.items(): + try: + overlap.append(package.classes.by_name(class_name)) + except KeyError: + description, _ = info + package.classes.create( + name=class_name, description=description + ) + return overlap + + def delete_classes(self, classes: list, package: t.Any) -> None: + """Delete classes in Capella model.""" + for cls in classes: + try: + package.classes.remove(cls) + except KeyError: + pass + + def create_types( + self, types: dict[str, tuple[str, list]], package: t.Any + ) -> list: + """Create types in Capella model.""" + overlap = [] + for type_name, info in types.items(): + try: + overlap.append(package.datatypes.by_name(type_name)) + except KeyError: + description, properties = info + type = package.datatypes.create( + "Enumeration", name=type_name, description=description + ) + for prop in properties: + property = type.owned_literals.create( + "EnumerationLiteral", + name=prop.name, + description=description, + ) + property.value = capellambse.new_object( + "LiteralNumericValue", value=float(prop.value) + ) + return overlap + + def delete_types(self, types: list, package: t.Any) -> None: + """Delete types in Capella model.""" + for type in types: + try: + package.datatypes.remove(type) + except KeyError: + pass + + def create_basic_types( + self, basic_types: set[str], package: t.Any + ) -> list: + """Create basic types in Capella model.""" + overlap = [] + for basic_type in basic_types: + try: + overlap.append(package.datatypes.by_name(basic_type)) + except KeyError: + if basic_type in ["string", "char"]: + type = "StringType" + elif basic_type == "bool": + type = "BooleanType" + else: + type = "NumericType" + package.datatypes.create(type, name=basic_type) + return overlap + + def create_composition( + self, + class_name: str, + prop: MsgProp, + package: t.Any, + ) -> bool: + """Create composition in Capella model.""" + superclass = package.classes.by_name(class_name) + try: + partclass = ( + ( + self.data.packages.by_name(ROS_INTERFACES) + .packages.by_name(prop.typedir) + .classes.by_name(prop.type) + ) + if prop.typedir + else self.model.search("Class", below=package).by_name( + prop.type + ) + ) + except KeyError: + return False + try: + p = superclass.owned_properties.by_name(prop.name) + superclass.owned_properties.remove(p) + except KeyError: + pass + composition = superclass.owned_properties.create( + name=prop.name, + type=partclass, + kind="COMPOSITION", + description=prop.comment, + ) + association = package.owned_associations.create( + navigable_members=[composition] + ) + association.members.create( + "Property", + type=superclass, + kind="ASSOCIATION", + min_card=capellambse.new_object("LiteralNumericValue", value=1), + max_card=capellambse.new_object("LiteralNumericValue", value=1), + ) + composition.min_card = capellambse.new_object( + "LiteralNumericValue", value=float(prop.min) + ) + composition.max_card = capellambse.new_object( + "LiteralNumericValue", value=float(prop.max or "inf") + ) + return True + + def _find_type(self, type_name: str, package: t.Any) -> t.Any: + """Find type in Capella model.""" + try: + return self.model.search("Enumeration", below=package).by_name( + type_name + ) + except KeyError: + pass + try: + return self.data.packages.by_name(BASIC_TYPES).datatypes.by_name( + type_name + ) + except KeyError: + return None + + def create_attribute( + self, + class_name: str, + prop: MsgProp, + package: t.Any, + ) -> bool: + """Create attribute in Capella model.""" + superclass = package.classes.by_name(class_name) + property_type = self._find_type(prop.type, package) + if not property_type: + return False + try: + p = superclass.owned_properties.by_name(prop.name) + superclass.owned_properties.remove(p) + except KeyError: + pass + attribute = superclass.owned_properties.create( + name=prop.name, + type=property_type, + kind="COMPOSITION", + description=prop.comment, + ) + attribute.min_card = capellambse.new_object( + "LiteralNumericValue", value=float(prop.min) + ) + attribute.max_card = capellambse.new_object( + "LiteralNumericValue", value=float(prop.max or "inf") + ) + return True + + def save_changes(self) -> None: + """Save changes to Capella model.""" + self.model.save() diff --git a/rosidl2capella/msg2capella.py b/rosidl2capella/msg2capella.py new file mode 100644 index 0000000..9bd4ec7 --- /dev/null +++ b/rosidl2capella/msg2capella.py @@ -0,0 +1,144 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""CLI for importing .msg to capella model.""" +import sys +from pathlib import Path + +import click + +import rosidl2capella +from rosidl2capella.modules import BASIC_TYPES, ROS_INTERFACES +from rosidl2capella.modules.parse_message import ParseMessagesPkg +from rosidl2capella.modules.serialize_capella import SerializeCapella + + +class Msg2Capella: + """Class for importing .msg to capella model.""" + + def __init__(self, path_to_capella_model, layer, overlap): + self.serializer = SerializeCapella(path_to_capella_model, layer) + self.overlap = overlap + + def add_objects(self, messages, packages, current_root): + """Add objects to capella model.""" + self.serializer.create_packages(set(packages.keys()), current_root) + + func = ( + (self.serializer.create_types, self.serializer.delete_types) + if current_root.name == "types" + else ( + self.serializer.create_classes, + self.serializer.delete_classes, + ) + ) + + overlap = func[0](messages, current_root) + + if overlap: + if self.overlap == "abort": + click.echo( + "Items already exist. Use --overlap=overwrite to overwrite." + ) + raise click.Abort() + if self.overlap == "overwrite": + func[1](overlap, current_root) + elif self.overlap == "ask": + for cls in overlap: + if click.confirm( + f"{cls.name} already exists. Do you want to overwrite?" + ): + func[1]([cls], current_root) + + for pkg_name, (new_messages, new_packages) in packages.items(): + new_root = self.serializer.data.packages.by_name(pkg_name) + self.add_objects(new_messages, new_packages, new_root) + + def add_relations(self, messages, packages, current_root): + """Add relations to capella model.""" + if current_root.name == "types": + return + for class_name, (_, props) in messages.items(): + for prop in props: + if not self.serializer.create_composition( + class_name, prop, current_root + ): + while not self.serializer.create_attribute( + class_name, prop, current_root + ): + self.serializer.create_basic_types( + {prop.type}, + self.serializer.data.packages.by_name(BASIC_TYPES), + ) + + for pkg_name, (new_messages, new_packages) in packages.items(): + new_root = self.serializer.data.packages.by_name(pkg_name) + self.add_relations(new_messages, new_packages, new_root) + + +@click.command() +@click.version_option( + version=rosidl2capella.__version__, + prog_name="rosidl2capella", + message="%(prog)s %(version)s", +) +@click.argument( + "path-to-msgs-root", + type=click.Path( + exists=True, + file_okay=False, + readable=True, + resolve_path=True, + path_type=Path, + ), + required=True, +) +@click.argument( + "path-to-capella-model", + type=click.Path( + exists=True, + file_okay=False, + readable=True, + resolve_path=True, + path_type=str, + ), + required=True, +) +@click.argument( + "layer", + type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=False), + required=True, +) +@click.option( + "-o", + "--overlap", + type=click.Choice( + ["keep", "overwrite", "ask", "abort"], case_sensitive=False + ), + default="ask" if sys.stdin.isatty() else "abort", +) +@click.option("--debug", is_flag=True) +def msg2capella( + path_to_msgs_root, path_to_capella_model, layer, overlap, debug +): + """Parse .msg files and import them to capella model.""" + converter = Msg2Capella(path_to_capella_model, layer, overlap) + + ros_interfaces = ParseMessagesPkg.from_pkg_folders( + Path(__file__).joinpath("ros_interfaces") + ).as_structs + + messages, packages = ParseMessagesPkg.from_msg_folder( + path_to_msgs_root + ).as_structs + packages |= {ROS_INTERFACES: ros_interfaces} | {BASIC_TYPES: ({}, {})} + + current_root = converter.serializer.data + + converter.add_objects(messages, packages, current_root) + + converter.add_relations(messages, packages, current_root) + + if debug: + click.echo(converter.serializer.data) + else: + converter.serializer.save_changes() diff --git a/rosidl2capella/rosidl_parser.py b/rosidl2capella/rosidl_parser.py deleted file mode 100644 index ba25d18..0000000 --- a/rosidl2capella/rosidl_parser.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Parser for ROS message files.""" -import os -import re -from pathlib import Path - -RE_TNC = re.compile( - r"^([A-Za-z0-9\[\]\/_]+).*?([A-Za-z0-9_]+)(?:.*?# ([^\n]+))?" -) -RE_NAME = re.compile(r"([a-zA-Z0-9]+)[.]msg") -RE_ENUM = re.compile( - r"^([A-Za-z0-9]+).*?([A-Za-z0-9_]+).*?= ([0-9]+)(?:.*?# ([^\n]+))?" -) -RE_COMMENT = re.compile(r"cf. ([a-zA-Z0-9_]+)(?:, ([a-zA-Z0-9_]+))?") - - -class MessageDef: - """Message definition.""" - - def __init__(self, name, description, props, is_type): - self.name = name - self.description = description - self.props = props - self.is_type = is_type - - @property - def as_struct(self): - """Return message definition as struct.""" - if self.is_type: - return (self.description, self.props) - out = [] - for prop, prop_type_raw, comment in self.props: - p = prop_type_raw.split("[", 1) - min_card = "0" if len(p) > 1 else "1" - max_card = p[1].replace("]", "") if len(p) > 1 else "1" - match = RE_COMMENT.search(comment) - enum, subenum = match.groups() if match else (None, None) - type_path = list(p[0].split("/", 1)) - prop_type = ( - re.sub("_XXX$", "", subenum) - if subenum - else enum - if enum - else type_path[-1] - ) - type_pkg = type_path[0] if len(type_path) > 1 else "" - out.append( - (prop, prop_type, type_pkg, min_card, max_card, comment) - ) - return (self.description, out) - - @classmethod - def from_msg_file(cls, filename, is_type): - """Create message definition from message file.""" - with open(filename) as fh: - raw_msg = fh.read() - - lines = raw_msg.split("\n") - msg = [] - comment = [] - for line in lines: - if line.startswith("#"): - comment.append(line) - else: - msg.extend(lines[lines.index(line) :]) - break - description = "\n".join(comment).replace("#", "").strip() - name = RE_NAME.findall(str(filename))[0] - if is_type: - blocks = "\n".join(msg).split("\n\n") - out = [] - for block in blocks: - lines = block.split("\n") - pairs = [ - tnvc for line in lines for tnvc in RE_ENUM.findall(line) - ] - props = [(n, t, v, c) for t, n, v, c in pairs] - commonprefix = os.path.commonprefix( - [prop[0] for prop in props] - ) - name = ( - commonprefix.rpartition("_")[0] - if len(blocks) > 1 - else name - ) - props = [ - (prop[0].replace(commonprefix, ""), *prop[1:]) - for prop in props - ] - out.append(cls(name, description, props, is_type)) - return out - pairs = [tnc for line in msg for tnc in RE_TNC.findall(line)] - props = [(n, t, c) for t, n, c in pairs] - return cls(name, description, props, is_type) - - -class MessagesPkg: - """Messages package.""" - - def __init__(self, messages): - self.messages = messages - - def __getitem__(self, key): - """Get message by key.""" - return self.messages[key] - - def __contains__(self, key): - """Check if message is in package.""" - return key in self.messages - - @property - def as_structs(self): - """Return messages as structs.""" - return {k: v.as_struct for k, v in self.messages.items()} - - @classmethod - def from_msg_folder(cls, path_to_pkg_root, get_types=False): - """Create messages package from message folder.""" - if get_types: - msg_files = list(Path(path_to_pkg_root).rglob("types/*.msg")) - else: - msg_files = [ - f - for f in Path(path_to_pkg_root).rglob("**/*.msg") - if "types" not in f.parts - ] - out = cls({}) - for msg in map( - lambda x: MessageDef.from_msg_file(x, get_types), msg_files - ): - if isinstance(msg, list): - for m in msg: - out.messages[m.name] = m - else: - out.messages[msg.name] = msg - return out diff --git a/rosidl2capella/synchronize.py b/rosidl2capella/synchronize.py deleted file mode 100644 index bd72c65..0000000 --- a/rosidl2capella/synchronize.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Synchronize ROS message definitions with Capella data model.""" -from rosidl2capella.idl_model import IDLModel, IDLPackage - - -def calculate_overlap( - left: IDLModel, right: IDLModel -) -> dict[str, IDLPackage]: - """Calculate overlap between two IDL models.""" - overlap = {} - for pkg_name, left_package in left.packages.items(): - right_package = right.packages.get(pkg_name) - if right_package: - overlap[pkg_name] = IDLPackage( - left_package.classes.keys() & right_package.classes.keys(), - left_package.types.keys() & right_package.types.keys(), - left_package.basic_types & right_package.basic_types, - ) - return overlap diff --git a/docs/examples/data/empty_model/.project b/tests/data/empty_model/.project similarity index 100% rename from docs/examples/data/empty_model/.project rename to tests/data/empty_model/.project diff --git a/docs/examples/data/empty_model/.project.license b/tests/data/empty_model/.project.license similarity index 100% rename from docs/examples/data/empty_model/.project.license rename to tests/data/empty_model/.project.license diff --git a/docs/examples/data/empty_model/ros_msgs.afm b/tests/data/empty_model/ros_msgs.afm similarity index 100% rename from docs/examples/data/empty_model/ros_msgs.afm rename to tests/data/empty_model/ros_msgs.afm diff --git a/docs/examples/data/empty_model/ros_msgs.afm.license b/tests/data/empty_model/ros_msgs.afm.license similarity index 100% rename from docs/examples/data/empty_model/ros_msgs.afm.license rename to tests/data/empty_model/ros_msgs.afm.license diff --git a/docs/examples/data/empty_model/ros_msgs.aird b/tests/data/empty_model/ros_msgs.aird similarity index 100% rename from docs/examples/data/empty_model/ros_msgs.aird rename to tests/data/empty_model/ros_msgs.aird diff --git a/docs/examples/data/empty_model/ros_msgs.aird.license b/tests/data/empty_model/ros_msgs.aird.license similarity index 100% rename from docs/examples/data/empty_model/ros_msgs.aird.license rename to tests/data/empty_model/ros_msgs.aird.license diff --git a/docs/examples/data/empty_model/ros_msgs.capella b/tests/data/empty_model/ros_msgs.capella similarity index 100% rename from docs/examples/data/empty_model/ros_msgs.capella rename to tests/data/empty_model/ros_msgs.capella diff --git a/docs/examples/data/empty_model/ros_msgs.capella.license b/tests/data/empty_model/ros_msgs.capella.license similarity index 100% rename from docs/examples/data/empty_model/ros_msgs.capella.license rename to tests/data/empty_model/ros_msgs.capella.license diff --git a/docs/examples/data/model/.project b/tests/data/model/.project similarity index 100% rename from docs/examples/data/model/.project rename to tests/data/model/.project diff --git a/docs/examples/data/model/.project.license b/tests/data/model/.project.license similarity index 100% rename from docs/examples/data/model/.project.license rename to tests/data/model/.project.license diff --git a/docs/examples/data/model/ros_msgs.afm b/tests/data/model/ros_msgs.afm similarity index 100% rename from docs/examples/data/model/ros_msgs.afm rename to tests/data/model/ros_msgs.afm diff --git a/docs/examples/data/model/ros_msgs.afm.license b/tests/data/model/ros_msgs.afm.license similarity index 100% rename from docs/examples/data/model/ros_msgs.afm.license rename to tests/data/model/ros_msgs.afm.license diff --git a/docs/examples/data/model/ros_msgs.aird b/tests/data/model/ros_msgs.aird similarity index 100% rename from docs/examples/data/model/ros_msgs.aird rename to tests/data/model/ros_msgs.aird diff --git a/docs/examples/data/model/ros_msgs.aird.license b/tests/data/model/ros_msgs.aird.license similarity index 100% rename from docs/examples/data/model/ros_msgs.aird.license rename to tests/data/model/ros_msgs.aird.license diff --git a/tests/data/model/ros_msgs.capella b/tests/data/model/ros_msgs.capella new file mode 100644 index 0000000..92d1389 --- /dev/null +++ b/tests/data/model/ros_msgs.capella @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/data/model/ros_msgs.capella.license b/tests/data/model/ros_msgs.capella.license similarity index 100% rename from docs/examples/data/model/ros_msgs.capella.license rename to tests/data/model/ros_msgs.capella.license diff --git a/docs/examples/data/msgs/MultiArrayLayout.msg b/tests/data/msgs/MultiArrayLayout.msg similarity index 92% rename from docs/examples/data/msgs/MultiArrayLayout.msg rename to tests/data/msgs/MultiArrayLayout.msg index 5ee45f3..03ef040 100644 --- a/docs/examples/data/msgs/MultiArrayLayout.msg +++ b/tests/data/msgs/MultiArrayLayout.msg @@ -1,3 +1,6 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 + # The multiarray declares a generic multi-dimensional array of a # particular data type. Dimensions are ordered from outer most # to inner most. diff --git a/docs/examples/data/msgs/UInt64MultiArray.msg b/tests/data/msgs/UInt64MultiArray.msg similarity index 72% rename from docs/examples/data/msgs/UInt64MultiArray.msg rename to tests/data/msgs/UInt64MultiArray.msg index bf32429..195d64c 100644 --- a/docs/examples/data/msgs/UInt64MultiArray.msg +++ b/tests/data/msgs/UInt64MultiArray.msg @@ -1,3 +1,6 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 + # Please look at the MultiArrayLayout message definition for # documentation on all multiarrays. diff --git a/docs/examples/data/msgs/MultiArrayDimension.msg b/tests/data/msgs/sub_msgs/MultiArrayDimension.msg similarity index 64% rename from docs/examples/data/msgs/MultiArrayDimension.msg rename to tests/data/msgs/sub_msgs/MultiArrayDimension.msg index 018fb0c..0beece4 100644 --- a/docs/examples/data/msgs/MultiArrayDimension.msg +++ b/tests/data/msgs/sub_msgs/MultiArrayDimension.msg @@ -1,3 +1,6 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 + string label # label of given dimension uint32 size # size of given dimension (in type units) uint32 stride # stride of given dimension From 03d9527786d47b06acec95bea42e2572f2bab83e Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 10 Nov 2023 14:09:04 +0100 Subject: [PATCH 04/47] fix: Implement overwrite overlap --- rosidl2capella/modules/parse_message.py | 2 +- rosidl2capella/msg2capella.py | 26 +++--- tests/data/model/ros_msgs.capella | 104 ++++++++++++++++++++++-- tests/data/msgs/MultiArrayLayout.msg | 2 +- tests/data/msgs/types/ObjectTypes.msg | 14 ++++ 5 files changed, 126 insertions(+), 22 deletions(-) create mode 100644 tests/data/msgs/types/ObjectTypes.msg diff --git a/rosidl2capella/modules/parse_message.py b/rosidl2capella/modules/parse_message.py index c52edc1..5de0778 100644 --- a/rosidl2capella/modules/parse_message.py +++ b/rosidl2capella/modules/parse_message.py @@ -37,7 +37,7 @@ def from_msg_file(cls, file: Path) -> list: description = "\n".join(l.lstrip("#").strip() for l in lines[:i]) props = [] for line in lines[i:]: - for prop_type_raw, prop_name, comment in RE_COMMENT.findall(line): + for prop_type_raw, prop_name, comment in RE_TNC.findall(line): p = prop_type_raw.split("[", 1) min_card = "0" if len(p) > 1 else "1" max_card = p[1].replace("]", "") if len(p) > 1 else "1" diff --git a/rosidl2capella/msg2capella.py b/rosidl2capella/msg2capella.py index 9bd4ec7..f1932d2 100644 --- a/rosidl2capella/msg2capella.py +++ b/rosidl2capella/msg2capella.py @@ -34,20 +34,20 @@ def add_objects(self, messages, packages, current_root): overlap = func[0](messages, current_root) - if overlap: - if self.overlap == "abort": - click.echo( - "Items already exist. Use --overlap=overwrite to overwrite." + if overlap and self.overlap == "abort": + click.echo( + "Items already exist. Use --overlap=overwrite to overwrite." + ) + raise click.Abort() + for cls in overlap: + if self.overlap == "overwrite" or ( + self.overlap == "ask" + and click.confirm( + f"{cls.name} already exists. Do you want to overwrite?" ) - raise click.Abort() - if self.overlap == "overwrite": - func[1](overlap, current_root) - elif self.overlap == "ask": - for cls in overlap: - if click.confirm( - f"{cls.name} already exists. Do you want to overwrite?" - ): - func[1]([cls], current_root) + ): + func[1]([cls], current_root) + func[0]({cls.name: messages[cls.name]}, current_root) for pkg_name, (new_messages, new_packages) in packages.items(): new_root = self.serializer.data.packages.by_name(pkg_name) diff --git a/tests/data/model/ros_msgs.capella b/tests/data/model/ros_msgs.capella index 92d1389..2967327 100644 --- a/tests/data/model/ros_msgs.capella +++ b/tests/data/model/ros_msgs.capella @@ -202,21 +202,111 @@ id="bd10fade-2ac9-41bf-a42b-05cbb751d274" name="Interfaces"/> - + + + + + + + + + + + + - + + + + + + + + + + + xsi:type="org.polarsys.capella.core.data.information:Class"> + + + + + + + + + - + xsi:type="org.polarsys.capella.core.data.information:Class"> + + + + + + + + + + + + + + xsi:type="org.polarsys.capella.core.data.information:DataPkg"> + + + + + + + + + + + + + + + + + + diff --git a/tests/data/msgs/MultiArrayLayout.msg b/tests/data/msgs/MultiArrayLayout.msg index 03ef040..bcf7172 100644 --- a/tests/data/msgs/MultiArrayLayout.msg +++ b/tests/data/msgs/MultiArrayLayout.msg @@ -6,7 +6,7 @@ # to inner most. MultiArrayDimension[] dim # Array of dimension properties -uint32 data_offset # padding elements at front of data +uint8 data_offset # cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX # Accessors should ALWAYS be written in terms of dimension stride # and specified outer-most dimension first. diff --git a/tests/data/msgs/types/ObjectTypes.msg b/tests/data/msgs/types/ObjectTypes.msg new file mode 100644 index 0000000..2967af8 --- /dev/null +++ b/tests/data/msgs/types/ObjectTypes.msg @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright DB Netz AG +# SPDX-License-Identifier: Apache-2.0 + +# ObjectTypes +# +# Created: 2020-04-15 +# Modified: 2020-04-22 +# Version: 2.0 +# +# Description: List of object motion types, classes, types, and subtypes. + +uint8 OBJECT_MOTION_TYPE_UNDEFINED = 0 +uint8 OBJECT_MOTION_TYPE_STATIC = 1 +uint8 OBJECT_MOTION_TYPE_DYNAMIC = 2 From 67bd277805ce51e879009f0cb661316c41219d81 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Mon, 13 Nov 2023 15:19:07 +0100 Subject: [PATCH 05/47] feat: Capella model to .msg files --- rosidl2capella/__main__.py | 7 +- rosidl2capella/capella2msg.py | 113 +++++++++++++++ rosidl2capella/modules/parse_capella.py | 12 +- rosidl2capella/modules/parse_message.py | 10 +- rosidl2capella/modules/serialize_capella.py | 24 ++-- rosidl2capella/modules/serialize_message.py | 51 +++++++ rosidl2capella/msg2capella.py | 43 +++--- tests/data/model/ros_msgs.capella | 147 +++++++++++--------- 8 files changed, 296 insertions(+), 111 deletions(-) create mode 100644 rosidl2capella/capella2msg.py create mode 100644 rosidl2capella/modules/serialize_message.py diff --git a/rosidl2capella/__main__.py b/rosidl2capella/__main__.py index 9202995..20331d1 100644 --- a/rosidl2capella/__main__.py +++ b/rosidl2capella/__main__.py @@ -4,7 +4,9 @@ import click import rosidl2capella -from rosidl2capella.msg2capella import msg2capella +from rosidl2capella.capella2msg import capella2msg + +# from rosidl2capella.msg2capella import msg2capella @click.command() @@ -18,4 +20,5 @@ def main(): if __name__ == "__main__": - msg2capella() + # msg2capella() + capella2msg() diff --git a/rosidl2capella/capella2msg.py b/rosidl2capella/capella2msg.py new file mode 100644 index 0000000..57b0547 --- /dev/null +++ b/rosidl2capella/capella2msg.py @@ -0,0 +1,113 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""CLI for importing .msg to capella model.""" +import sys +from pathlib import Path + +import click + +import rosidl2capella +from rosidl2capella.modules import BASIC_TYPES, ROS_INTERFACES +from rosidl2capella.modules.parse_capella import ParseCapella +from rosidl2capella.modules.serialize_message import ( + SerializeMessageDef, + SerializeMessagesPkg, +) + + +class Capella2Msg: + """Class for converting capella model to .msg files.""" + + def __init__(self, path_to_capella_model, layer, overlap) -> None: + self.parser = ParseCapella(path_to_capella_model, layer) + self.overlap = overlap + + def add_package(self, current_root): + """Add package to message package.""" + out = SerializeMessagesPkg({}, {}) + + messages = self.parser.get_classes(current_root) + types = self.parser.get_types(current_root) + + out.messages = { + msg_name: SerializeMessageDef(msg_name, desc, props) + for msg_name, (desc, props) in (messages | types).items() + } + out.packages = { + pkg_name: self.add_package(current_root.packages.by_name(pkg_name)) + for pkg_name in self.parser.get_packages(current_root) + } + return out + + +@click.command() +@click.version_option( + version=rosidl2capella.__version__, + prog_name="rosidl2capella", + message="%(prog)s %(version)s", +) +@click.argument( + "path-to-msgs-root", + type=click.Path( + file_okay=False, + readable=True, + resolve_path=True, + path_type=Path, + ), + required=True, +) +@click.argument( + "path-to-capella-model", + type=click.Path( + exists=True, + readable=True, + resolve_path=True, + path_type=str, + ), + required=True, +) +@click.argument( + "layer", + type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=False), + required=True, +) +@click.option( + "-o", + "--overlap", + type=click.Choice( + ["keep", "overwrite", "ask", "abort"], case_sensitive=False + ), + default="ask" if sys.stdin.isatty() else "abort", +) +@click.option("--debug", is_flag=True) +def capella2msg( + path_to_msgs_root, path_to_capella_model, layer, overlap, debug +): + """Convert capella model to .msg files.""" + converter = Capella2Msg(path_to_capella_model, layer, overlap) + current_root = converter.parser.data + + messages = converter.parser.get_classes(current_root) + types = converter.parser.get_types(current_root) + + packages = converter.parser.get_packages(current_root) + packages.discard(BASIC_TYPES) + packages.discard(ROS_INTERFACES) + + root = SerializeMessagesPkg({}, {}) + root.messages = { + msg_name: SerializeMessageDef(msg_name, desc, props) + for msg_name, (desc, props) in (messages | types).items() + } + + root.packages = { + pkg_name: converter.add_package( + current_root.packages.by_name(pkg_name) + ) + for pkg_name in packages + } + + if debug: + click.echo(root) + else: + root.to_msg_folder(path_to_msgs_root) diff --git a/rosidl2capella/modules/parse_capella.py b/rosidl2capella/modules/parse_capella.py index aab1ee4..54351c8 100644 --- a/rosidl2capella/modules/parse_capella.py +++ b/rosidl2capella/modules/parse_capella.py @@ -3,7 +3,7 @@ """Class definition for Capella model parser.""" import typing as t -from . import BaseCapella, EnumValue, MsgProp +from . import ROS_INTERFACES, BaseCapella, EnumValue, MsgProp class ParseCapella(BaseCapella): @@ -20,8 +20,12 @@ def get_classes(self, package: t.Any) -> dict[str, t.Any]: props = [ MsgProp( prop.name, - prop.type.name, - "", + prop.type.name + if prop.type.__class__.__name__ != "Enumeration" + else "uint8", + prop.type.parent.name + if prop.type.parent.parent.name == ROS_INTERFACES + else "", prop.min_card.value, prop.max_card.value, prop.description, @@ -38,7 +42,7 @@ def get_types(self, package: t.Any) -> dict[str, t.Any]: props = [ EnumValue( prop.name, - prop.type.name, + prop.value.type.name if prop.value.type else "uint8", prop.value.value, prop.description, ) diff --git a/rosidl2capella/modules/parse_message.py b/rosidl2capella/modules/parse_message.py index 5de0778..d4c6b26 100644 --- a/rosidl2capella/modules/parse_message.py +++ b/rosidl2capella/modules/parse_message.py @@ -7,13 +7,9 @@ from . import EnumValue, MessageDef, MessagesPkg, MsgProp -RE_TNC = re.compile( - r"^([A-Za-z0-9\[\]\/_]+).*?([A-Za-z0-9_]+)(?:.*?# ([^\n]+))?" -) -RE_ENUM = re.compile( - r"^([A-Za-z0-9]+).*?([A-Za-z0-9_]+).*?= ([0-9]+)(?:.*?# ([^\n]+))?" -) -RE_COMMENT = re.compile(r"cf. ([a-zA-Z0-9_]+)(?:, ([a-zA-Z0-9_]+))?") +RE_TNC = re.compile(r"^([A-Za-z0-9\[\]\/_]+)\s+(\w+)(?:\s+#\s*(.+))?$") +RE_ENUM = re.compile(r"^(\w+)\s+(\w+)\s*=\s*(\d+)\s*(?:#\s*(.+))?$") +RE_COMMENT = re.compile(r"cf.\s+(\w+)(?:,\s+(\w+))?") class ParseMessageDef(MessageDef): diff --git a/rosidl2capella/modules/serialize_capella.py b/rosidl2capella/modules/serialize_capella.py index e8619e3..c6d430f 100644 --- a/rosidl2capella/modules/serialize_capella.py +++ b/rosidl2capella/modules/serialize_capella.py @@ -11,6 +11,11 @@ class SerializeCapella(BaseCapella): """Serializer for Capella model.""" + def __init__(self, path_to_capella_model: str, layer: str) -> None: + super().__init__(path_to_capella_model, layer) + self.create_packages({BASIC_TYPES}, self.data) + self.basic_types = self.data.packages.by_name(BASIC_TYPES) + def create_packages(self, packages: set[str], package: t.Any) -> None: """Create packages in Capella model.""" for package_name in packages: @@ -61,10 +66,13 @@ def create_types( property = type.owned_literals.create( "EnumerationLiteral", name=prop.name, - description=description, + description=prop.comment, ) + self.create_basic_types({prop.type}) property.value = capellambse.new_object( - "LiteralNumericValue", value=float(prop.value) + "LiteralNumericValue", + value=float(prop.value), + type=self.basic_types.datatypes.by_name(prop.type), ) return overlap @@ -76,14 +84,12 @@ def delete_types(self, types: list, package: t.Any) -> None: except KeyError: pass - def create_basic_types( - self, basic_types: set[str], package: t.Any - ) -> list: + def create_basic_types(self, basic_types: set[str]) -> list: """Create basic types in Capella model.""" overlap = [] for basic_type in basic_types: try: - overlap.append(package.datatypes.by_name(basic_type)) + overlap.append(self.basic_types.datatypes.by_name(basic_type)) except KeyError: if basic_type in ["string", "char"]: type = "StringType" @@ -91,7 +97,7 @@ def create_basic_types( type = "BooleanType" else: type = "NumericType" - package.datatypes.create(type, name=basic_type) + self.basic_types.datatypes.create(type, name=basic_type) return overlap def create_composition( @@ -154,9 +160,7 @@ def _find_type(self, type_name: str, package: t.Any) -> t.Any: except KeyError: pass try: - return self.data.packages.by_name(BASIC_TYPES).datatypes.by_name( - type_name - ) + return self.basic_types.datatypes.by_name(type_name) except KeyError: return None diff --git a/rosidl2capella/modules/serialize_message.py b/rosidl2capella/modules/serialize_message.py new file mode 100644 index 0000000..177106e --- /dev/null +++ b/rosidl2capella/modules/serialize_message.py @@ -0,0 +1,51 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Serializer for ROS messages.""" + +from pathlib import Path + +from . import MessageDef, MessagesPkg + + +class SerializeMessageDef(MessageDef): + """Serializer for message files.""" + + def to_msg_file(self, file: Path) -> None: + """Write message definition to message file.""" + description = "# " + self.description.replace("\n", "\n# ") + "\n" + props = "\n".join( + f"{p.typedir+'/' if p.typedir else ''}{p.type}" + f"{'[]' if p.min != p.max else ''} {p.name}\t" + f"{'# ' if p.comment else ''}{p.comment}" + for p in self.props + ) + file.write_text(description + "\n" + props) + + def to_type_file(self, file: Path) -> None: + """Write message definition to message file.""" + description = "# " + self.description.replace("\n", "\n# ") + "\n" + props = "\n".join( + f"{p.type} {file.stem + '_' + p.name}\t= {p.value}\t" + f"{'# ' if p.comment else ''}{p.comment}" + for p in self.props + ) + file.write_text(description + "\n" + props) + + +class SerializeMessagesPkg(MessagesPkg): + """Serializer for message packages.""" + + def to_msg_folder(self, path_to_pkg_root: Path) -> None: + """Write message package to message package.""" + path_to_pkg_root.mkdir(parents=True, exist_ok=True) + for msg_name, msg in self.messages.items(): + msg_file = path_to_pkg_root.joinpath(msg_name + ".msg") + if path_to_pkg_root.name == "types": + msg.to_type_file(msg_file) + else: + msg.to_msg_file(msg_file) + + for pkg_name, pkg in self.packages.items(): + new_path = path_to_pkg_root.joinpath(pkg_name) + new_path.mkdir(parents=True, exist_ok=True) + pkg.to_msg_folder(new_path) diff --git a/rosidl2capella/msg2capella.py b/rosidl2capella/msg2capella.py index f1932d2..a0937f0 100644 --- a/rosidl2capella/msg2capella.py +++ b/rosidl2capella/msg2capella.py @@ -7,7 +7,7 @@ import click import rosidl2capella -from rosidl2capella.modules import BASIC_TYPES, ROS_INTERFACES +from rosidl2capella.modules import ROS_INTERFACES from rosidl2capella.modules.parse_message import ParseMessagesPkg from rosidl2capella.modules.serialize_capella import SerializeCapella @@ -32,7 +32,10 @@ def add_objects(self, messages, packages, current_root): ) ) - overlap = func[0](messages, current_root) + overlap = func[0]( + {msg_name: msg.as_struct for msg_name, msg in messages.items()}, + current_root, + ) if overlap and self.overlap == "abort": click.echo( @@ -47,32 +50,29 @@ def add_objects(self, messages, packages, current_root): ) ): func[1]([cls], current_root) - func[0]({cls.name: messages[cls.name]}, current_root) + func[0]({cls.name: messages[cls.name].as_struct}, current_root) - for pkg_name, (new_messages, new_packages) in packages.items(): - new_root = self.serializer.data.packages.by_name(pkg_name) - self.add_objects(new_messages, new_packages, new_root) + for pkg_name, pkg in packages.items(): + new_root = current_root.packages.by_name(pkg_name) + self.add_objects(pkg.messages, pkg.packages, new_root) def add_relations(self, messages, packages, current_root): """Add relations to capella model.""" if current_root.name == "types": return - for class_name, (_, props) in messages.items(): - for prop in props: + for class_name, cls in messages.items(): + for prop in cls.props: if not self.serializer.create_composition( class_name, prop, current_root ): while not self.serializer.create_attribute( class_name, prop, current_root ): - self.serializer.create_basic_types( - {prop.type}, - self.serializer.data.packages.by_name(BASIC_TYPES), - ) + self.serializer.create_basic_types({prop.type}) - for pkg_name, (new_messages, new_packages) in packages.items(): - new_root = self.serializer.data.packages.by_name(pkg_name) - self.add_relations(new_messages, new_packages, new_root) + for pkg_name, pkg in packages.items(): + new_root = current_root.packages.by_name(pkg_name) + self.add_relations(pkg.messages, pkg.packages, new_root) @click.command() @@ -96,7 +96,6 @@ def add_relations(self, messages, packages, current_root): "path-to-capella-model", type=click.Path( exists=True, - file_okay=False, readable=True, resolve_path=True, path_type=str, @@ -125,18 +124,16 @@ def msg2capella( ros_interfaces = ParseMessagesPkg.from_pkg_folders( Path(__file__).joinpath("ros_interfaces") - ).as_structs + ) - messages, packages = ParseMessagesPkg.from_msg_folder( - path_to_msgs_root - ).as_structs - packages |= {ROS_INTERFACES: ros_interfaces} | {BASIC_TYPES: ({}, {})} + msg = ParseMessagesPkg.from_msg_folder(path_to_msgs_root) + msg.packages |= {ROS_INTERFACES: ros_interfaces} current_root = converter.serializer.data - converter.add_objects(messages, packages, current_root) + converter.add_objects(msg.messages, msg.packages, current_root) - converter.add_relations(messages, packages, current_root) + converter.add_relations(msg.messages, msg.packages, current_root) if debug: click.echo(converter.serializer.data) diff --git a/tests/data/model/ros_msgs.capella b/tests/data/model/ros_msgs.capella index 2967327..db4693b 100644 --- a/tests/data/model/ros_msgs.capella +++ b/tests/data/model/ros_msgs.capella @@ -202,111 +202,128 @@ id="bd10fade-2ac9-41bf-a42b-05cbb751d274" name="Interfaces"/> - - + + + + + + + + + + + + - - + + - - - - + + - - - - + + - - - + + - - - - + + - - - + + - - - - - - - - - - - - - - - - - - - + - - - - + - - - + - - + - - + + + + + + + + + + + + + + + + + + From 896bac71497729e60487f52ab00b6a086ba963dc Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 15 Nov 2023 10:12:20 +0100 Subject: [PATCH 06/47] refactor: Rename to capella-ros-tools --- .github/workflows/build-test-publish.yml | 3 +- .github/workflows/lint.yml | 2 +- .gitmodules | 8 +- .pre-commit-config.yaml | 194 +++++++++--------- CONTRIBUTING.md | 169 ++++++++------- README.md | 16 +- .../__init__.py | 4 +- capella_ros_tools/__main__.py | 24 +++ .../capella2msg.py | 12 +- .../modules/__init__.py | 23 ++- .../modules/parse_capella.py | 31 +-- .../modules/parse_message.py | 4 +- .../modules/serialize_capella.py | 0 .../modules/serialize_message.py | 0 .../msg2capella.py | 12 +- docs/source/conf.py | 8 +- docs/source/index.rst | 4 +- pyproject.toml | 16 +- rosidl2capella/__main__.py | 24 --- tests/test_rosidl2capella.py | 2 +- 20 files changed, 288 insertions(+), 268 deletions(-) rename {rosidl2capella => capella_ros_tools}/__init__.py (70%) create mode 100644 capella_ros_tools/__main__.py rename {rosidl2capella => capella_ros_tools}/capella2msg.py (90%) rename {rosidl2capella => capella_ros_tools}/modules/__init__.py (76%) rename {rosidl2capella => capella_ros_tools}/modules/parse_capella.py (69%) rename {rosidl2capella => capella_ros_tools}/modules/parse_message.py (97%) rename {rosidl2capella => capella_ros_tools}/modules/serialize_capella.py (100%) rename {rosidl2capella => capella_ros_tools}/modules/serialize_message.py (100%) rename {rosidl2capella => capella_ros_tools}/msg2capella.py (93%) delete mode 100644 rosidl2capella/__main__.py diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index 7e7b3af..25618e2 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -19,6 +19,7 @@ jobs: os: [ubuntu-latest] python_version: - "3.10" + - "3.11" include: - os: windows-latest python_version: "3.10" @@ -43,7 +44,7 @@ jobs: python -m pip install '.[test]' - name: Run unit tests run: |- - python -m pytest --cov-report=term --cov=rosidl2capella --rootdir=. + python -m pytest --cov-report=term --cov=capella_ros_tools --rootdir=. publish: name: Publish artifacts diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3a3b97d..f4ef5e6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -39,4 +39,4 @@ jobs: python -m pip install pylint - name: Run pylint run: |- - pylint -dfixme rosidl2capella || exit $(($? & ~24)) + pylint -dfixme capella_ros_tools || exit $(($? & ~24)) diff --git a/.gitmodules b/.gitmodules index be6d6e6..80c8b4c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: CC0-1.0 -[submodule "rosidl2capella/ros_interfaces/common_interfaces"] - path = rosidl2capella/ros_interfaces/common_interfaces +[submodule "capella_ros_tools/ros_interfaces/common_interfaces"] + path = capella_ros_tools/ros_interfaces/common_interfaces url = https://github.com/ros2/common_interfaces.git -[submodule "rosidl2capella/ros_interfaces/rcl_interfaces"] - path = rosidl2capella/ros_interfaces/rcl_interfaces +[submodule "capella_ros_tools/ros_interfaces/rcl_interfaces"] + path = capella_ros_tools/ros_interfaces/rcl_interfaces url = https://github.com/ros2/rcl_interfaces.git diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index caf8bff..7315f4a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,100 +4,100 @@ default_install_hook_types: [commit-msg, pre-commit] default_stages: [commit, merge-commit] repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 - hooks: - - id: check-added-large-files - - id: check-ast - - id: check-builtin-literals - - id: check-case-conflict - - id: check-executables-have-shebangs - - id: check-json - - id: check-merge-conflict - - id: check-shebang-scripts-are-executable - - id: check-symlinks - - id: check-toml - - id: check-vcs-permalinks - - id: check-xml - - id: check-yaml - - id: debug-statements - - id: destroyed-symlinks - - id: end-of-file-fixer - - id: fix-byte-order-marker - - id: trailing-whitespace - - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.9.1 - hooks: - - id: black - - repo: https://github.com/PyCQA/isort - rev: 5.12.0 - hooks: - - id: isort - - repo: https://github.com/PyCQA/docformatter - rev: v1.7.5 - hooks: - - id: docformatter - additional_dependencies: - - docformatter[tomli] - - repo: https://github.com/PyCQA/pydocstyle - rev: 6.3.0 - hooks: - - id: pydocstyle - exclude: '^tests/' - additional_dependencies: - - pydocstyle[toml] - - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.5.1 - hooks: - - id: mypy - - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.4.2 - hooks: - - id: insert-license - name: Insert license headers (shell-style comments) - files: '(?:^|/)(?:.*\.(?:py|sh|toml|ya?ml)|Dockerfile|Makefile)$' - exclude: '(?:^|/)\..+|^docs/Makefile$' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '#' - - id: insert-license - name: Insert license headers (XML-style comments) - files: '\.(?:html|md|xml)$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '' - - id: insert-license - name: Insert license headers (C-style comments) - files: '\.(?:css|js|ts)$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '/*| *| */' - - id: insert-license - name: Insert license headers (reST comments) - files: '\.rst$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '..| |' - - repo: https://github.com/fsfe/reuse-tool - rev: v2.1.0 - hooks: - - id: reuse - - repo: https://github.com/qoomon/git-conventional-commits - rev: v2.6.5 - hooks: - - id: conventional-commits + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: check-added-large-files + - id: check-ast + - id: check-builtin-literals + - id: check-case-conflict + - id: check-executables-have-shebangs + - id: check-json + - id: check-merge-conflict + - id: check-shebang-scripts-are-executable + - id: check-symlinks + - id: check-toml + - id: check-vcs-permalinks + - id: check-xml + - id: check-yaml + - id: debug-statements + - id: destroyed-symlinks + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: trailing-whitespace + - repo: https://github.com/psf/black-pre-commit-mirror + rev: 23.9.1 + hooks: + - id: black + - repo: https://github.com/PyCQA/isort + rev: 5.12.0 + hooks: + - id: isort + - repo: https://github.com/PyCQA/docformatter + rev: v1.7.5 + hooks: + - id: docformatter + additional_dependencies: + - docformatter[tomli] + - repo: https://github.com/PyCQA/pydocstyle + rev: 6.3.0 + hooks: + - id: pydocstyle + exclude: "^tests/" + additional_dependencies: + - pydocstyle[toml] + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.5.1 + hooks: + - id: mypy + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.4.2 + hooks: + - id: insert-license + name: Insert license headers (shell-style comments) + files: '(?:^|/)(?:.*\.(?:py|sh|toml|ya?ml)|Dockerfile|Makefile)$' + exclude: '(?:^|/)\..+|^docs/Makefile$' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "#" + - id: insert-license + name: Insert license headers (XML-style comments) + files: '\.(?:html|md|xml)$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "" + - id: insert-license + name: Insert license headers (C-style comments) + files: '\.(?:css|js|ts)$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "/*| *| */" + - id: insert-license + name: Insert license headers (reST comments) + files: '\.rst$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "..| |" + - repo: https://github.com/fsfe/reuse-tool + rev: v2.1.0 + hooks: + - id: reuse + - repo: https://github.com/qoomon/git-conventional-commits + rev: v2.6.5 + hooks: + - id: conventional-commits diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 79d4dca..7a4c73a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,8 +16,8 @@ reduce the burden on our maintainers, please make sure that your code follows our style guidelines outlined below. -[open an issue]: https://github.com/DSD-DBS/rosidl2capella/issues -[open a pull request]: https://github.com/DSD-DBS/rosidl2capella/pulls +[open an issue]: https://github.com/DSD-DBS/capella-ros-tools/issues +[open a pull request]: https://github.com/DSD-DBS/capella-ros-tools/pulls ## Developing @@ -32,41 +32,41 @@ pytest We additionally recommend that you set up your editor / IDE as follows. -- Indent with 4 spaces per level of indentation +- Indent with 4 spaces per level of indentation -- Maximum line length of 79 (add a ruler / thin line / highlighting / ...) +- Maximum line length of 79 (add a ruler / thin line / highlighting / ...) -- _If you use Visual Studio Code_: Consider using a platform which supports - third-party language servers more easily, and continue with the next point. +- _If you use Visual Studio Code_: Consider using a platform which supports + third-party language servers more easily, and continue with the next point. - Otherwise, set up the editor to run `black`, `pylint` and `mypy` when saving. - To enable automatic import sorting with `isort`, add the following to your - `settings.json`: + Otherwise, set up the editor to run `black`, `pylint` and `mypy` when saving. + To enable automatic import sorting with `isort`, add the following to your + `settings.json`: - ```json - "[python]": { - "editor.codeActionsOnSave": { - "source.organizeImports": true - } - } - ``` + ```json + "[python]": { + "editor.codeActionsOnSave": { + "source.organizeImports": true + } + } + ``` - Note that the Pylance language server is not recommended, as it occasionally - causes false-positive errors for perfectly valid code. + Note that the Pylance language server is not recommended, as it occasionally + causes false-positive errors for perfectly valid code. -- _If you do not use VSC_: Set up your editor to use the [python-lsp-server], - and make sure that the relevant plugins are installed. You can install - everything that's needed into the virtualenv with pip: +- _If you do not use VSC_: Set up your editor to use the [python-lsp-server], + and make sure that the relevant plugins are installed. You can install + everything that's needed into the virtualenv with pip: - [python-lsp-server]: https://github.com/python-lsp/python-lsp-server + [python-lsp-server]: https://github.com/python-lsp/python-lsp-server - ```sh - pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy - ``` + ```sh + pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy + ``` - This will provide as-you-type linting as well as automatic formatting on - save. Language server clients are available for a wide range of editors, from - Vim/Emacs to PyCharm/IDEA. + This will provide as-you-type linting as well as automatic formatting on + save. Language server clients are available for a wide range of editors, from + Vim/Emacs to PyCharm/IDEA. ## Code style @@ -74,81 +74,78 @@ We base our code style on a modified version of the [Google style guide for Python code](https://google.github.io/styleguide/pyguide.html). The key differences are: -- **Docstrings**: The [Numpy style guide] applies here. +- **Docstrings**: The [Numpy style guide] applies here. - [numpy style guide]: - https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard + [numpy style guide]: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard - When writing docstrings for functions, use the imperative style, as per - [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". + When writing docstrings for functions, use the imperative style, as per + [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". - [pep-257]: https://peps.python.org/pep-0257/ + [pep-257]: https://peps.python.org/pep-0257/ -- **Overridden methods**: If the documentation did not change from the base - class (i.e. the base class' method's docstring still applies without - modification), do not add a short docstring á la "See base class". This lets - automated tools pick up the full base class docstring instead, and is - therefore more useful in IDEs etc. +- **Overridden methods**: If the documentation did not change from the base + class (i.e. the base class' method's docstring still applies without + modification), do not add a short docstring á la "See base class". This lets + automated tools pick up the full base class docstring instead, and is + therefore more useful in IDEs etc. -- **Linting**: Use [pylint] for static code analysis, and [mypy] for static - type checking. +- **Linting**: Use [pylint] for static code analysis, and [mypy] for static + type checking. - [pylint]: https://github.com/PyCQA/pylint - [mypy]: https://github.com/python/mypy + [pylint]: https://github.com/PyCQA/pylint + [mypy]: https://github.com/python/mypy -- **Formatting**: Use [black] as code auto-formatter. The maximum line length - is 79, as per [PEP-8]. This setting should be automatically picked up from - the `pyproject.toml` file. The reason for the shorter line length is that it - avoids wrapping and overflows in side-by-side split views (e.g. diffs) if - there's also information displayed to the side of it (e.g. a tree view of the - modified files). +- **Formatting**: Use [black] as code auto-formatter. The maximum line length + is 79, as per [PEP-8]. This setting should be automatically picked up from + the `pyproject.toml` file. The reason for the shorter line length is that it + avoids wrapping and overflows in side-by-side split views (e.g. diffs) if + there's also information displayed to the side of it (e.g. a tree view of the + modified files). - [black]: https://github.com/psf/black - [pep-8]: https://www.python.org/dev/peps/pep-0008/ + [black]: https://github.com/psf/black + [pep-8]: https://www.python.org/dev/peps/pep-0008/ - Be aware of the different line length of 72 for docstrings. We currently do - not have a satisfactory solution to automatically apply or enforce this. + Be aware of the different line length of 72 for docstrings. We currently do + not have a satisfactory solution to automatically apply or enforce this. - Note that, while you're encouraged to do so in general, it is not a hard - requirement to break up long strings into smaller parts. Additionally, never - break up strings that are presented to the user in e.g. log messages, as that - makes it significantly harder to grep for them. + Note that, while you're encouraged to do so in general, it is not a hard + requirement to break up long strings into smaller parts. Additionally, never + break up strings that are presented to the user in e.g. log messages, as that + makes it significantly harder to grep for them. - Use [isort] for automatic sorting of imports. Its settings should - automatically be picked up from the `pyproject.toml` file as well. + Use [isort] for automatic sorting of imports. Its settings should + automatically be picked up from the `pyproject.toml` file as well. - [isort]: https://github.com/PyCQA/isort + [isort]: https://github.com/PyCQA/isort -- **Typing**: We do not make an exception for `typing` imports. Instead of - writing `from typing import SomeName`, use `import typing as t` and access - typing related classes like `t.TypedDict`. +- **Typing**: We do not make an exception for `typing` imports. Instead of + writing `from typing import SomeName`, use `import typing as t` and access + typing related classes like `t.TypedDict`. - + + Use the new syntax and classes for typing introduced with Python 3.10. - Use the new syntax and classes for typing introduced with Python 3.10. + - Instead of `t.Tuple`, `t.List` etc. use the builtin classes `tuple`, `list` + etc. + - For classes that are not builtin (e.g. `Iterable`), + `import collections.abc as cabc` and then use them like `cabc.Iterable`. + - Use [PEP-604-style unions], e.g. `int | float` instead of + `t.Union[int, float]`. + - Use `... | None` (with `None` always as the last union member) instead of + `t.Optional[...]` and always explicitly annotate where `None` is possible. - - Instead of `t.Tuple`, `t.List` etc. use the builtin classes `tuple`, `list` - etc. - - For classes that are not builtin (e.g. `Iterable`), - `import collections.abc as cabc` and then use them like `cabc.Iterable`. - - Use [PEP-604-style unions], e.g. `int | float` instead of - `t.Union[int, float]`. - - Use `... | None` (with `None` always as the last union member) instead of - `t.Optional[...]` and always explicitly annotate where `None` is possible. + [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ - [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ +- **Python style rules**: For conflicting parts, the [Black code style] wins. + If you have set up black correctly, you don't need to worry about this though + :) -- **Python style rules**: For conflicting parts, the [Black code style] wins. - If you have set up black correctly, you don't need to worry about this though - :) + [black code style]: https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html - [black code style]: - https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html +- When working with `dict`s, consider using `t.TypedDict` instead of a more + generic `dict[str, float|int|str]`-like annotation where possible, as the + latter is much less precise (often requiring additional `assert`s or + `isinstance` checks to pass) and can grow unwieldy very quickly. -- When working with `dict`s, consider using `t.TypedDict` instead of a more - generic `dict[str, float|int|str]`-like annotation where possible, as the - latter is much less precise (often requiring additional `assert`s or - `isinstance` checks to pass) and can grow unwieldy very quickly. - -- Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses - a more convenient `class ...:` syntax and also supports type annotations. +- Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses + a more convenient `class ...:` syntax and also supports type annotations. diff --git a/README.md b/README.md index 6fc2661..0c89465 100644 --- a/README.md +++ b/README.md @@ -3,31 +3,31 @@ ~ SPDX-License-Identifier: Apache-2.0 --> -# rosidl2capella +# capella-ros-tools -![image](https://github.com/DSD-DBS/rosidl2capella/actions/workflows/build-test-publish.yml/badge.svg) -![image](https://github.com/DSD-DBS/rosidl2capella/actions/workflows/lint.yml/badge.svg) +![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/build-test-publish.yml/badge.svg) +![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) -Tool for parsing ROS IDL (.msg files) and converting them to Capella model. +Tools for using ROS with Capella # Documentation -Read the [full documentation on Github pages](https://dsd-dbs.github.io/rosidl2capella). +Read the [full documentation on Github pages](https://dsd-dbs.github.io/capella-ros-tools). # Installation You can install the latest released version directly from PyPI. ```sh -pip install rosidl2capella +pip install capella-ros-tools ``` To set up a development environment, clone the project and install it into a virtual environment. ```sh -git clone https://github.com/DSD-DBS/rosidl2capella -cd rosidl2capella +git clone --recurse-submodules https://github.com/DSD-DBS/capella-ros-tools +cd capella-ros-tools python -m venv .venv source .venv/bin/activate.sh # for Linux / Mac diff --git a/rosidl2capella/__init__.py b/capella_ros_tools/__init__.py similarity index 70% rename from rosidl2capella/__init__.py rename to capella_ros_tools/__init__.py index e02b53b..ef599ea 100644 --- a/rosidl2capella/__init__.py +++ b/capella_ros_tools/__init__.py @@ -1,10 +1,10 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""The rosidl2capella package.""" +"""The capella-ros-tools package.""" from importlib import metadata try: - __version__ = metadata.version("rosidl2capella") + __version__ = metadata.version("capella-ros-tools") except metadata.PackageNotFoundError: # pragma: no cover __version__ = "0.0.0+unknown" del metadata diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py new file mode 100644 index 0000000..2c78dbd --- /dev/null +++ b/capella_ros_tools/__main__.py @@ -0,0 +1,24 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Main entry point into capella-ros-tools.""" +import click + +import capella_ros_tools +from capella_ros_tools.msg2capella import msg2capella + +# from capella_ros_tools.capella2msg import capella2msg + + +@click.command() +@click.version_option( + version=capella_ros_tools.__version__, + prog_name="capella-ros-tools", + message="%(prog)s %(version)s", +) +def main(): + """Console script for capella-ros-tools.""" + + +if __name__ == "__main__": + msg2capella() + # capella2msg() diff --git a/rosidl2capella/capella2msg.py b/capella_ros_tools/capella2msg.py similarity index 90% rename from rosidl2capella/capella2msg.py rename to capella_ros_tools/capella2msg.py index 57b0547..f176d9a 100644 --- a/rosidl2capella/capella2msg.py +++ b/capella_ros_tools/capella2msg.py @@ -6,10 +6,10 @@ import click -import rosidl2capella -from rosidl2capella.modules import BASIC_TYPES, ROS_INTERFACES -from rosidl2capella.modules.parse_capella import ParseCapella -from rosidl2capella.modules.serialize_message import ( +import capella_ros_tools +from capella_ros_tools.modules import BASIC_TYPES, ROS_INTERFACES +from capella_ros_tools.modules.parse_capella import ParseCapella +from capella_ros_tools.modules.serialize_message import ( SerializeMessageDef, SerializeMessagesPkg, ) @@ -42,8 +42,8 @@ def add_package(self, current_root): @click.command() @click.version_option( - version=rosidl2capella.__version__, - prog_name="rosidl2capella", + version=capella_ros_tools.__version__, + prog_name="capella-ros-tools", message="%(prog)s %(version)s", ) @click.argument( diff --git a/rosidl2capella/modules/__init__.py b/capella_ros_tools/modules/__init__.py similarity index 76% rename from rosidl2capella/modules/__init__.py rename to capella_ros_tools/modules/__init__.py index a11c286..2b10160 100644 --- a/rosidl2capella/modules/__init__.py +++ b/capella_ros_tools/modules/__init__.py @@ -1,6 +1,7 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 """The capella ros-tools modules package.""" +import typing as t from collections import namedtuple import capellambse @@ -9,10 +10,24 @@ BASIC_TYPES = "basic_types" -EnumValue = namedtuple("EnumValue", ["name", "type", "value", "comment"]) -MsgProp = namedtuple( - "MsgProp", ["name", "type", "typedir", "min", "max", "comment"] -) +class EnumProp(t.NamedTuple): + """Enum property.""" + + name: str + type: str + value: str + comment: str + + +class MsgProp(t.NamedTuple): + """Message property.""" + + name: str + type: str + typedir: str + min: str + max: str + comment: str class BaseCapella: diff --git a/rosidl2capella/modules/parse_capella.py b/capella_ros_tools/modules/parse_capella.py similarity index 69% rename from rosidl2capella/modules/parse_capella.py rename to capella_ros_tools/modules/parse_capella.py index 54351c8..ba24f27 100644 --- a/rosidl2capella/modules/parse_capella.py +++ b/capella_ros_tools/modules/parse_capella.py @@ -3,7 +3,7 @@ """Class definition for Capella model parser.""" import typing as t -from . import ROS_INTERFACES, BaseCapella, EnumValue, MsgProp +from . import ROS_INTERFACES, BaseCapella, EnumProp, MsgProp class ParseCapella(BaseCapella): @@ -17,21 +17,28 @@ def get_classes(self, package: t.Any) -> dict[str, t.Any]: """Get classes in Capella model.""" classes: dict = {} for cls in package.classes: - props = [ - MsgProp( - prop.name, + props = [] + for prop in cls.owned_properties: + type = ( prop.type.name if prop.type.__class__.__name__ != "Enumeration" - else "uint8", + else "uint8" + ) + typedir = ( prop.type.parent.name if prop.type.parent.parent.name == ROS_INTERFACES - else "", - prop.min_card.value, - prop.max_card.value, - prop.description, + else "" + ) + props.append( + MsgProp( + prop.name, + type, + typedir, + prop.min_card.value, + prop.max_card.value, + prop.description, + ) ) - for prop in cls.owned_properties - ] classes[cls.name] = (cls.description, props) return classes @@ -40,7 +47,7 @@ def get_types(self, package: t.Any) -> dict[str, t.Any]: types: dict = {} for type in package.datatypes: props = [ - EnumValue( + EnumProp( prop.name, prop.value.type.name if prop.value.type else "uint8", prop.value.value, diff --git a/rosidl2capella/modules/parse_message.py b/capella_ros_tools/modules/parse_message.py similarity index 97% rename from rosidl2capella/modules/parse_message.py rename to capella_ros_tools/modules/parse_message.py index d4c6b26..1482227 100644 --- a/rosidl2capella/modules/parse_message.py +++ b/capella_ros_tools/modules/parse_message.py @@ -5,7 +5,7 @@ import re from pathlib import Path -from . import EnumValue, MessageDef, MessagesPkg, MsgProp +from . import EnumProp, MessageDef, MessagesPkg, MsgProp RE_TNC = re.compile(r"^([A-Za-z0-9\[\]\/_]+)\s+(\w+)(?:\s+#\s*(.+))?$") RE_ENUM = re.compile(r"^(\w+)\s+(\w+)\s*=\s*(\d+)\s*(?:#\s*(.+))?$") @@ -87,7 +87,7 @@ def from_type_file(cls, file: Path) -> list: else file.stem ) props = [ - EnumValue(prop[0].replace(commonprefix, ""), *prop[1:]) + EnumProp(prop[0].replace(commonprefix, ""), *prop[1:]) for prop in props ] out.append(cls(name, description, props)) diff --git a/rosidl2capella/modules/serialize_capella.py b/capella_ros_tools/modules/serialize_capella.py similarity index 100% rename from rosidl2capella/modules/serialize_capella.py rename to capella_ros_tools/modules/serialize_capella.py diff --git a/rosidl2capella/modules/serialize_message.py b/capella_ros_tools/modules/serialize_message.py similarity index 100% rename from rosidl2capella/modules/serialize_message.py rename to capella_ros_tools/modules/serialize_message.py diff --git a/rosidl2capella/msg2capella.py b/capella_ros_tools/msg2capella.py similarity index 93% rename from rosidl2capella/msg2capella.py rename to capella_ros_tools/msg2capella.py index a0937f0..2fefbb2 100644 --- a/rosidl2capella/msg2capella.py +++ b/capella_ros_tools/msg2capella.py @@ -6,10 +6,10 @@ import click -import rosidl2capella -from rosidl2capella.modules import ROS_INTERFACES -from rosidl2capella.modules.parse_message import ParseMessagesPkg -from rosidl2capella.modules.serialize_capella import SerializeCapella +import capella_ros_tools +from capella_ros_tools.modules import ROS_INTERFACES +from capella_ros_tools.modules.parse_message import ParseMessagesPkg +from capella_ros_tools.modules.serialize_capella import SerializeCapella class Msg2Capella: @@ -77,8 +77,8 @@ def add_relations(self, messages, packages, current_root): @click.command() @click.version_option( - version=rosidl2capella.__version__, - prog_name="rosidl2capella", + version=capella_ros_tools.__version__, + prog_name="capella-ros-tools", message="%(prog)s %(version)s", ) @click.argument( diff --git a/docs/source/conf.py b/docs/source/conf.py index e3f086b..1925ae0 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -14,7 +14,7 @@ sys.path.insert(0, os.path.abspath("../..")) -import rosidl2capella +import capella_ros_tools # -- Project information ----------------------------------------------------- @@ -25,7 +25,7 @@ with open("../../pyproject.toml", "rb") as f: _metadata = tomllib.load(f)["project"] -project = "rosidl2capella" +project = "capella-ros-tools" author = _metadata["authors"][0]["name"] copyright = f"{author} and the {_metadata['name']} contributors" @@ -58,7 +58,7 @@ # built documents. # The full version, including alpha/beta/rc tags. -version = rosidl2capella.__version__ +version = capella_ros_tools.__version__ rst_epilog = f""" .. |Project| replace:: {project} .. |Version| replace:: {version} @@ -95,7 +95,7 @@ "footer_icons": [ { "name": "GitHub", - "url": "https://github.com/DSD-DBS/rosidl2capella", + "url": "https://github.com/DSD-DBS/capella-ros-tools", "html": '', "class": "", }, diff --git a/docs/source/index.rst b/docs/source/index.rst index 963fdcb..8e45b65 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -2,8 +2,8 @@ Copyright DB Netz AG and contributors SPDX-License-Identifier: Apache-2.0 -Welcome to rosidl2capella's documentation! -========================================== +Welcome to capella-ros-tools's documentation! +============================================= .. toctree:: :maxdepth: 2 diff --git a/pyproject.toml b/pyproject.toml index 4b90cfa..27a0b29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,10 +8,10 @@ build-backend = "setuptools.build_meta" [project] dynamic = ["version"] -name = "rosidl2capella" -description = "Tool for parsing ROS IDL (.msg files) and converting them to Capella model." +name = "capella-ros-tools" +description = "Tools for using ROS with Capella" readme = "README.md" -requires-python = ">=3, <3.11" +requires-python = ">=3.10, <3.12" license = { text = "Apache-2.0" } authors = [ { name = "DB Netz AG" }, @@ -24,15 +24,15 @@ classifiers = [ "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", -] + ] dependencies = [ "click", "capellambse @ git+https://github.com/DSD-DBS/py-capellambse.git@roletag-create", ] [project.urls] -Homepage = "https://github.com/DSD-DBS/rosidl2capella" -Documentation = "https://dsd-dbs.github.io/rosidl2capella" +Homepage = "https://github.com/DSD-DBS/capella-ros-tools" +Documentation = "https://dsd-dbs.github.io/capella-ros-tools" [project.optional-dependencies] docs = [ @@ -54,7 +54,7 @@ target-version = ["py310"] [tool.coverage.run] branch = true command_line = "-m pytest" -source = ["rosidl2capella"] +source = ["capella_ros_tools"] [tool.coverage.report] exclude_also = [ @@ -195,7 +195,7 @@ zip-safe = false "*" = ["py.typed"] [tool.setuptools.packages.find] -include = ["rosidl2capella", "rosidl2capella.*"] +include = ["capella_ros_tools", "capella_ros_tools.*"] [tool.setuptools_scm] # This section must exist for setuptools_scm to work diff --git a/rosidl2capella/__main__.py b/rosidl2capella/__main__.py deleted file mode 100644 index 20331d1..0000000 --- a/rosidl2capella/__main__.py +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Main entry point into rosidl2capella.""" -import click - -import rosidl2capella -from rosidl2capella.capella2msg import capella2msg - -# from rosidl2capella.msg2capella import msg2capella - - -@click.command() -@click.version_option( - version=rosidl2capella.__version__, - prog_name="rosidl2capella", - message="%(prog)s %(version)s", -) -def main(): - """Console script for rosidl2capella.""" - - -if __name__ == "__main__": - # msg2capella() - capella2msg() diff --git a/tests/test_rosidl2capella.py b/tests/test_rosidl2capella.py index 55b31ae..17bcb5d 100644 --- a/tests/test_rosidl2capella.py +++ b/tests/test_rosidl2capella.py @@ -1,7 +1,7 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 -import rosidl2capella +import capella_ros_tools def test_add_some_tests_here(): From 6ab8cf75df5a7a0d8dc0c6e3dab7a45f45fd884b Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 17 Nov 2023 13:59:14 +0100 Subject: [PATCH 07/47] docs: Add examples --- capella_ros_tools/modules/parse_message.py | 10 +- .../modules/serialize_capella.py | 8 +- capella_ros_tools/msg2capella.py | 72 ++- .../examples/data/empty_model}/.project | 2 +- .../data/empty_model}/.project.license | 2 +- .../examples/data/empty_model/empty_model.afm | 4 +- .../data/empty_model/empty_model.afm.license | 2 +- .../data/empty_model/empty_model.aird | 26 ++ .../data/empty_model/empty_model.aird.license | 2 +- .../data/empty_model/empty_model.capella | 272 ++++++++++++ .../empty_model/empty_model.capella.license | 2 +- .../examples/data/model}/.project | 2 +- .../examples/data/model}/.project.license | 2 +- .../examples/data/model/model.afm | 4 +- docs/examples/data/model/model.afm.license | 2 + docs/examples/data/model/model.aird | 26 ++ docs/examples/data/model/model.aird.license | 2 + .../examples/data/model/model.capella | 222 +++++----- .../examples/data/model/model.capella.license | 2 + .../data/model_msgs/msg}/MultiArrayLayout.msg | 2 +- .../data/model_msgs/msg}/UInt64MultiArray.msg | 2 +- .../msg}/sub_msgs/MultiArrayDimension.msg | 0 .../model_msgs/msg}/types/ObjectTypes.msg | 4 +- docs/examples/example_parse_capella.ipynb | 418 ++++++++++++++++++ .../example_parse_capella.ipynb.license | 2 + docs/examples/example_parse_message.ipynb | 155 +++++++ .../example_parse_message.ipynb.license | 2 + docs/examples/example_serialize_capella.ipynb | 382 ++++++++++++++++ .../example_serialize_capella.ipynb.license | 2 + docs/examples/example_serialize_message.ipynb | 76 ++++ .../example_serialize_message.ipynb.license | 2 + tests/data/empty_model/ros_msgs.aird | 74 ---- tests/data/model/ros_msgs.afm.license | 2 - tests/data/model/ros_msgs.aird | 74 ---- tests/data/model/ros_msgs.aird.license | 2 - tests/data/model/ros_msgs.capella | 395 ----------------- tests/data/model/ros_msgs.capella.license | 2 - 37 files changed, 1550 insertions(+), 710 deletions(-) rename {tests/data/model => docs/examples/data/empty_model}/.project (89%) rename {tests/data/model => docs/examples/data/empty_model}/.project.license (51%) rename tests/data/empty_model/ros_msgs.afm => docs/examples/data/empty_model/empty_model.afm (69%) rename tests/data/empty_model/ros_msgs.aird.license => docs/examples/data/empty_model/empty_model.afm.license (51%) create mode 100644 docs/examples/data/empty_model/empty_model.aird rename tests/data/empty_model/ros_msgs.capella.license => docs/examples/data/empty_model/empty_model.aird.license (51%) create mode 100644 docs/examples/data/empty_model/empty_model.capella rename tests/data/empty_model/ros_msgs.afm.license => docs/examples/data/empty_model/empty_model.capella.license (51%) rename {tests/data/empty_model => docs/examples/data/model}/.project (91%) rename {tests/data/empty_model => docs/examples/data/model}/.project.license (51%) rename tests/data/model/ros_msgs.afm => docs/examples/data/model/model.afm (69%) create mode 100644 docs/examples/data/model/model.afm.license create mode 100644 docs/examples/data/model/model.aird create mode 100644 docs/examples/data/model/model.aird.license rename tests/data/empty_model/ros_msgs.capella => docs/examples/data/model/model.capella (62%) create mode 100644 docs/examples/data/model/model.capella.license rename {tests/data/msgs => docs/examples/data/model_msgs/msg}/MultiArrayLayout.msg (99%) rename {tests/data/msgs => docs/examples/data/model_msgs/msg}/UInt64MultiArray.msg (99%) rename {tests/data/msgs => docs/examples/data/model_msgs/msg}/sub_msgs/MultiArrayDimension.msg (100%) rename {tests/data/msgs => docs/examples/data/model_msgs/msg}/types/ObjectTypes.msg (84%) create mode 100644 docs/examples/example_parse_capella.ipynb create mode 100644 docs/examples/example_parse_capella.ipynb.license create mode 100644 docs/examples/example_parse_message.ipynb create mode 100644 docs/examples/example_parse_message.ipynb.license create mode 100644 docs/examples/example_serialize_capella.ipynb create mode 100644 docs/examples/example_serialize_capella.ipynb.license create mode 100644 docs/examples/example_serialize_message.ipynb create mode 100644 docs/examples/example_serialize_message.ipynb.license delete mode 100644 tests/data/empty_model/ros_msgs.aird delete mode 100644 tests/data/model/ros_msgs.afm.license delete mode 100644 tests/data/model/ros_msgs.aird delete mode 100644 tests/data/model/ros_msgs.aird.license delete mode 100644 tests/data/model/ros_msgs.capella delete mode 100644 tests/data/model/ros_msgs.capella.license diff --git a/capella_ros_tools/modules/parse_message.py b/capella_ros_tools/modules/parse_message.py index 1482227..4cf607e 100644 --- a/capella_ros_tools/modules/parse_message.py +++ b/capella_ros_tools/modules/parse_message.py @@ -80,12 +80,10 @@ def from_type_file(cls, file: Path) -> list: for line in lines for (t, n, v, c) in RE_ENUM.findall(line) ] + if not props: + continue commonprefix = os.path.commonprefix([prop[0] for prop in props]) - name = ( - commonprefix.rpartition("_")[0] - if len(blocks) > 1 - else file.stem - ) + name = commonprefix.rpartition("_")[0] props = [ EnumProp(prop[0].replace(commonprefix, ""), *prop[1:]) for prop in props @@ -127,7 +125,7 @@ def from_msg_folder(cls, path_to_pkg_root: Path): def from_pkg_folders(cls, path_to_root: Path): """Create package from package folder.""" out = cls({}, {}) - for dir in path_to_root.rglob("**/msg/"): + for dir in path_to_root.rglob("msg/"): out.packages[dir.parent.name] = ParseMessagesPkg.from_msg_folder( dir ) diff --git a/capella_ros_tools/modules/serialize_capella.py b/capella_ros_tools/modules/serialize_capella.py index c6d430f..73d20ba 100644 --- a/capella_ros_tools/modules/serialize_capella.py +++ b/capella_ros_tools/modules/serialize_capella.py @@ -162,19 +162,18 @@ def _find_type(self, type_name: str, package: t.Any) -> t.Any: try: return self.basic_types.datatypes.by_name(type_name) except KeyError: - return None + self.create_basic_types({type_name}) + return self.basic_types.datatypes.by_name(type_name) def create_attribute( self, class_name: str, prop: MsgProp, package: t.Any, - ) -> bool: + ) -> None: """Create attribute in Capella model.""" superclass = package.classes.by_name(class_name) property_type = self._find_type(prop.type, package) - if not property_type: - return False try: p = superclass.owned_properties.by_name(prop.name) superclass.owned_properties.remove(p) @@ -192,7 +191,6 @@ def create_attribute( attribute.max_card = capellambse.new_object( "LiteralNumericValue", value=float(prop.max or "inf") ) - return True def save_changes(self) -> None: """Save changes to Capella model.""" diff --git a/capella_ros_tools/msg2capella.py b/capella_ros_tools/msg2capella.py index 2fefbb2..2d67ea9 100644 --- a/capella_ros_tools/msg2capella.py +++ b/capella_ros_tools/msg2capella.py @@ -11,6 +11,8 @@ from capella_ros_tools.modules.parse_message import ParseMessagesPkg from capella_ros_tools.modules.serialize_capella import SerializeCapella +PATH = Path(__file__).parent + class Msg2Capella: """Class for importing .msg to capella model.""" @@ -19,8 +21,11 @@ def __init__(self, path_to_capella_model, layer, overlap): self.serializer = SerializeCapella(path_to_capella_model, layer) self.overlap = overlap - def add_objects(self, messages, packages, current_root): + def add_objects(self, current_root_struct, current_root): """Add objects to capella model.""" + messages = current_root_struct.messages + packages = current_root_struct.packages + self.serializer.create_packages(set(packages.keys()), current_root) func = ( @@ -43,21 +48,35 @@ def add_objects(self, messages, packages, current_root): ) raise click.Abort() for cls in overlap: - if self.overlap == "overwrite" or ( - self.overlap == "ask" - and click.confirm( - f"{cls.name} already exists. Do you want to overwrite?" - ) - ): + if self.overlap in ["ask", "overwrite"]: + if self.overlap == "ask": + confirm = click.prompt( + f"{cls.name} already exists. Do you want to overwrite?", + type=click.Choice( + ["y", "Y", "n", "N"], + case_sensitive=True, + ), + ) + match confirm: + case "n": + continue + case "N": + self.overlap = "keep" + case "Y": + self.overlap = "overwrite" + func[1]([cls], current_root) func[0]({cls.name: messages[cls.name].as_struct}, current_root) for pkg_name, pkg in packages.items(): new_root = current_root.packages.by_name(pkg_name) - self.add_objects(pkg.messages, pkg.packages, new_root) + self.add_objects(pkg, new_root) - def add_relations(self, messages, packages, current_root): + def add_relations(self, current_root_struct, current_root): """Add relations to capella model.""" + messages = current_root_struct.messages + packages = current_root_struct.packages + if current_root.name == "types": return for class_name, cls in messages.items(): @@ -65,14 +84,12 @@ def add_relations(self, messages, packages, current_root): if not self.serializer.create_composition( class_name, prop, current_root ): - while not self.serializer.create_attribute( + self.serializer.create_attribute( class_name, prop, current_root - ): - self.serializer.create_basic_types({prop.type}) - + ) for pkg_name, pkg in packages.items(): new_root = current_root.packages.by_name(pkg_name) - self.add_relations(pkg.messages, pkg.packages, new_root) + self.add_relations(pkg, new_root) @click.command() @@ -117,23 +134,30 @@ def add_relations(self, messages, packages, current_root): ) @click.option("--debug", is_flag=True) def msg2capella( - path_to_msgs_root, path_to_capella_model, layer, overlap, debug + path_to_msgs_root: Path, + path_to_capella_model: str, + layer: str, + overlap: str, + debug: bool, ): """Parse .msg files and import them to capella model.""" - converter = Msg2Capella(path_to_capella_model, layer, overlap) + + converter = Msg2Capella(path_to_capella_model, layer, "keep") + current_root = converter.serializer.data ros_interfaces = ParseMessagesPkg.from_pkg_folders( - Path(__file__).joinpath("ros_interfaces") + PATH.joinpath("ros_interfaces") + ) + current_root_struct = ParseMessagesPkg( + {}, {ROS_INTERFACES: ros_interfaces} ) - msg = ParseMessagesPkg.from_msg_folder(path_to_msgs_root) - msg.packages |= {ROS_INTERFACES: ros_interfaces} - - current_root = converter.serializer.data - - converter.add_objects(msg.messages, msg.packages, current_root) + converter.add_objects(current_root_struct, current_root) - converter.add_relations(msg.messages, msg.packages, current_root) + converter.overlap = overlap + current_root_struct = ParseMessagesPkg.from_pkg_folders(path_to_msgs_root) + converter.add_objects(current_root_struct, current_root) + converter.add_relations(current_root_struct, current_root) if debug: click.echo(converter.serializer.data) diff --git a/tests/data/model/.project b/docs/examples/data/empty_model/.project similarity index 89% rename from tests/data/model/.project rename to docs/examples/data/empty_model/.project index c8c652b..6c740f9 100644 --- a/tests/data/model/.project +++ b/docs/examples/data/empty_model/.project @@ -1,6 +1,6 @@ - ros_msgs + empty_model diff --git a/tests/data/model/.project.license b/docs/examples/data/empty_model/.project.license similarity index 51% rename from tests/data/model/.project.license rename to docs/examples/data/empty_model/.project.license index c3fb022..95e8b6e 100644 --- a/tests/data/model/.project.license +++ b/docs/examples/data/empty_model/.project.license @@ -1,2 +1,2 @@ Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 +SPDX-License-Identifier: CC0-1.0 diff --git a/tests/data/empty_model/ros_msgs.afm b/docs/examples/data/empty_model/empty_model.afm similarity index 69% rename from tests/data/empty_model/ros_msgs.afm rename to docs/examples/data/empty_model/empty_model.afm index cf2da5c..d019bfb 100644 --- a/tests/data/empty_model/ros_msgs.afm +++ b/docs/examples/data/empty_model/empty_model.afm @@ -1,4 +1,4 @@ - - + + diff --git a/tests/data/empty_model/ros_msgs.aird.license b/docs/examples/data/empty_model/empty_model.afm.license similarity index 51% rename from tests/data/empty_model/ros_msgs.aird.license rename to docs/examples/data/empty_model/empty_model.afm.license index c3fb022..95e8b6e 100644 --- a/tests/data/empty_model/ros_msgs.aird.license +++ b/docs/examples/data/empty_model/empty_model.afm.license @@ -1,2 +1,2 @@ Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 +SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/empty_model/empty_model.aird b/docs/examples/data/empty_model/empty_model.aird new file mode 100644 index 0000000..2fc68e9 --- /dev/null +++ b/docs/examples/data/empty_model/empty_model.aird @@ -0,0 +1,26 @@ + + + empty_model.afm + empty_model.capella + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/data/empty_model/ros_msgs.capella.license b/docs/examples/data/empty_model/empty_model.aird.license similarity index 51% rename from tests/data/empty_model/ros_msgs.capella.license rename to docs/examples/data/empty_model/empty_model.aird.license index c3fb022..95e8b6e 100644 --- a/tests/data/empty_model/ros_msgs.capella.license +++ b/docs/examples/data/empty_model/empty_model.aird.license @@ -1,2 +1,2 @@ Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 +SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/empty_model/empty_model.capella b/docs/examples/data/empty_model/empty_model.capella new file mode 100644 index 0000000..c1771c1 --- /dev/null +++ b/docs/examples/data/empty_model/empty_model.capella @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/data/empty_model/ros_msgs.afm.license b/docs/examples/data/empty_model/empty_model.capella.license similarity index 51% rename from tests/data/empty_model/ros_msgs.afm.license rename to docs/examples/data/empty_model/empty_model.capella.license index c3fb022..95e8b6e 100644 --- a/tests/data/empty_model/ros_msgs.afm.license +++ b/docs/examples/data/empty_model/empty_model.capella.license @@ -1,2 +1,2 @@ Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 +SPDX-License-Identifier: CC0-1.0 diff --git a/tests/data/empty_model/.project b/docs/examples/data/model/.project similarity index 91% rename from tests/data/empty_model/.project rename to docs/examples/data/model/.project index c8c652b..89f6904 100644 --- a/tests/data/empty_model/.project +++ b/docs/examples/data/model/.project @@ -1,6 +1,6 @@ - ros_msgs + model diff --git a/tests/data/empty_model/.project.license b/docs/examples/data/model/.project.license similarity index 51% rename from tests/data/empty_model/.project.license rename to docs/examples/data/model/.project.license index c3fb022..95e8b6e 100644 --- a/tests/data/empty_model/.project.license +++ b/docs/examples/data/model/.project.license @@ -1,2 +1,2 @@ Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 +SPDX-License-Identifier: CC0-1.0 diff --git a/tests/data/model/ros_msgs.afm b/docs/examples/data/model/model.afm similarity index 69% rename from tests/data/model/ros_msgs.afm rename to docs/examples/data/model/model.afm index cf2da5c..66ba63f 100644 --- a/tests/data/model/ros_msgs.afm +++ b/docs/examples/data/model/model.afm @@ -1,4 +1,4 @@ - - + + diff --git a/docs/examples/data/model/model.afm.license b/docs/examples/data/model/model.afm.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/docs/examples/data/model/model.afm.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/model/model.aird b/docs/examples/data/model/model.aird new file mode 100644 index 0000000..2ee1f82 --- /dev/null +++ b/docs/examples/data/model/model.aird @@ -0,0 +1,26 @@ + + + model.afm + model.capella + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examples/data/model/model.aird.license b/docs/examples/data/model/model.aird.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/docs/examples/data/model/model.aird.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/tests/data/empty_model/ros_msgs.capella b/docs/examples/data/model/model.capella similarity index 62% rename from tests/data/empty_model/ros_msgs.capella rename to docs/examples/data/model/model.capella index b4f60ee..b2055e1 100644 --- a/tests/data/empty_model/ros_msgs.capella +++ b/docs/examples/data/model/model.capella @@ -16,257 +16,257 @@ xmlns:org.polarsys.capella.core.data.la="http://www.polarsys.org/capella/core/la/6.0.0" xmlns:org.polarsys.capella.core.data.oa="http://www.polarsys.org/capella/core/oa/6.0.0" xmlns:org.polarsys.capella.core.data.pa="http://www.polarsys.org/capella/core/pa/6.0.0" - id="e5dae5f5-51e5-4406-b6eb-00e153b3ee36" - name="ros_msgs"> - + id="d71563a0-9dab-4d41-b836-e9a4279349fc" + name="model"> + + id="f9edf151-fb39-4641-86d2-f11bc925320e" name="ProgressStatus"> + id="f932562c-867a-4100-af85-709a74e233d7" name="DRAFT"/> + id="6acb6fd0-3ef0-445a-a9a9-7db760466333" name="TO_BE_REVIEWED"/> + id="f96c751b-cce0-42ec-9d2b-8c2c1628d090" name="TO_BE_DISCUSSED"/> + id="5b9f5e57-887e-46e2-b5cd-aa3e18e0c1b0" name="REWORK_NECESSARY"/> + id="dcb6ca45-514e-48b2-9a60-520a50541a7b" name="UNDER_REWORK"/> + id="ada8acc1-1cdd-4628-a673-1ea344b02439" name="REVIEWED_OK"/> - + id="f1bf6809-261b-4cf2-8b2e-a0a291e21074" name="model"> + id="5f580949-a4d9-44e1-9030-57b2fe88ba96" name="Operational Analysis"> + id="22c8a28d-8fd4-44c0-89a1-6ee21a876416" name="Operational Activities"> + id="d44f84fd-641f-432f-bfba-8e1aaf2c0061" name="Root Operational Activity"/> + id="abd519b7-a414-4987-9e70-e9b7fd59ad23" name="Operational Capabilities"/> + id="516ff2ff-ed2f-4d50-bd20-fae7043f3768" name="Interfaces"/> - + - + id="aa4df9eb-c380-46cd-b4dc-52a8af143f18" name="System Analysis"> + id="ab711420-0d8e-4519-8f66-900a56ea4e2c" name="System Functions"> + id="d77a65b1-c7d7-4b28-a447-263db3d364f7" name="Root System Function"> + id="f8115746-8be6-4fab-8a6f-83a11eb951ae" targetElement="#d44f84fd-641f-432f-bfba-8e1aaf2c0061" + sourceElement="#d77a65b1-c7d7-4b28-a447-263db3d364f7"/> + id="233143e9-d7db-46e7-a845-35ab4b4d6022" name="Capabilities"/> + id="2652b786-e2ec-4a7c-b4c0-427544b42014" name="Interfaces"/> + id="e9be42bd-ab7e-46d8-b038-16ef7fd3b107" name="Data"> + id="dd2431b4-0d63-40d0-81c2-ad13ee089e91" name="Predefined Types"> + id="42f3489c-be18-41a8-b75e-4822038e54c1" name="Boolean" visibility="PUBLIC"> + id="36f2c8ee-a3e1-4fa3-a9a7-476c34fe6d56" name="False" abstractType="#42f3489c-be18-41a8-b75e-4822038e54c1"/> + id="cfe5289a-e8aa-41c3-a262-6c6e8853d440" name="Byte" visibility="PUBLIC"> + id="5788cf7a-f121-4454-9ba0-6a7b67fe9dfd" name="Char" visibility="PUBLIC"> + id="27618720-b473-41ae-a9cc-01d18faa6327" name="Hexadecimal" visibility="PUBLIC"> + id="9ff59401-a8af-413f-a46d-79c9ce1d0813" operator="POW"> + id="c6b0b899-61d1-4e6b-afe0-69e621e8ceb5" value="2"/> + id="b67ac850-bfad-46a3-8398-dc28946bf223" value="64"/> + id="d1684cfe-2079-44df-b90b-1be03220abee" value="1"/> + id="79e43c15-c198-4fe1-9bd2-4161103f8571" name="Integer" visibility="PUBLIC"/> + id="7977e5af-ec03-4513-9216-0079401da776" name="Long" visibility="PUBLIC"/> + id="88d029ef-dae8-4887-8366-fe9f6e61207f" name="LongLong" visibility="PUBLIC"/> + id="8919db0b-edbb-440d-93e7-356a7d9534c2" name="Short" visibility="PUBLIC"/> + id="065c64cb-9f8f-4047-9a79-e98faa4c9023" name="String" visibility="PUBLIC"/> - + id="79be56c1-8df6-4b4d-936e-a9c62943e6f5" name="Structure"> + + id="630bd676-ef8d-4fdb-b4cd-c89bd6cb5ec7" name="System"> + id="0d11eb68-a108-4588-9a85-5f13726eecef" name="System State Machine"> + id="ce592997-8a9f-4f7f-8d71-873f1f61b73c" name="Default Region"/> - + id="1f09ed13-7b4b-40ae-8a74-6a9677c21df2" targetElement="#5f580949-a4d9-44e1-9030-57b2fe88ba96" + sourceElement="#aa4df9eb-c380-46cd-b4dc-52a8af143f18"/> + id="f7cf548e-e1b4-4ddf-8a2d-b540a405c959" name="Logical Architecture"> + id="841fb175-4bce-4b84-813e-660206175117" name="Logical Functions"> + id="5b388c8c-6a73-4269-a049-609a889261f9" name="Root Logical Function"> + id="5a294117-4389-4479-b177-a8915f32ad19" targetElement="#d77a65b1-c7d7-4b28-a447-263db3d364f7" + sourceElement="#5b388c8c-6a73-4269-a049-609a889261f9"/> + id="d908c818-6974-4542-8df9-b28265c14285" name="Capabilities"/> + id="bcf527cb-d41c-4c56-974c-763467444e4f" name="Interfaces"/> + id="cdb4244d-6a0b-4d97-be0c-8e0438543147" name="Data"/> - + id="a1468d2b-6975-415d-adaa-2f50b18d079c" name="Structure"> + + id="92945046-44b7-462d-89e4-de17e5bd9771" name="Logical System"> + id="dbd68cf4-12b3-4a1e-94f8-eccf47de2717" targetElement="#630bd676-ef8d-4fdb-b4cd-c89bd6cb5ec7" + sourceElement="#92945046-44b7-462d-89e4-de17e5bd9771"/> + id="623e4114-d7a5-4ab1-94a5-fcd432bfdb4a" targetElement="#aa4df9eb-c380-46cd-b4dc-52a8af143f18" + sourceElement="#f7cf548e-e1b4-4ddf-8a2d-b540a405c959"/> + id="32c1305d-ff95-4747-b3e7-8b4bcfb3a8d8" name="Physical Architecture"> + id="e2f67725-9756-409e-a4ee-034834ef29a3" name="Physical Functions"> + id="fb90bd50-e1af-42b7-8105-a9418cc74976" name="Root Physical Function"> + id="7d4b9de7-dc07-4876-9bc7-2a516d1e60c2" targetElement="#5b388c8c-6a73-4269-a049-609a889261f9" + sourceElement="#fb90bd50-e1af-42b7-8105-a9418cc74976"/> + id="6345098a-ac99-4381-8734-fee89dbab356" name="Capabilities"/> + id="c838dff2-8ce7-44c4-b6a7-40a355b62697" name="Interfaces"/> + id="0915ab49-cd39-4a2c-9be5-6e199ba95369" name="Data"/> - + id="11955b42-05d1-4afd-a9b8-d36788843d6d" name="Structure"> + + id="c45fd02b-ad62-468e-8b3f-bbf50ddd6f54" name="Physical System"> + id="785e4a0b-0ecb-40bd-a5b1-d07a1d6f7e9c" targetElement="#92945046-44b7-462d-89e4-de17e5bd9771" + sourceElement="#c45fd02b-ad62-468e-8b3f-bbf50ddd6f54"/> + id="6110d3f2-35eb-4bda-9e5f-6c28365356eb" targetElement="#f7cf548e-e1b4-4ddf-8a2d-b540a405c959" + sourceElement="#32c1305d-ff95-4747-b3e7-8b4bcfb3a8d8"/> + id="4b3b2f1e-544d-4026-8777-c506a3f97c7b" name="EPBS Architecture"> + id="b47eba4e-c34a-47cd-ac9c-4e6ffd4e81a3" name="Capabilities"/> - + id="3d9bc68a-57a6-42a5-8ec1-749e055714c1" name="Structure"> + + id="21d2ef2b-230f-4b65-ba09-ef58726dc368" name="System" kind="SystemCI"> + id="108fc8c1-e3e7-466c-8ed0-86de3ab7d1b3" targetElement="#c45fd02b-ad62-468e-8b3f-bbf50ddd6f54" + sourceElement="#21d2ef2b-230f-4b65-ba09-ef58726dc368"/> + id="d1d8adf3-b644-4b0e-8515-6422db1d7892" targetElement="#32c1305d-ff95-4747-b3e7-8b4bcfb3a8d8" + sourceElement="#4b3b2f1e-544d-4026-8777-c506a3f97c7b"/> diff --git a/docs/examples/data/model/model.capella.license b/docs/examples/data/model/model.capella.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/docs/examples/data/model/model.capella.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/tests/data/msgs/MultiArrayLayout.msg b/docs/examples/data/model_msgs/msg/MultiArrayLayout.msg similarity index 99% rename from tests/data/msgs/MultiArrayLayout.msg rename to docs/examples/data/model_msgs/msg/MultiArrayLayout.msg index bcf7172..c9aac7b 100644 --- a/tests/data/msgs/MultiArrayLayout.msg +++ b/docs/examples/data/model_msgs/msg/MultiArrayLayout.msg @@ -1,6 +1,6 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 - +# # The multiarray declares a generic multi-dimensional array of a # particular data type. Dimensions are ordered from outer most # to inner most. diff --git a/tests/data/msgs/UInt64MultiArray.msg b/docs/examples/data/model_msgs/msg/UInt64MultiArray.msg similarity index 99% rename from tests/data/msgs/UInt64MultiArray.msg rename to docs/examples/data/model_msgs/msg/UInt64MultiArray.msg index 195d64c..3f2aa22 100644 --- a/tests/data/msgs/UInt64MultiArray.msg +++ b/docs/examples/data/model_msgs/msg/UInt64MultiArray.msg @@ -1,6 +1,6 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 - +# # Please look at the MultiArrayLayout message definition for # documentation on all multiarrays. diff --git a/tests/data/msgs/sub_msgs/MultiArrayDimension.msg b/docs/examples/data/model_msgs/msg/sub_msgs/MultiArrayDimension.msg similarity index 100% rename from tests/data/msgs/sub_msgs/MultiArrayDimension.msg rename to docs/examples/data/model_msgs/msg/sub_msgs/MultiArrayDimension.msg diff --git a/tests/data/msgs/types/ObjectTypes.msg b/docs/examples/data/model_msgs/msg/types/ObjectTypes.msg similarity index 84% rename from tests/data/msgs/types/ObjectTypes.msg rename to docs/examples/data/model_msgs/msg/types/ObjectTypes.msg index 2967af8..52fb5cd 100644 --- a/tests/data/msgs/types/ObjectTypes.msg +++ b/docs/examples/data/model_msgs/msg/types/ObjectTypes.msg @@ -1,6 +1,6 @@ # SPDX-FileCopyrightText: Copyright DB Netz AG # SPDX-License-Identifier: Apache-2.0 - +# # ObjectTypes # # Created: 2020-04-15 @@ -9,6 +9,6 @@ # # Description: List of object motion types, classes, types, and subtypes. -uint8 OBJECT_MOTION_TYPE_UNDEFINED = 0 +uint8 OBJECT_MOTION_TYPE_UNDEFINED = 0 # undefined uint8 OBJECT_MOTION_TYPE_STATIC = 1 uint8 OBJECT_MOTION_TYPE_DYNAMIC = 2 diff --git a/docs/examples/example_parse_capella.ipynb b/docs/examples/example_parse_capella.ipynb new file mode 100644 index 0000000..2d039fe --- /dev/null +++ b/docs/examples/example_parse_capella.ipynb @@ -0,0 +1,418 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "Property values are not available in this model\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" + ] + } + ], + "source": [ + "! python -m capella_ros_tools --overlap=overwrite data/model_msgs data/model la" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "from capella_ros_tools.modules.parse_capella import ParseCapella" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "Property values are not available in this model\n" + ] + } + ], + "source": [ + "model = ParseCapella(\"data/model\", \"la\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'basic_types', 'model_msgs', 'ros_interfaces'}" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.get_packages(model.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'sub_msgs', 'types'}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_msgs = model.data.packages.by_name(\"model_msgs\")\n", + "model.get_packages(model_msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'UInt64MultiArray': (Markup('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nPlease look at the MultiArrayLayout message definition for\\ndocumentation on all multiarrays.'),\n", + " [MsgProp(name='layout', type='MultiArrayLayout', typedir='', min=1, max=1, comment=Markup('specification of data layout')),\n", + " MsgProp(name='data', type='uint64', typedir='', min=0, max=inf, comment=Markup('array of data'))]),\n", + " 'MultiArrayLayout': (Markup('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.'),\n", + " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min=0, max=inf, comment=Markup('Array of dimension properties')),\n", + " MsgProp(name='data_offset', type='uint8', typedir='', min=1, max=1, comment=Markup('cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX'))])}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.get_classes(model_msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'action_msgs',\n", + " 'actionlib_msgs',\n", + " 'builtin_interfaces',\n", + " 'diagnostic_msgs',\n", + " 'geometry_msgs',\n", + " 'lifecycle_msgs',\n", + " 'nav_msgs',\n", + " 'rcl_interfaces',\n", + " 'rosgraph_msgs',\n", + " 'sensor_msgs',\n", + " 'service_msgs',\n", + " 'shape_msgs',\n", + " 'statistics_msgs',\n", + " 'std_msgs',\n", + " 'stereo_msgs',\n", + " 'test_msgs',\n", + " 'trajectory_msgs',\n", + " 'type_description_interfaces',\n", + " 'visualization_msgs'}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ros_interfaces = model.data.packages.by_name(\"ros_interfaces\")\n", + "model.get_packages(ros_interfaces)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'OBJECT_MOTION_TYPE': (Markup('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.'),\n", + " [EnumProp(name='UNDEFINED', type='uint8', value=0, comment=Markup('undefined')),\n", + " EnumProp(name='STATIC', type='uint8', value=1, comment=''),\n", + " EnumProp(name='DYNAMIC', type='uint8', value=2, comment='')])}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model_types = model_msgs.packages.by_name(\"types\")\n", + "model.get_types(model_types)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/example_parse_capella.ipynb.license b/docs/examples/example_parse_capella.ipynb.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/docs/examples/example_parse_capella.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/example_parse_message.ipynb b/docs/examples/example_parse_message.ipynb new file mode 100644 index 0000000..bd131c7 --- /dev/null +++ b/docs/examples/example_parse_message.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from capella_ros_tools.modules.parse_message import ParseMessagesPkg, ParseMessageDef\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "({},\n", + " {'model_msgs': ({'UInt64MultiArray': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nPlease look at the MultiArrayLayout message definition for\\ndocumentation on all multiarrays.',\n", + " [MsgProp(name='layout', type='MultiArrayLayout', typedir='', min='1', max='1', comment='specification of data layout'),\n", + " MsgProp(name='data', type='uint64', typedir='', min='0', max='', comment='array of data')]),\n", + " 'MultiArrayLayout': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.',\n", + " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min='0', max='', comment='Array of dimension properties'),\n", + " MsgProp(name='data_offset', type='OBJECT_MOTION_TYPE', typedir='', min='1', max='1', comment='cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX')])},\n", + " {'sub_msgs': ({'MultiArrayDimension': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0',\n", + " [MsgProp(name='label', type='string', typedir='', min='1', max='1', comment='label of given dimension'),\n", + " MsgProp(name='size', type='uint32', typedir='', min='1', max='1', comment='size of given dimension (in type units)'),\n", + " MsgProp(name='stride', type='uint32', typedir='', min='1', max='1', comment='stride of given dimension')])},\n", + " {}),\n", + " 'types': ({'OBJECT_MOTION_TYPE': ('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.',\n", + " [EnumProp(name='UNDEFINED', type='uint8', value='0', comment='undefined'),\n", + " EnumProp(name='STATIC', type='uint8', value='1', comment=''),\n", + " EnumProp(name='DYNAMIC', type='uint8', value='2', comment='')])},\n", + " {})})})" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "folders = ParseMessagesPkg.from_pkg_folders(Path(\"data/model_msgs\"))\n", + "folders.as_structs" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "({'UInt64MultiArray': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nPlease look at the MultiArrayLayout message definition for\\ndocumentation on all multiarrays.',\n", + " [MsgProp(name='layout', type='MultiArrayLayout', typedir='', min='1', max='1', comment='specification of data layout'),\n", + " MsgProp(name='data', type='uint64', typedir='', min='0', max='', comment='array of data')]),\n", + " 'MultiArrayLayout': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.',\n", + " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min='0', max='', comment='Array of dimension properties'),\n", + " MsgProp(name='data_offset', type='OBJECT_MOTION_TYPE', typedir='', min='1', max='1', comment='cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX')])},\n", + " {'sub_msgs': ({'MultiArrayDimension': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0',\n", + " [MsgProp(name='label', type='string', typedir='', min='1', max='1', comment='label of given dimension'),\n", + " MsgProp(name='size', type='uint32', typedir='', min='1', max='1', comment='size of given dimension (in type units)'),\n", + " MsgProp(name='stride', type='uint32', typedir='', min='1', max='1', comment='stride of given dimension')])},\n", + " {}),\n", + " 'types': ({'OBJECT_MOTION_TYPE': ('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.',\n", + " [EnumProp(name='UNDEFINED', type='uint8', value='0', comment='undefined'),\n", + " EnumProp(name='STATIC', type='uint8', value='1', comment=''),\n", + " EnumProp(name='DYNAMIC', type='uint8', value='2', comment='')])},\n", + " {})})" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "folder = ParseMessagesPkg.from_msg_folder(Path(\"data/model_msgs/msg\"))\n", + "folder.as_structs" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.',\n", + " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min='0', max='', comment='Array of dimension properties'),\n", + " MsgProp(name='data_offset', type='OBJECT_MOTION_TYPE', typedir='', min='1', max='1', comment='cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX')])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "msg_file = ParseMessageDef.from_msg_file(Path(\"data/model_msgs/msg/MultiArrayLayout.msg\"))\n", + "msg_file[0].as_struct" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.',\n", + " [EnumProp(name='UNDEFINED', type='uint8', value='0', comment='undefined'),\n", + " EnumProp(name='STATIC', type='uint8', value='1', comment=''),\n", + " EnumProp(name='DYNAMIC', type='uint8', value='2', comment='')])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type_file = ParseMessageDef.from_type_file(Path(\"data/model_msgs/msg/types/ObjectTypes.msg\"))\n", + "type_file[0].as_struct" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/example_parse_message.ipynb.license b/docs/examples/example_parse_message.ipynb.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/docs/examples/example_parse_message.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/example_serialize_capella.ipynb b/docs/examples/example_serialize_capella.ipynb new file mode 100644 index 0000000..70d5a26 --- /dev/null +++ b/docs/examples/example_serialize_capella.ipynb @@ -0,0 +1,382 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from capella_ros_tools.modules.serialize_capella import SerializeCapella\n", + "from capella_ros_tools.modules import MsgProp" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "Property values are not available in this model\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" + ] + } + ], + "source": [ + "model = SerializeCapella(\"data/empty_model\", \"la\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
  1. DataPkg "basic_types" (9b3009e8-fad5-4b3b-9f8e-25d2da9d8709)
" + ], + "text/plain": [ + "[0] " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.data.packages" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" + ] + } + ], + "source": [ + "packages = {\"test\", \"test2\"}\n", + "model.create_packages(packages, model.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
  1. DataPkg "basic_types" (9b3009e8-fad5-4b3b-9f8e-25d2da9d8709)
  2. DataPkg "test2" (0bb61f0f-a3d2-42e4-85f2-6a3b8b7c74df)
  3. DataPkg "test" (9a44dc40-b7be-479d-a5e7-3d7cb1537d1c)
" + ], + "text/plain": [ + "[0] \n", + "[1] \n", + "[2] " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.data.packages" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" + ] + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "classes = {\n", + " \"class1\": (\"desc1\", []),\n", + " \"class2\": (\"desc2\", []),\n", + "}\n", + "model.create_classes(classes, model.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
  1. Class "class1" (2ab1170f-981a-4758-bc1f-a4e9a0b7733d)
  2. Class "class2" (c1629904-002a-47b7-8f33-935cbea6efb8)
" + ], + "text/plain": [ + "[0] \n", + "[1] " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.data.classes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we try creating the same classes again, instead of creating duplicates we get a list of the overlapping classes." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "overlap = model.create_classes(classes, model.data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we call delete_classes with the overlap, we can see that the classes are deleted." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

(Empty list)

" + ], + "text/plain": [ + "[]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.delete_classes(overlap, model.data)\n", + "model.data.classes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But let's create them again, because we still need them." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" + ] + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.create_classes(classes, model.data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Right now our classes don't have any properties. So let's create them.\\\n", + "For compositions use create_composition:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.create_composition(\"class1\", MsgProp(\"prop1\", \"class2\", \"\", \"1\", \"1\", \"prop_desc1\"), model.data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For attributes use create_attribute:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", + "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" + ] + } + ], + "source": [ + "model.create_attribute(\"class2\", MsgProp(\"prop2\", \"uint8\", \"\", \"1\", \"1\", \"prop_desc2\"), model.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

prop1 (org.polarsys.capella.core.data.information:Property)

applied_property_value_groups

(Empty list)

applied_property_values

(Empty list)

associationBackreference to Association - omitted: can be slow to compute. Display this property directly to show.
constraints

(Empty list)

default_valueNone
descriptionprop_desc1
filtering_criteria

(Empty list)

is_abstractFalse
is_derivedFalse
is_orderedFalse
is_part_of_keyFalse
is_read_onlyFalse
is_staticFalse
is_uniqueFalse
kind<AggregationKind.COMPOSITION: 4>
maxNone
max_cardLiteralNumericValue "": 1 (a6d6b4a4-861f-4b77-9e03-46b99e45c9c3)
minNone
min_cardLiteralNumericValue "": 1 (265e184c-106b-4038-977b-95893741487d)
nameprop1
null_valueNone
parentClass "class1" (7950d11b-6012-4bee-96bf-539f1adf1815)
progress_statusNOT_SET
property_value_groups

(Empty list)

property_values

(Empty list)

requirements

(Empty list)

summaryNone
traces

(Empty list)

typeClass "class2" (7b4a44d0-2257-49a4-9d3c-39828d3589bb)
uuid7aacd84a-8f22-416b-ac88-d21ed8dc1abf
visibility<VisibilityKind.UNSET: 1>
xtypeorg.polarsys.capella.core.data.information:Property
" + ], + "text/plain": [ + "\n", + ".applied_property_value_groups = []\n", + ".applied_property_values = []\n", + ".association = ... # backreference to Association - omitted: can be slow to compute\n", + ".constraints = []\n", + ".default_value = None\n", + ".description = Markup('prop_desc1')\n", + ".filtering_criteria = []\n", + ".is_abstract = False\n", + ".is_derived = False\n", + ".is_ordered = False\n", + ".is_part_of_key = False\n", + ".is_read_only = False\n", + ".is_static = False\n", + ".is_unique = False\n", + ".kind = \n", + ".max = None\n", + ".max_card = \n", + ".min = None\n", + ".min_card = \n", + ".name = 'prop1'\n", + ".null_value = None\n", + ".parent = \n", + ".progress_status = 'NOT_SET'\n", + ".property_value_groups = []\n", + ".property_values = []\n", + ".requirements = []\n", + ".summary = None\n", + ".traces = []\n", + ".type = \n", + ".uuid = '7aacd84a-8f22-416b-ac88-d21ed8dc1abf'\n", + ".visibility = \n", + ".xtype = 'org.polarsys.capella.core.data.information:Property'" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.data.classes[0].owned_properties[0]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/example_serialize_capella.ipynb.license b/docs/examples/example_serialize_capella.ipynb.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/docs/examples/example_serialize_capella.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/example_serialize_message.ipynb b/docs/examples/example_serialize_message.ipynb new file mode 100644 index 0000000..8a49d86 --- /dev/null +++ b/docs/examples/example_serialize_message.ipynb @@ -0,0 +1,76 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from capella_ros_tools.modules.serialize_message import SerializeMessagesPkg, SerializeMessageDef\n", + "from capella_ros_tools.modules import MsgProp, EnumProp\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "messages = {\n", + " \"class1\": SerializeMessageDef(\n", + " \"class1\", \"desc1\", [MsgProp(\"prop1\", \"class2\", \"\", \"1\", \"1\", \"prop_desc1\")]\n", + " ),\n", + " \"class2\": SerializeMessageDef(\n", + " \"class2\", \"desc2\", [MsgProp(\"prop2\", \"uint8\", \"\", \"1\", \"1\", \"prop_desc2\")]\n", + " ),\n", + "}\n", + "types = {\n", + " \"type1\": SerializeMessageDef(\"type1\", \"type_desc1\", [EnumProp(\"value1\", \"uint8\", \"12\", \"enum value desc\")]),\n", + "}\n", + "packages = {\n", + " \"types\": SerializeMessagesPkg(types, {}),\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "folder = SerializeMessagesPkg(messages, packages)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "folder.to_msg_folder(Path(\"data/test\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/examples/example_serialize_message.ipynb.license b/docs/examples/example_serialize_message.ipynb.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/docs/examples/example_serialize_message.ipynb.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/tests/data/empty_model/ros_msgs.aird b/tests/data/empty_model/ros_msgs.aird deleted file mode 100644 index 81c024f..0000000 --- a/tests/data/empty_model/ros_msgs.aird +++ /dev/null @@ -1,74 +0,0 @@ - - - - ros_msgs.afm - ros_msgs.capella - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/data/model/ros_msgs.afm.license b/tests/data/model/ros_msgs.afm.license deleted file mode 100644 index c3fb022..0000000 --- a/tests/data/model/ros_msgs.afm.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/model/ros_msgs.aird b/tests/data/model/ros_msgs.aird deleted file mode 100644 index 81c024f..0000000 --- a/tests/data/model/ros_msgs.aird +++ /dev/null @@ -1,74 +0,0 @@ - - - - ros_msgs.afm - ros_msgs.capella - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/data/model/ros_msgs.aird.license b/tests/data/model/ros_msgs.aird.license deleted file mode 100644 index c3fb022..0000000 --- a/tests/data/model/ros_msgs.aird.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/model/ros_msgs.capella b/tests/data/model/ros_msgs.capella deleted file mode 100644 index db4693b..0000000 --- a/tests/data/model/ros_msgs.capella +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/data/model/ros_msgs.capella.license b/tests/data/model/ros_msgs.capella.license deleted file mode 100644 index c3fb022..0000000 --- a/tests/data/model/ros_msgs.capella.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: Apache-2.0 From 02a5cc9803b2f9bd587cc3adf110fc00b15b9a5a Mon Sep 17 00:00:00 2001 From: freshavocado7 Date: Thu, 30 Nov 2023 14:51:43 +0100 Subject: [PATCH 08/47] chore: Update toml file --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 27a0b29..74d9840 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ ] dependencies = [ "click", - "capellambse @ git+https://github.com/DSD-DBS/py-capellambse.git@roletag-create", + "capellambse", ] [project.urls] From 861dc4decd800619f00291ee47e93e5cbde85625 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 15 Dec 2023 14:28:30 +0100 Subject: [PATCH 09/47] feat: Import from git --- .github/workflows/build-test-publish.yml | 134 +- .github/workflows/docs.yml | 62 +- .github/workflows/lint.yml | 68 +- .gitignore | 3 - .gitmodules | 8 +- CONTRIBUTING.md | 7 +- README.md | 4 +- capella_ros_tools/__init__.py | 5 +- capella_ros_tools/__main__.py | 103 +- capella_ros_tools/display/__init__.py | 3 + capella_ros_tools/display/app.py | 67 + .../display/static/icons/favicon.ico | Bin 0 -> 1150 bytes .../display/static/icons/favicon.ico.license | 2 + capella_ros_tools/display/static/styles.css | 153 ++ .../display/templates/class.html | 63 + capella_ros_tools/display/templates/enum.html | 56 + .../display/templates/package.html | 92 ++ capella_ros_tools/modules/__init__.py | 58 +- capella_ros_tools/modules/capella/__init__.py | 57 + capella_ros_tools/modules/capella/parser.py | 70 + .../modules/capella/serializer.py | 221 +++ .../modules/messages/__init__.py | 120 ++ capella_ros_tools/modules/messages/parser.py | 317 ++++ .../modules/messages/serializer.py | 38 + capella_ros_tools/scripts/__init__.py | 4 + capella_ros_tools/scripts/capella2msg.py | 35 + capella_ros_tools/scripts/msg2capella.py | 184 +++ docs/source/examples/Convert messages.ipynb | 1276 +++++++++++++++++ .../examples/Convert messages.ipynb.license | 2 + docs/source/examples/Parse messages.ipynb | 312 ++++ .../examples/Parse messages.ipynb.license | 2 + .../examples/data/empty_project_52/.project | 12 + .../data/empty_project_52/.project.license | 2 + .../empty_project_52/empty_project_52.afm | 4 + .../empty_project_52.afm.license | 2 + .../empty_project_52/empty_project_52.aird | 29 + .../empty_project_52.aird.license | 2 + .../empty_project_52/empty_project_52.capella | 272 ++++ .../empty_project_52.capella.license | 2 + pyproject.toml | 15 +- tests/test_capella_ros_tools.py | 8 + 41 files changed, 3660 insertions(+), 214 deletions(-) create mode 100644 capella_ros_tools/display/__init__.py create mode 100644 capella_ros_tools/display/app.py create mode 100644 capella_ros_tools/display/static/icons/favicon.ico create mode 100644 capella_ros_tools/display/static/icons/favicon.ico.license create mode 100644 capella_ros_tools/display/static/styles.css create mode 100644 capella_ros_tools/display/templates/class.html create mode 100644 capella_ros_tools/display/templates/enum.html create mode 100644 capella_ros_tools/display/templates/package.html create mode 100644 capella_ros_tools/modules/capella/__init__.py create mode 100644 capella_ros_tools/modules/capella/parser.py create mode 100644 capella_ros_tools/modules/capella/serializer.py create mode 100644 capella_ros_tools/modules/messages/__init__.py create mode 100644 capella_ros_tools/modules/messages/parser.py create mode 100644 capella_ros_tools/modules/messages/serializer.py create mode 100644 capella_ros_tools/scripts/__init__.py create mode 100644 capella_ros_tools/scripts/capella2msg.py create mode 100644 capella_ros_tools/scripts/msg2capella.py create mode 100644 docs/source/examples/Convert messages.ipynb create mode 100644 docs/source/examples/Convert messages.ipynb.license create mode 100644 docs/source/examples/Parse messages.ipynb create mode 100644 docs/source/examples/Parse messages.ipynb.license create mode 100644 docs/source/examples/data/empty_project_52/.project create mode 100644 docs/source/examples/data/empty_project_52/.project.license create mode 100644 docs/source/examples/data/empty_project_52/empty_project_52.afm create mode 100644 docs/source/examples/data/empty_project_52/empty_project_52.afm.license create mode 100644 docs/source/examples/data/empty_project_52/empty_project_52.aird create mode 100644 docs/source/examples/data/empty_project_52/empty_project_52.aird.license create mode 100644 docs/source/examples/data/empty_project_52/empty_project_52.capella create mode 100644 docs/source/examples/data/empty_project_52/empty_project_52.capella.license create mode 100644 tests/test_capella_ros_tools.py diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index 25618e2..5b03088 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -4,73 +4,73 @@ name: Build on: - push: - branches: ["*"] - pull_request: [master] - tags: ["v*.*.*"] + push: + branches: ["*"] + pull_request: [master] + tags: ["v*.*.*"] jobs: - test: - name: Test with Python ${{matrix.python_version}} on ${{matrix.os}} - runs-on: ${{matrix.os}} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - python_version: - - "3.10" - - "3.11" - include: - - os: windows-latest - python_version: "3.10" - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{matrix.python_version}} - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.python_version}} - - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{runner.os}}-pip-${{hashFiles('pyproject.toml')}} - restore-keys: | - ${{runner.os}}-pip- - ${{runner.os}}- - - name: Upgrade Pip - run: |- - python -m pip install -U pip - - name: Install test dependencies - run: |- - python -m pip install '.[test]' - - name: Run unit tests - run: |- - python -m pytest --cov-report=term --cov=capella_ros_tools --rootdir=. + test: + name: Test with Python ${{matrix.python_version}} on ${{matrix.os}} + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python_version: + - "3.9" + - "3.10" + include: + - os: windows-latest + python_version: "3.9" + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{matrix.python_version}} + uses: actions/setup-python@v2 + with: + python-version: ${{matrix.python_version}} + - uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{runner.os}}-pip-${{hashFiles('pyproject.toml')}} + restore-keys: | + ${{runner.os}}-pip- + ${{runner.os}}- + - name: Upgrade Pip + run: |- + python -m pip install -U pip + - name: Install test dependencies + run: |- + python -m pip install '.[test]' + - name: Run unit tests + run: |- + python -m pytest --cov-report=term --cov=capella_ros_tools --rootdir=. - publish: - name: Publish artifacts - runs-on: ubuntu-latest - needs: test - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Install dependencies - run: |- - python -m pip install -U pip - python -m pip install build twine - - name: Build packages - run: |- - python -m build - - name: Verify packages - run: |- - python -m twine check dist/* - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: Artifacts - path: 'dist/*' - - name: Publish to PyPI (release only) - if: startsWith(github.ref, 'refs/tags/v') - run: python -m twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --non-interactive dist/* + publish: + name: Publish artifacts + runs-on: ubuntu-latest + needs: test + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: "3.9" + - name: Install dependencies + run: |- + python -m pip install -U pip + python -m pip install build twine + - name: Build packages + run: |- + python -m build + - name: Verify packages + run: |- + python -m twine check dist/* + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: Artifacts + path: "dist/*" + - name: Publish to PyPI (release only) + if: startsWith(github.ref, 'refs/tags/v') + run: python -m twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --non-interactive dist/* diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7d57a32..45fe026 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -4,36 +4,36 @@ name: Docs on: - push: - branches: ["master"] + push: + branches: ["master"] jobs: - sphinx: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Upgrade pip - run: | - python -m pip install -U pip - - name: Install dependencies - run: | - python -m pip install '.[docs]' - - name: Auto-generate APIDOC sources - run: |- - sphinx-apidoc --output-dir docs/source/code --force . - - name: Create docs - run: | - make -C docs html - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - with: - force_orphan: true - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/build/html + sphinx: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-python@v2 + with: + python-version: "3.9" + - name: Upgrade pip + run: | + python -m pip install -U pip + - name: Install dependencies + run: | + python -m pip install '.[docs]' + - name: Auto-generate APIDOC sources + run: |- + sphinx-apidoc --output-dir docs/source/code --force . + - name: Create docs + run: | + make -C docs html + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + force_orphan: true + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./docs/build/html diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f4ef5e6..1decfee 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -4,39 +4,39 @@ name: Lint on: - push: - branches: ["*"] + push: + branches: ["*"] jobs: - pre-commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Upgrade pip - run: |- - python -m pip install -U pip - - name: Install pre-commit - run: |- - python -m pip install pre-commit types-docutils - - name: Run Pre-Commit - run: |- - pre-commit run --all-files - pylint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Upgrade pip - run: |- - python -m pip install -U pip - - name: Install pylint - run: |- - python -m pip install pylint - - name: Run pylint - run: |- - pylint -dfixme capella_ros_tools || exit $(($? & ~24)) + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: "3.9" + - name: Upgrade pip + run: |- + python -m pip install -U pip + - name: Install pre-commit + run: |- + python -m pip install pre-commit types-docutils + - name: Run Pre-Commit + run: |- + pre-commit run --all-files + pylint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: "3.9" + - name: Upgrade pip + run: |- + python -m pip install -U pip + - name: Install pylint + run: |- + python -m pip install pylint + - name: Run pylint + run: |- + pylint -dfixme capella_ros_tools || exit $(($? & ~24)) diff --git a/.gitignore b/.gitignore index 4baa4a1..975287e 100644 --- a/.gitignore +++ b/.gitignore @@ -137,9 +137,6 @@ venv.bak/ .spyderproject .spyproject -# VS Code settings -.vscode/ - # Rope project settings .ropeproject diff --git a/.gitmodules b/.gitmodules index 80c8b4c..b2e01b9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: CC0-1.0 -[submodule "capella_ros_tools/ros_interfaces/common_interfaces"] - path = capella_ros_tools/ros_interfaces/common_interfaces +[submodule "common_interfaces"] + path = capella_ros_tools/msg_to_capella/ros_interfaces/common_interfaces url = https://github.com/ros2/common_interfaces.git -[submodule "capella_ros_tools/ros_interfaces/rcl_interfaces"] - path = capella_ros_tools/ros_interfaces/rcl_interfaces +[submodule "rcl_interfaces"] + path = capella_ros_tools/msg_to_capella/ros_interfaces/rcl_interfaces url = https://github.com/ros2/rcl_interfaces.git diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a4c73a..3bd1561 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -123,7 +123,12 @@ The key differences are: typing related classes like `t.TypedDict`. - Use the new syntax and classes for typing introduced with Python 3.10. + Use the new syntax and classes for typing introduced with Python 3.10 and available using + `from __future__ import annotations` since Python 3.8. + + Be aware however that this only works in the context of annotations; the code + still needs to run on Python 3.9! This means that in some (rare) cases, you _must_ use the + old-style type hints. - Instead of `t.Tuple`, `t.List` etc. use the builtin classes `tuple`, `list` etc. diff --git a/README.md b/README.md index 0c89465..6f3eed9 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/build-test-publish.yml/badge.svg) ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) -Tools for using ROS with Capella +API and scripts to parse .msg files and convert them to Capella # Documentation @@ -26,7 +26,7 @@ To set up a development environment, clone the project and install it into a virtual environment. ```sh -git clone --recurse-submodules https://github.com/DSD-DBS/capella-ros-tools +git clone https://github.com/DSD-DBS/capella-ros-tools cd capella-ros-tools python -m venv .venv diff --git a/capella_ros_tools/__init__.py b/capella_ros_tools/__init__.py index ef599ea..c41de8b 100644 --- a/capella_ros_tools/__init__.py +++ b/capella_ros_tools/__init__.py @@ -1,10 +1,11 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""The capella-ros-tools package.""" +"""The capella_ros_tools package.""" + from importlib import metadata try: - __version__ = metadata.version("capella-ros-tools") + __version__ = metadata.version("capella_ros_tools") except metadata.PackageNotFoundError: # pragma: no cover __version__ = "0.0.0+unknown" del metadata diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 2c78dbd..30f124c 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -1,12 +1,17 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""Main entry point into capella-ros-tools.""" +"""Main entry point into capella_ros_tools.""" + +import sys +import typing as t +from pathlib import Path + +import capellambse import click import capella_ros_tools -from capella_ros_tools.msg2capella import msg2capella - -# from capella_ros_tools.capella2msg import capella2msg +from capella_ros_tools.display import app +from capella_ros_tools.scripts import capella2msg, msg2capella @click.command() @@ -15,10 +20,92 @@ prog_name="capella-ros-tools", message="%(prog)s %(version)s", ) -def main(): - """Console script for capella-ros-tools.""" +@click.option( + "--exists-action", + "action", + type=click.Choice(["k", "o", "a"], case_sensitive=False), + default="c" if sys.stdin.isatty() else "a", + help="Default action when an element already exists: (k)eep, (o)verwrite, (a)bort.", +) +@click.option("--port", "-p", type=int, help="Port for HTML display.") +@click.option( + "--in", + "-i", + "in_", + nargs=2, + type=(click.Choice(["capella", "messages"]), str), + required=True, + help="Input file type and path.", +) +@click.option( + "--out", + "-o", + nargs=2, + type=( + click.Choice(["capella", "messages"]), + click.Path(exists=True, path_type=Path), + ), + required=True, + help="Output file type and path.", +) +@click.option( + "--layer", + "-l", + type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=True), + required=True, + help="Layer to use.", +) +@click.option( + "--no-deps", + "no_deps", + is_flag=True, + help="Don’t install message dependencies.", +) +def cli( + in_: tuple[str, str], + out: tuple[str, str], + layer: str, + action: str, + port: int, + no_deps: bool, +): + """Convert between Capella and ROS message definitions.""" + input_type, input_path = in_ + output_type, output = out + + if input_type == output_type: + raise click.UsageError( + "Input and output must be different file types." + ) + if "capella" not in (input_type, output_type): + raise click.UsageError( + "Either input or output must be a capella file." + ) + if "messages" not in (input_type, output_type): + raise click.UsageError( + "Either input or output must be a messages file." + ) + + input: t.Any = Path(input_path) + + input = ( + input + if input.exists() + else capellambse.filehandler.get_filehandler(input_path).rootdir + ) + + msg_path, capella_path, convert_class = ( + (input, output, msg2capella.Converter) + if input_type == "messages" + else (output, input, capella2msg.Converter) + ) + + converter = convert_class(msg_path, capella_path, layer, action, no_deps) + converter.convert() + + if port: + app.start(converter.model.model, layer, port) if __name__ == "__main__": - msg2capella() - # capella2msg() + cli() diff --git a/capella_ros_tools/display/__init__.py b/capella_ros_tools/display/__init__.py new file mode 100644 index 0000000..317c020 --- /dev/null +++ b/capella_ros_tools/display/__init__.py @@ -0,0 +1,3 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Module for displaying data from the Capella ROS Tools.""" diff --git a/capella_ros_tools/display/app.py b/capella_ros_tools/display/app.py new file mode 100644 index 0000000..c2ad343 --- /dev/null +++ b/capella_ros_tools/display/app.py @@ -0,0 +1,67 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""FastAPI app for displaying Capella model.""" +import typing as t +from pathlib import Path + +import uvicorn +from fastapi import FastAPI, Request +from fastapi.responses import HTMLResponse +from fastapi.staticfiles import StaticFiles +from fastapi.templating import Jinja2Templates + +PATH = Path(__file__).parent + + +app = FastAPI(title="Capella ROS Tools") +app.mount( + "/static", StaticFiles(directory=PATH.joinpath("static")), name="static" +) +templates = Jinja2Templates(directory=PATH.joinpath("templates")) + + +def get_type(xtype: str) -> str: + """Get type from xtype.""" + return xtype.rpartition(":")[2] + + +templates.env.globals.update(get_type=get_type) + + +@app.get("/", response_class=HTMLResponse) +def root(request: Request): + """Root page.""" + element = app.state.data_package + context = { + "request": request, + "element": element, + "get_type": get_type, + } + response = templates.TemplateResponse("package.html", context) + return response + + +@app.get("/{type}/{uuid}", response_class=HTMLResponse) +def view(request: Request, type: str, uuid: str): + """View page.""" + element = app.state.model.by_uuid(uuid) + template = type + ".html" + + context = { + "request": request, + "element": element, + "get_type": get_type, + } + response = templates.TemplateResponse(template, context) + return response + + +def start(model: t.Any, layer: str, port: int = 5000): + """Start the app.""" "" + app.state.model = model + app.state.data_package = getattr(model, layer).data_package + uvicorn.run( + app, + host="0.0.0.0", + port=port, + ) diff --git a/capella_ros_tools/display/static/icons/favicon.ico b/capella_ros_tools/display/static/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a0c9c57790ad59936eb10aae1125145b7895a798 GIT binary patch literal 1150 zcmb7@KS;w+5XP@bS~^%M{#&h^f|K3cTwI+LoQpJRwNzaEGnj%X4kCh3oZY&(I#vo6 z#L3yE*u_OCh;}HR-`U)w4Heo~F4ya<~!wChc5VcmdvL$rE->7hgR$mne@3-^7tz)WA+Yt@G{-p`u) z@eb=+m;Z)4e4<=4p2f#{nuvGR$vx%XqCwxXa%jE+Z4-P`>Yl@=S|25&PeJ_1N2B<9 zvgQy|<`11WoH#aVc TT4zM1QkPZ1+cm^n5E-Ih_${+; literal 0 HcmV?d00001 diff --git a/capella_ros_tools/display/static/icons/favicon.ico.license b/capella_ros_tools/display/static/icons/favicon.ico.license new file mode 100644 index 0000000..95e8b6e --- /dev/null +++ b/capella_ros_tools/display/static/icons/favicon.ico.license @@ -0,0 +1,2 @@ +Copyright DB Netz AG and contributors +SPDX-License-Identifier: CC0-1.0 diff --git a/capella_ros_tools/display/static/styles.css b/capella_ros_tools/display/static/styles.css new file mode 100644 index 0000000..cfaca88 --- /dev/null +++ b/capella_ros_tools/display/static/styles.css @@ -0,0 +1,153 @@ +/* + * Copyright DB Netz AG and contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --pink: #ffaccd; + --pink-dark: rgb(255, 0, 153); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --color-accent: var(--pink); + --color-accent-hover: var(--pink-dark); + + --section-gap: 160px; +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +html, +body { + width: 100vw; + height: 100vh; + margin: 0; + padding: 0; +} + +body { + display: flex; + flex-direction: row; + color: var(--color-text); + background: var(--color-background-soft); + line-height: 1.6; + font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + color: inherit; + text-decoration: none; + border-bottom: 3px solid var(--color-accent); +} + +a:hover { + border-bottom-color: var(--color-accent-hover); +} + +span { + white-space: pre-wrap; + display: inline-flex; + opacity: 0.75; +} + +strong { + font-weight: 500; +} + +main { + padding: 0.5rem 1rem; +} + +main, +aside { + max-height: 100%; + overflow-y: auto; + flex: 1; + display: flex; + flex-direction: column; +} + +aside { + background-color: white; +} + +aside > div { + height: 100%; + width: 100%; +} + +table { + border-spacing: 0 1.5rem; +} +tr > td:first-child { + font-weight: bold; + text-align: right; + padding-right: 2rem; + white-space: nowrap; + width: 1%; +} + +tr > td:last-child { + text-align: left; +} + +ol { + padding: 0; + counter-reset: list; +} +ol > li { + list-style: none; + display: flex; +} +ol > li:before { + content: "[" counter(list) "] "; + counter-increment: list; + margin-right: 0.5em; +} + +::-webkit-scrollbar { + display: none; +} + +/* Media query for landscape mode */ +@media screen and (orientation: portrait) { + body { + display: flex; + flex-direction: column; + } +} diff --git a/capella_ros_tools/display/templates/class.html b/capella_ros_tools/display/templates/class.html new file mode 100644 index 0000000..6e41fc7 --- /dev/null +++ b/capella_ros_tools/display/templates/class.html @@ -0,0 +1,63 @@ + + + + + + + + {{ element.name }} - Overview + + + + +
+

+ {{ element.name }} + ({{ element.xtype }}) +

+ + + + + + + + + + + + + + + + + +
uuid{{ element.uuid }}
parent{{ element.parent._short_html_() }}
description + {{ element.description }} +
properties +
    + {% for prop in element.properties %} +
  1. +

    + Property "{{ prop.name + }}": {{prop.type.name}} + {{ prop.description }} +

    +
  2. + {% endfor %} +
+
+
+ + + diff --git a/capella_ros_tools/display/templates/enum.html b/capella_ros_tools/display/templates/enum.html new file mode 100644 index 0000000..a3c218e --- /dev/null +++ b/capella_ros_tools/display/templates/enum.html @@ -0,0 +1,56 @@ + + + + + + + + {{ element.name }} - Overview + + + + +
+

+ {{ element.name }} + ({{ element.xtype }}) +

+ + + + + + + + + + + + + + + + + +
uuid{{ element.uuid }}
parent{{ element.parent._short_html_() }}
description + {{ element.description }} +
literals +
    + {% for lit in element.literals %} +
  1. + EnumerationLiteral "{{ + lit.name }}": {{lit.value.type.name}} = + {{lit.value.value}} +
  2. + {% endfor %} +
+
+
+ + diff --git a/capella_ros_tools/display/templates/package.html b/capella_ros_tools/display/templates/package.html new file mode 100644 index 0000000..9850811 --- /dev/null +++ b/capella_ros_tools/display/templates/package.html @@ -0,0 +1,92 @@ + + + + + + + + {{ element.name }} - Overview + + + +
+

+ {{ element.name }} + ({{ element.xtype }}) +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
uuid{{ element.uuid }}
parent{{ element.parent._short_html_() }}
classes +
    + {% for cls in element.classes %} +
  1. + {{ cls._short_html_() }} +
  2. + {% endfor %} +
+
datatypes +
    + {% for datatype in element.datatypes %} {% if + get_type(datatype.xtype) != 'Enumeration' %} +
  1. + {{ datatype._short_html_() }} +
  2. + {% endif %} {% endfor %} +
+
enumeration +
    + {% for enum in element.enumerations %} +
  1. + {{ enum._short_html_() }} +
  2. + {% endfor %} +
+
packages +
    + {% for pkg in element.packages %} +
  1. + {{ pkg._short_html_() }} +
  2. + {% endfor %} +
+
+
+ + diff --git a/capella_ros_tools/modules/__init__.py b/capella_ros_tools/modules/__init__.py index 2b10160..b4f5599 100644 --- a/capella_ros_tools/modules/__init__.py +++ b/capella_ros_tools/modules/__init__.py @@ -1,59 +1,3 @@ # Copyright DB Netz AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""The capella ros-tools modules package.""" -import typing as t -from collections import namedtuple - -import capellambse - -ROS_INTERFACES = "ros_interfaces" -BASIC_TYPES = "basic_types" - - -class EnumProp(t.NamedTuple): - """Enum property.""" - - name: str - type: str - value: str - comment: str - - -class MsgProp(t.NamedTuple): - """Message property.""" - - name: str - type: str - typedir: str - min: str - max: str - comment: str - - -class BaseCapella: - """Base class for capella model.""" - - def __init__( - self, - path_to_capella_model: str, - layer: str, - ) -> None: - self.model = capellambse.MelodyModel(path_to_capella_model) - self.data = getattr(self.model, layer).data_package - - -class MessageDef: - """Message definition.""" - - def __init__(self, name: str, description: str, props: list): - self.name = name - self.description = description - self.props = props - - -class MessagesPkg: - """Messages package.""" - - def __init__(self, messages: dict, packages: dict): - self.messages = messages - self.packages = packages +"""Capella_ros_tools modules.""" diff --git a/capella_ros_tools/modules/capella/__init__.py b/capella_ros_tools/modules/capella/__init__.py new file mode 100644 index 0000000..1859e4d --- /dev/null +++ b/capella_ros_tools/modules/capella/__init__.py @@ -0,0 +1,57 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Capella model definition.""" +import typing as t + +import capellambse + + +class EnumValue(t.NamedTuple): + """Capella enum value.""" + + type: str + name: str + value: int + description: str + + +class EnumDef(t.NamedTuple): + """Capella enum.""" + + name: str + values: list[EnumValue] + description: str + + +class ClassProperty(t.NamedTuple): + """Capella class property.""" + + type_name: str + type_pkg_name: str + name: str + min_card: float + max_card: float + description: str + + +class ClassDef(t.NamedTuple): + """Capella class.""" + + name: str + properties: list[ClassProperty] + description: str + + +class BaseCapellaModel: + """Base class for capella model.""" + + def __init__( + self, + path_to_capella_model: str, + layer: str, + ) -> None: + self.model = capellambse.MelodyModel(path_to_capella_model) + self.data = getattr(self.model, layer).data_package + self.predef_types = self.model.sa.data_package.packages.by_name( + "Predefined Types" + ).datatypes diff --git a/capella_ros_tools/modules/capella/parser.py b/capella_ros_tools/modules/capella/parser.py new file mode 100644 index 0000000..3b66a9e --- /dev/null +++ b/capella_ros_tools/modules/capella/parser.py @@ -0,0 +1,70 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Parser for Capella model.""" +import typing as t + +from . import BaseCapellaModel, ClassDef, ClassProperty, EnumDef, EnumValue + + +class CapellaModel(BaseCapellaModel): + """Capella model definition for parsing model.""" + + def get_packages(self, package: t.Any) -> set[str]: + """Get packages in Capella model.""" + return {pkg.name for pkg in package.packages} + + def get_classes(self, package: t.Any) -> list[ClassDef]: + """Get classes in Capella model.""" + classes = [] + for cls in package.classes: + props = [] + for prop in cls.owned_properties: + type: t.Any + if prop.type.__class__.__name__ == "Enumeration": + type = EnumDef( + prop.type.name, + [ + EnumValue( + literal.value.type.name, + literal.name, + literal.value.value, + literal.description, + ) + for literal in prop.type.owned_literals + ], + prop.type.description, + ) + elif prop.type.__class__.__name__ == "Class": + type = ClassDef( + prop.type.name, + [], + prop.type.description, + ) + else: + type = prop.type.name + + type_pkg_name = prop.type.parent.name + if type_pkg_name in [ + "Predefined Types", + cls.parent.name, + ]: + type_pkg_name = None + + props.append( + ClassProperty( + prop.name, + type, + type_pkg_name, + prop.min_card.value, + prop.max_card.value, + prop.description, + ) + ) + classes.append( + ClassDef( + cls.name, + props, + cls.description, + ) + ) + return classes diff --git a/capella_ros_tools/modules/capella/serializer.py b/capella_ros_tools/modules/capella/serializer.py new file mode 100644 index 0000000..9f617c9 --- /dev/null +++ b/capella_ros_tools/modules/capella/serializer.py @@ -0,0 +1,221 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Serializer for Capella model.""" +import logging +import typing as t + +import capellambse + +from . import BaseCapellaModel, ClassDef, ClassProperty, EnumDef + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +class CapellaModel(BaseCapellaModel): + """Capella model definition for serializing model.""" + + def create_packages( + self, packages: list[str], package: t.Any = None + ) -> None: + """Create packages in Capella model.""" + + if package is None: + package = self.data + + for package_name in packages: + try: + package.packages.by_name(package_name) + except KeyError: + package.packages.create("DataPkg", name=package_name) + logger.info("Created package %s.", package_name) + + def create_classes( + self, + classes: list[ClassDef], + package: t.Any = None, + ) -> list: + """Create classes in Capella model.""" + if package is None: + package = self.data + + overlap = [] + for cls in classes: + try: + overlap.append(package.classes.by_name(cls.name)) + logger.info("Class %s already exists.", cls.name) + except KeyError: + package.classes.create( + name=cls.name, description=cls.description + ) + logger.info("Created class %s.", cls.name) + return overlap + + def delete_classes(self, classes: list, package: t.Any = None) -> None: + """Delete classes in Capella model.""" + if package is None: + package = self.data + + for cls in classes: + try: + package.classes.remove(cls) + logger.info("Deleted %s.", cls.name) + except ValueError: + pass + + def _find_type(self, type_name: str, package: t.Any) -> t.Any: + """Find type in Capella model.""" + try: + return self.predef_types.by_name(type_name) + except KeyError: + self.create_basic_types([type_name], package) + return package.datatypes.by_name(type_name) + + def create_enums( + self, enums: list[EnumDef], package: t.Any = None + ) -> list: + """Create enums in Capella model.""" + if package is None: + package = self.data + + overlap = [] + for enum in enums: + try: + overlap.append(package.datatypes.by_name(enum.name)) + logger.info("Enum %s already exists.", enum.name) + except KeyError: + type = package.datatypes.create( + "Enumeration", name=enum.name, description=enum.description + ) + for prop in enum.values: + property = type.owned_literals.create( + "EnumerationLiteral", + name=prop.name, + description=prop.description, + ) + property.value = capellambse.new_object( + "LiteralNumericValue", + value=prop.value, + type=self._find_type(prop.type, package), + ) + logger.info("Created enum %s.", enum.name) + + return overlap + + def delete_enums(self, types: list, package: t.Any = None) -> None: + """Delete types in Capella model.""" + if package is None: + package = self.data + + for type in types: + try: + package.datatypes.remove(type) + logger.info("Deleted %s.", type.name) + except ValueError: + pass + + def create_basic_types( + self, basic_types: list[str], package: t.Any = None + ) -> list: + """Create basic types in Capella model.""" + if package is None: + package = self.data + + overlap = [] + for basic_type in basic_types: + try: + overlap.append(package.datatypes.by_name(basic_type)) + except KeyError: + if "char" in basic_type or "string" in basic_type: + type = "StringType" + elif "bool" in basic_type or "boolean" in basic_type: + type = "BooleanType" + else: + type = "NumericType" + package.datatypes.create(type, name=basic_type) + return overlap + + def create_properties(self, cls: ClassDef, package: t.Any): + """Create properties for class in Capella model.""" + if package is None: + package = self.data + + superclass = package.classes.by_name(cls.name) + + for prop in cls.properties: + try: + type_package = self.data.packages.by_name(prop.type_pkg_name) + except KeyError: + type_package = ( + package.parent if package is not self.data else package + ) + + try: + partclass = self.model.search( + "Class", below=type_package + ).by_name(prop.type_name) + if superclass == partclass: + raise KeyError + composition = self._create_composition( + superclass, prop, partclass + ) + association = package.owned_associations.create( + navigable_members=[composition] + ) + association.members.create( + "Property", + type=superclass, + kind="ASSOCIATION", + min_card=capellambse.new_object( + "LiteralNumericValue", value=1 + ), + max_card=capellambse.new_object( + "LiteralNumericValue", value=1 + ), + ) + self._set_cardinality(composition, prop) + continue + except KeyError: + pass + try: + property_type = self.model.search( + "Enumeration", below=type_package + ).by_name(prop.type_name) + except KeyError: + property_type = self._find_type(prop.type_name, type_package) + + attribute = self._create_composition( + superclass, prop, property_type + ) + self._set_cardinality(attribute, prop) + logger.info("Created properties for %s.", cls.name) + + def _create_composition( + self, superclass: t.Any, prop: ClassProperty, property_type: t.Any + ): + """Create composition in Capella model.""" + try: + overlap = superclass.owned_properties.by_name(prop.name) + superclass.owned_properties.remove(overlap) + except KeyError: + pass + composition = superclass.owned_properties.create( + name=prop.name, + type=property_type, + kind="COMPOSITION", + description=prop.description, + ) + return composition + + def _set_cardinality(self, composition: t.Any, prop: ClassProperty): + """Set cardinality for composition in Capella model.""" + composition.min_card = capellambse.new_object( + "LiteralNumericValue", value=prop.min_card + ) + composition.max_card = capellambse.new_object( + "LiteralNumericValue", value=prop.max_card + ) + + def save_changes(self) -> None: + """Save changes to Capella model.""" + self.model.save() diff --git a/capella_ros_tools/modules/messages/__init__.py b/capella_ros_tools/modules/messages/__init__.py new file mode 100644 index 0000000..ae0ea70 --- /dev/null +++ b/capella_ros_tools/modules/messages/__init__.py @@ -0,0 +1,120 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""IDL Message definition.""" "" +import typing as t + + +class BaseTypeDef: + """Type definition for a field or constant in a message.""" + + def __init__( + self, + name: str, + array_size: float | None = None, + pkg_name: str | None = None, + ) -> None: + self.name = name + """Name of the type.""" + self.array_size = array_size + """Max size of the array.""" + self.pkg_name = pkg_name + """Name of the package the type is defined in. + + None: type is a primitive type or + defined in the same package as the message + """ + + +class FieldDef: + """Definition of a field.""" + + def __init__(self, type: t.Any, name: str, annotations: list[str]) -> None: + self.type = type + self.name = name + self.annotations = annotations + + +class ConstantDef: + """Definition of a constant.""" + + def __init__( + self, + type: t.Any, + name: str, + value: str, + annotations: list[str], + ) -> None: + self.type = type + self.name = name + self.value = value + self.annotations = annotations + + +class EnumDef: + """Definition of an enum.""" + + def __init__( + self, name: str, values: list[ConstantDef], annotations: list[str] + ) -> None: + self.name = name + self.values = values + self.annotations = annotations + + +class BaseMessageDef: + """Definition of a message.""" + + def __init__( + self, + name: str, + fields: list[FieldDef], + enums: list[EnumDef], + annotations: list[str], + ) -> None: + self.name = name + self.fields = fields + self.enums = enums + self.annotations = annotations + + def _repr_html_(self): + fragments = [] + fragments.append( + f"

{self.name}

" + + "
".join(self.annotations) + + "

Fields

    " + ) + for field in self.fields: + fragments.append( + f'
  1. {field.type.pkg_name+"/" if field.type.pkg_name else ""}{field.type.name}{"[]" if field.type.array_size == float("inf") else f"[{field.type.array_size}]" if field.type.array_size else ""} {field.name}
    ' + + "
    ".join(field.annotations) + + "
  2. " + ) + fragments.append("

Enums

    ") + for enum in self.enums: + fragments.append( + f"
  1. {enum.name}
    " + + "
    ".join(enum.annotations) + + "
      " + ) + for value in enum.values: + fragments.append( + f"
    • {value.type.name} {value.name} = {value.value}
      " + + "
      ".join(value.annotations) + + "
    • " + ) + fragments.append("
  2. ") + fragments.append("
") + + return "".join(fragments) + + +class BaseMessagePkgDef: + """Definition of a message package.""" + + def __init__(self, name: str, messages: list, packages: list): + self.name = name + self.messages = messages + self.packages = packages + + def _repr_html_(self): + return f'

{self.name}

Messages

    {"".join([f"
  1. {msg.name}
  2. " for msg in self.messages])}

Packages

    {"".join([f"
  1. {pkg.name}
  2. " for pkg in self.packages])}
' diff --git a/capella_ros_tools/modules/messages/parser.py b/capella_ros_tools/modules/messages/parser.py new file mode 100644 index 0000000..3efab6c --- /dev/null +++ b/capella_ros_tools/modules/messages/parser.py @@ -0,0 +1,317 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Parser for IDL messages.""" +import os +import re +import typing as t + +from . import ( + BaseMessageDef, + BaseMessagePkgDef, + BaseTypeDef, + ConstantDef, + EnumDef, + FieldDef, +) + +PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR = "/" +COMMENT_DELIMITER = "#" +CONSTANT_SEPARATOR = "=" +ARRAY_UPPER_BOUND_TOKEN = "<=" +STRING_UPPER_BOUND_TOKEN = "<=" + + +PRIMITIVE_TYPES = [ + "bool", + "byte", + "char", + "float32", + "float64", + "int8", + "uint8", + "int16", + "uint16", + "int32", + "uint32", + "int64", + "uint64", + "string", + "wstring", +] + + +VALID_MESSAGE_NAME_PATTERN = "[A-Z][A-Za-z0-9]*" +VALID_CONSTANT_NAME_PATTERN = "[A-Z][A-Z0-9_]*?[A-Z0-9]*" +VALID_REF_COMMENT_PATTERN = re.compile( + r"cf\.\s*" + rf"({VALID_MESSAGE_NAME_PATTERN})" + r"(?:,\s*" + rf"({VALID_CONSTANT_NAME_PATTERN}_XXX))?" +) + + +class TypeDef(BaseTypeDef): + """Type definition for a field or constant in a message.""" + + def __init__(self, type_string: str) -> None: + super().__init__(type_string) + + if type_string[-1] == "]": + # is array + index = type_string.rindex("[") + array_size_string = type_string[index + 1 : -1] + if array_size_string: + array_size_string = array_size_string.lstrip( + ARRAY_UPPER_BOUND_TOKEN + ) + self.array_size = float(array_size_string) + else: + # dynamic array + self.array_size = float("inf") + + type_string = type_string[:index] + + type_string = type_string.split(STRING_UPPER_BOUND_TOKEN, 1)[0] + if type_string not in PRIMITIVE_TYPES: + parts = type_string.split(PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR, 1) + if len(parts) == 2: + # type string contains the package name + self.pkg_name = parts[0] + type_string = parts[1] + + self.name = type_string + + +def _extract_file_level_comments(message_string: str): + """Extract comments at the beginning of the message file.""" + lines = message_string.splitlines() + if lines and not lines[0].strip(): + lines = lines[1:] + + for index, line in enumerate(lines): + if not line.startswith(COMMENT_DELIMITER): + break + else: + index = 0 + + file_content = lines[index:] + [""] + file_level_comments = lines[:index] + return file_level_comments, file_content + + +class MessageDef(BaseMessageDef): + """Message definition for a ROS message.""" + + @classmethod + def from_msg_file(cls, msg_file: t.Any): + """Create a message definition from a message file.""" + msg_name = msg_file.stem + message_string = msg_file.read_text() + return cls.from_msg_string(msg_name, message_string) + + @classmethod + def from_msg_string(cls, msg_name: str, message_string: str): + """Create a message definition from a message string.""" + message_comments, lines = _extract_file_level_comments(message_string) + msg = cls(msg_name, [], [], message_comments) + last_element: t.Any = msg + current_comments: list = [] + last_index = index = -1 + + for line in lines: + line = line.rstrip() + + if not line: + # new block + if last_index == index == 0: + # comments were not used + msg.annotations += current_comments + current_comments = [] + if isinstance(last_element, ConstantDef): + last_element = msg.enums[-1] + continue + + last_index = index + index = line.find(COMMENT_DELIMITER) + + if index != -1: + # line has a comment + comment = line[index:] + line = line[:index] + line_stripped = line.strip() + if line and not line_stripped: + # indented comment line + # append to previous field/constant if available or ignore + last_element.annotations.append(comment) + continue + line = line_stripped + if not line: + # block comment + if last_index != index: + # first line of block comment + current_comments = [] + # save "unused" comments for next block + current_comments.append(comment) + continue + else: + comment = "" + + type_string, _, rest = line.partition(" ") + rest = rest.lstrip() + name, _, value = rest.partition(CONSTANT_SEPARATOR) + name = name.rstrip() + if value: + # line contains a constant + value = value.lstrip() + if not isinstance(last_element, ConstantDef): + msg.enums.append(EnumDef("", [], current_comments)) + msg.enums[-1].values.append( + ConstantDef(TypeDef(type_string), name, value, [comment]) + ) + last_element = msg.enums[-1].values[-1] + else: + # line contains a field + msg.fields.append( + FieldDef( + TypeDef(type_string), + name, + current_comments + [comment], + ) + ) + last_element = msg.fields[-1] + + # condense and rename enums + _process_enums(msg) + + # condense comment lines, extract special annotations + _process_comments(msg) + for field in msg.fields: + _process_comments(field) + for enum in msg.enums: + _process_comments(enum) + for constant in enum.values: + _process_comments(constant) + return msg + + +def _get_enum_identifier(common_prefix: str) -> str: + return "".join([x.capitalize() for x in common_prefix.split("_")]) + + +def _rename_enum(enum: EnumDef): + common_prefix = os.path.commonprefix([v.name for v in enum.values]) + for v in enum.values: + v.name = v.name.removeprefix(common_prefix) + + enum.name = _get_enum_identifier(common_prefix) + + +def _process_enums(msg): + """Condense enums and renames them if necessary.""" + if len(msg.enums) == 0: + return + + for enum in msg.enums: + _rename_enum(enum) + + to_delete = set() + for i, enum in enumerate(msg.enums): + # combine enums with the same name + if i in to_delete: + continue + indeces = [ + i + for i, other_enum in enumerate(msg.enums) + if other_enum.name is enum.name and other_enum is not enum + ] + for i in indeces: + to_delete.add(i) + for value in msg.enums[i].values: + enum.values.append( + ConstantDef( + TypeDef(value.type.name), + value.name, + value.value, + value.annotations.copy(), + ) + ) + + for i in to_delete: + del msg.enums[i] + + for enum in msg.enums: + match_name = [ + i + for i, field in enumerate(msg.fields) + if _get_enum_identifier(field.name) == enum.name + ] + match_type = [ + i + for i, field in enumerate(msg.fields) + if field.type.name == enum.values[0].type.name + ] + if match_name: + msg.fields[match_name[0]].type.name = enum.name + elif match_type: + field = msg.fields[match_type[0]] + field.type.name = msg.name + _get_enum_identifier(field.name) + enum.name = field.type.name + elif not enum.name or len(msg.enums) == 1: + enum.name = msg.name + "Type" if msg.fields else msg.name + + +def _process_comments(instance): + """Condense comment lines and extracts special annotations.""" + lines = instance.annotations + if not lines: + return + # remove empty lines + lines = [line for line in lines if line] + + instance.annotations = lines + + if ( + not isinstance(instance, FieldDef) + or instance.type.pkg_name + or instance.type.name not in PRIMITIVE_TYPES + ): + return + comment = "\n".join(lines) + match = VALID_REF_COMMENT_PATTERN.search(comment) + if match: + # reference to enum + ref_file_name, ref_common_prefix = match.groups() + instance.type.name = ( + _get_enum_identifier(ref_common_prefix[:-4]) + if ref_common_prefix + else ref_file_name + ) + + +class MessagePkgDef(BaseMessagePkgDef): + """Message package definition for ROS message package.""" + + @classmethod + def from_msg_folder(cls, package_name: str, msg_pkg_dir: t.Any): + """Create a message package definition from folder.""" + msg_pkg = cls(package_name, [], []) + for msg_file in msg_pkg_dir.iterdir(): + if msg_file.suffix == ".msg": + msg_pkg.messages.append(MessageDef.from_msg_file(msg_file)) + elif msg_file.is_dir(): + msg_pkg.packages.append( + cls.from_msg_folder(msg_file.name, msg_file) + ) + return msg_pkg + + @classmethod + def from_pkg_folder(cls, root_dir: t.Any, root_dir_name: str = "root"): + """Create a package package definition from a package folder.""" + out = cls("", [], []) + for dir in root_dir.rglob("msg"): + out.packages.append( + MessagePkgDef.from_msg_folder( + dir.parent.name or root_dir_name, dir + ) + ) + return out diff --git a/capella_ros_tools/modules/messages/serializer.py b/capella_ros_tools/modules/messages/serializer.py new file mode 100644 index 0000000..5cf8557 --- /dev/null +++ b/capella_ros_tools/modules/messages/serializer.py @@ -0,0 +1,38 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Serializer for IDL messages.""" +from pathlib import Path + +from capella_ros_tools.modules.messages import ( + BaseMessageDef, + BaseMessagePkgDef, +) + + +class MessageDef(BaseMessageDef): + """Message definition for a ROS message.""" + + def to_msg_file(self, msg_file: Path): + """Write message to file.""" + msg_file.write_text(self.to_msg_string()) + + def to_msg_string(self) -> str: + """Convert message to string.""" + msg_string = "\n".join(self.annotations) + "\n" + msg_string += ( + "\n".join([f"{f.type} {f.name}" for f in self.fields]) + "\n\n" + ) + msg_string += ( + "\n\n".join([f"{e.name}\n{e.values}" for e in self.enums]) + "\n\n" + ) + return msg_string + + +class MessagePkgDef(BaseMessagePkgDef): + """Message package definition for ROS message package.""" + + def to_msg_folder(self, msg_pkg_dir: Path): + """Write message package to folder.""" + msg_pkg_dir.mkdir(parents=True, exist_ok=True) + for msg in self.messages: + msg.to_msg_file(msg_pkg_dir / f"{msg.name}.msg") diff --git a/capella_ros_tools/scripts/__init__.py b/capella_ros_tools/scripts/__init__.py new file mode 100644 index 0000000..46ca00d --- /dev/null +++ b/capella_ros_tools/scripts/__init__.py @@ -0,0 +1,4 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""The scripts package.""" "" +modules = ["capella2msg", "msg2capella"] diff --git a/capella_ros_tools/scripts/capella2msg.py b/capella_ros_tools/scripts/capella2msg.py new file mode 100644 index 0000000..0b65981 --- /dev/null +++ b/capella_ros_tools/scripts/capella2msg.py @@ -0,0 +1,35 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Convert Capella data to ROS messages.""" +import typing as t + +from capella_ros_tools.modules.capella.parser import CapellaModel + +CAPELLA_TYPE_TO_MSG = { + "Boolean": "bool", + "Byte": "byte", + "Char": "char", + "Short": "int8", + "UnsignedShort": "uint8", + "Integer": "int16", + "UnsignedInteger": "uint16", + "Long": "int32", + "UnsignedLong": "uint32", + "LongLong": "int64", + "UnsignedLongLong": "uint64", + "Float": "float32", + "Double": "float64", + "String": "string", +} + + +class Converter: + """Convert Capella data to ROS messages.""" + + def __init__(self, capella_path: t.Any, layer: str, merge: str) -> None: + self.model = CapellaModel(capella_path, layer) + self.merge = merge + + def convert(self) -> None: + """Convert Capella data to ROS messages.""" + return diff --git a/capella_ros_tools/scripts/msg2capella.py b/capella_ros_tools/scripts/msg2capella.py new file mode 100644 index 0000000..bc7c036 --- /dev/null +++ b/capella_ros_tools/scripts/msg2capella.py @@ -0,0 +1,184 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Convert ROS messages to Capella data.""" "" +import typing as t + +import capellambse +import click + +from capella_ros_tools.modules.capella import ( + ClassDef, + ClassProperty, + EnumDef, + EnumValue, +) +from capella_ros_tools.modules.capella.serializer import CapellaModel +from capella_ros_tools.modules.messages.parser import MessagePkgDef + +ROS2_INTERFACES = { + "common_interfaces": "git+https://github.com/ros2/common_interfaces", + "rcl_interfaces": "git+https://github.com/ros2/rcl_interfaces", + "unique_identifier_msgs": "git+https://github.com" + "/ros2/unique_identifier_msgs", +} + +MSG_TYPE_TO_CAPELLA = { + "bool": "Boolean", + "byte": "Byte", + "char": "Char", + "int8": "Short", + "uint8": "UnsignedShort", + "int16": "Integer", + "uint16": "UnsignedInteger", + "int32": "Long", + "uint32": "UnsignedLong", + "int64": "LongLong", + "uint64": "UnsignedLongLong", + "float32": "Float", + "float64": "Double", + "string": "String", + "wstring": "Char", +} + + +class Converter: + """Converts ROS messages to Capella data.""" + + def __init__( + self, + msg_path: t.Any, + capella_path: t.Any, + layer: str, + action: str, + no_deps: bool, + ) -> None: + self.msgs = MessagePkgDef.from_pkg_folder(msg_path) + self.model = CapellaModel(capella_path, layer) + self.action = action + self.no_deps = no_deps + + def _resolve_overlap(self, overlap, deletion_func, current_root): + if not overlap or self.action == "k": + return + if self.action == "a": + click.echo( + f"{len(overlap)} elements already exist." + " Use --exists-action=o to overwrite." + ) + raise click.Abort() + elif self.action == "o": + deletion_func(overlap, current_root) + elif self.action == "c": + for i, cls in enumerate(overlap): + confirm = click.prompt( + f"{cls.name} already exists. " "Do you want to overwrite?", + type=click.Choice( + ["y", "Y", "n", "N"], + case_sensitive=True, + ), + ) + if confirm == "n": + continue + elif confirm == "N": + self.action = "k" + return + elif confirm == "Y": + deletion_func(overlap[i:], current_root) + self.action = "o" + return + elif confirm == "y": + deletion_func([cls], current_root) + + def _add_objects( + self, current_pkg_def: MessagePkgDef, current_root: t.Any + ): + packages = [p.name for p in current_pkg_def.packages] + self.model.create_packages(packages, current_root) + classes = [ + ClassDef(c.name, [], "\n".join(c.annotations)) + for c in current_pkg_def.messages + if c.fields + ] + overlap = self.model.create_classes(classes, current_root) + self._resolve_overlap(overlap, self.model.delete_classes, current_root) + self.model.create_classes(classes, current_root) + enums = [ + EnumDef( + e.name, + [ + EnumValue( + MSG_TYPE_TO_CAPELLA.get(v.type.name) or v.type.name, + v.name, + int(v.value), + "\n".join(v.annotations), + ) + for v in e.values + ], + "\n".join(e.annotations), + ) + for msg in current_pkg_def.messages + for e in msg.enums + if e.values + ] + overlap = self.model.create_enums(enums, current_root) + self._resolve_overlap(overlap, self.model.delete_enums, current_root) + self.model.create_enums(enums, current_root) + + for new_pkg_def in current_pkg_def.packages: + new_root = current_root.packages.by_name(new_pkg_def.name) + self._add_objects(new_pkg_def, new_root) + + def _add_relations(self, current_pkg_def, current_root): + for msg in current_pkg_def.messages: + if not msg.fields: + continue + self.model.create_properties( + ClassDef( + name=msg.name, + properties=[ + ClassProperty( + MSG_TYPE_TO_CAPELLA.get(f.type.name) + or f.type.name, + f.type.pkg_name, + f.name, + min_card=0 if f.type.array_size else 1, + max_card=f.type.array_size or 1, + description="\n".join(f.annotations), + ) + for f in msg.fields + ], + description="\n".join(msg.annotations), + ), + current_root, + ) + + for new_pkg_def in current_pkg_def.packages: + new_root = current_root.packages.by_name(new_pkg_def.name) + self._add_relations(new_pkg_def, new_root) + + def convert(self) -> None: + """Convert ROS messages to Capella data.""" + current_root = self.model.data + + if not self.no_deps: + imported_ros2_packages = [] + for interface_name, interface_url in ROS2_INTERFACES.items(): + interface_path = capellambse.filehandler.get_filehandler( + interface_url + ).rootdir + interface_pkg_def = MessagePkgDef.from_pkg_folder( + interface_path, interface_name + ) + interface_pkg_def.name = ( + interface_pkg_def.name or interface_name + ) + imported_ros2_packages.append(interface_pkg_def) + self._add_objects(interface_pkg_def, current_root) + + for interface_pkg_def in imported_ros2_packages: + self._add_relations(interface_pkg_def, current_root) + + self._add_objects(self.msgs, current_root) + self._add_relations(self.msgs, current_root) + + self.model.save_changes() diff --git a/docs/source/examples/Convert messages.ipynb b/docs/source/examples/Convert messages.ipynb new file mode 100644 index 0000000..d756412 --- /dev/null +++ b/docs/source/examples/Convert messages.ipynb @@ -0,0 +1,1276 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import capellambse\n", + "from capella_ros_tools.scripts import msg2capella\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "msg_path = capellambse.filehandler.get_filehandler(\"git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss\").rootdir\n", + "capella_path = Path(\"data/empty_project_52\")\n", + "layer = \"la\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:capellambse.model:Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "WARNING:capellambse.model:Property values are not available in this model\n" + ] + } + ], + "source": [ + "converter = msg2capella.Converter(msg_path, capella_path, layer, \"o\", False)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalID already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DiagnosticStatusLevel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatusLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum DiagnosticStatusLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Accel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class AccelStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovarianceStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Inertia already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InertiaStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Point already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Point32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Polygon already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PolygonStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Pose already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Pose2D already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovarianceStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Quaternion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class QuaternionStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Transform already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TransformStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Twist already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TwistStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovarianceStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3Stamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Wrench already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class WrenchStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Accel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Inertia.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InertiaStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Polygon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PolygonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose2D.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Quaternion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted QuaternionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transform.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransformStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Twist.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3Stamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Wrench.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted WrenchStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Accel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Inertia.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InertiaStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Point.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Point32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Polygon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PolygonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose2D.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Quaternion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class QuaternionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Transform.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransformStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Twist.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3Stamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Wrench.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class WrenchStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GridCells already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMetaData already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class OccupancyGrid already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Path already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GridCells.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMetaData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted OccupancyGrid.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Path.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GridCells.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMetaData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class OccupancyGrid.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Path.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class BatteryState already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CameraInfo already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ChannelFloat32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CompressedImage already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FluidPressure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Illuminance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Image already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Imu already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JointState already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Joy already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedback already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedbackArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LaserEcho already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LaserScan already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MagneticField already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointState already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiEchoLaserScan already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatFix already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud2 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointField already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Range already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RegionOfInterest already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RelativeHumidity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Temperature already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TimeReference already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted BatteryState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CameraInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ChannelFloat32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CompressedImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FluidPressure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Illuminance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Image.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Imu.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Joy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedbackArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserEcho.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MagneticField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiEchoLaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFix.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud2.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Range.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RegionOfInterest.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RelativeHumidity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Temperature.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TimeReference.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class BatteryState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CameraInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ChannelFloat32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CompressedImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FluidPressure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Illuminance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Image.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Imu.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Joy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedbackArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserEcho.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MagneticField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiEchoLaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatFix.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud2.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Range.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RegionOfInterest.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RelativeHumidity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Temperature.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TimeReference.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyHealth already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyTechnology already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Type already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum NavSatFixPositionCovarianceType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Status already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Service already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PointFieldDatatype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum RangeRadiationType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyHealth.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyTechnology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Type.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFixPositionCovarianceType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Status.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Service.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointFieldDatatype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RangeRadiationType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyHealth.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyTechnology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Type.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum NavSatFixPositionCovarianceType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Status.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Service.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PointFieldDatatype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum RangeRadiationType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Mesh already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MeshTriangle already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Plane already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SolidPrimitive already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mesh.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshTriangle.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Plane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Mesh.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshTriangle.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Plane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SolidPrimitive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SolidPrimitiveType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Box already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SphereRadius already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Cylinder already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Cone already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PrismHeight already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitiveType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Box.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SphereRadius.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrismHeight.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SolidPrimitiveType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Box.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SphereRadius.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrismHeight.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Bool already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Byte already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ByteMultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Char already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ColorRGBA already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float32MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float64 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float64MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Header already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int16 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int16MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int32MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int64 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int64MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int8 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int8MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayDimension already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayLayout already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class String already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Bool.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Byte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ByteMultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Char.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ColorRGBA.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Header.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayDimension.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayLayout.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted String.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Bool.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Byte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ByteMultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Char.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ColorRGBA.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Header.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayDimension.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayLayout.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class String.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class DisparityImage already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DisparityImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DisparityImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectory already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectoryPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectory already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectoryPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ImageMarker already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarker already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerControl already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerFeedback already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerInit already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerPose already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerUpdate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Marker already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MarkerArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MenuEntry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MeshFile already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UVCoordinate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControl.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerInit.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerPose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Marker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshFile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UVCoordinate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ImageMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerControl.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerInit.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerPose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerUpdate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Marker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MarkerArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MenuEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshFile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UVCoordinate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ImageMarkerId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerControlOrientationMode already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerFeedbackEventType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Mouse already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerUpdateType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MarkerId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MenuEntryCommandType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControlOrientationMode.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedbackEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mouse.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdateType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntryCommandType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ImageMarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerControlOrientationMode.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerFeedbackEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Mouse.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerUpdateType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MenuEntryCommandType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalInfo already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusAccepted already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusExecuting already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceling already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusSucceeded already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceled already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusAborted already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusAccepted.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusExecuting.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceling.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusSucceeded.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceled.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusAborted.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAccepted.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusExecuting.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceling.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusSucceeded.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceled.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAborted.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Duration already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Time already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Duration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Time.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Duration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Time.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class State already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Transition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionDescription already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionEvent already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted State.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class State.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Transition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StateId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateUnconfigured already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateInactive already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateActive already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateFinalized already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateConfiguring already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateCleaningup already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateShuttingdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateActivating already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateDeactivating already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateErrorprocessing already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionConfigure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCleanup already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActivate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionDeactivate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionUnconfiguredShutdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionInactiveShutdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActiveShutdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionDestroy already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnConfigure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnCleanup already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnActivate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnDeactivate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnShutdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnError already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackSuccess already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackFailure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackError already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StateId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateUnconfigured.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateInactive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateActive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateFinalized.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateConfiguring.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateCleaningup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateShuttingdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateActivating.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateDeactivating.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateErrorprocessing.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionConfigure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCleanup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDeactivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionUnconfiguredShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionInactiveShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActiveShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDestroy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnConfigure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnCleanup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnDeactivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackSuccess.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackFailure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StateId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateUnconfigured.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateInactive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateActive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateFinalized.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateConfiguring.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateCleaningup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateShuttingdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateActivating.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateDeactivating.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateErrorprocessing.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionConfigure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCleanup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionDeactivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionUnconfiguredShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionInactiveShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActiveShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionDestroy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnConfigure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnCleanup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnDeactivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackSuccess.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackFailure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FloatingPointRange already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IntegerRange already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ListParametersResult already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Log already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LoggerLevel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Parameter already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterDescriptor already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEvent already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEventDescriptors already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterValue already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SetLoggerLevelsResult already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SetParametersResult already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FloatingPointRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IntegerRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ListParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Log.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterDescriptor.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEventDescriptors.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetLoggerLevelsResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FloatingPointRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IntegerRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ListParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Log.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LoggerLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterDescriptor.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEventDescriptors.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SetLoggerLevelsResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SetParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LogLevel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Info already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Warn already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Error already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Fatal already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LoggerLevelType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ParameterNotSet already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Parameter already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LogLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Info.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Warn.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Error.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Fatal.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevelType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterNotSet.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LogLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Info.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Warn.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Error.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Fatal.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LoggerLevelType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ParameterNotSet.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Clock already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Clock.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Clock.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ServiceEventInfo already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ServiceEventInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ServiceEventInfoEventType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfoEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ServiceEventInfoEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MetricsMessage already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class StatisticDataPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MetricsMessage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticDataPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MetricsMessage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StatisticDataPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatisticsDataTypeUninitialized already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatisticsDataType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticsDataTypeUninitialized.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticsDataType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticsDataTypeUninitialized.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticsDataType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Builtins already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Field already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IndividualTypeDescription already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TypeDescription already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TypeSource already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Field.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IndividualTypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeSource.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Field.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IndividualTypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeSource.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeTypeId 0 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeNestedType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBoolean already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeByte already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeFixed already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBounded already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeTypeId 0.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeNestedType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeBoolean.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeByte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeFixed.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeBounded.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeTypeId 0.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeNestedType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBoolean.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeByte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeFixed.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBounded.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UUID already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UUID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UUID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Accel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Inertia.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InertiaStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Polygon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PolygonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose2D.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Quaternion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for QuaternionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transform.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransformStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Twist.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3Stamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Wrench.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for WrenchStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GridCells.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMetaData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OccupancyGrid.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Path.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for BatteryState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CameraInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ChannelFloat32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CompressedImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FluidPressure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Illuminance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Image.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Imu.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Joy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedbackArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserEcho.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MagneticField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiEchoLaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatFix.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud2.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Range.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RegionOfInterest.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RelativeHumidity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Temperature.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TimeReference.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Mesh.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshTriangle.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Plane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SolidPrimitive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Bool.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Byte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ByteMultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Char.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ColorRGBA.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Header.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayDimension.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayLayout.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for String.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DisparityImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ImageMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerControl.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerInit.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerPose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerUpdate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Marker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MarkerArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MenuEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshFile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UVCoordinate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Duration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Time.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for State.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FloatingPointRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IntegerRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ListParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Log.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LoggerLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterDescriptor.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEventDescriptors.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetLoggerLevelsResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Clock.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ServiceEventInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MetricsMessage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StatisticDataPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Field.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IndividualTypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeSource.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UUID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalization already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupelStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPath already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPathStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalization already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalizationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IMU already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IMUStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalization already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupelStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Objects already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectsStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class OdometryStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizon already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformation already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjects already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjectsStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPath.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPathStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMU.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMUStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Objects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted OdometryStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPath.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPathStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IMU.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IMUStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Objects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class OdometryStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfiguration already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfigurationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatusStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersionStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfile already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfileStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfiguration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfigurationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfileStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfiguration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfigurationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatusStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfileStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Covariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FieldOfView already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ID already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValueMap already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValuePair already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LocalizationIntegrity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchingIntegrity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Object already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectBase already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectClassification already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectTracking already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Orientation already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Position already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Probability already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonData already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationEntry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorIntegrity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Shape already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Topology already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Track already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TrackPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Variance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Covariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldOfView.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValueMap.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValuePair.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Object.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectBase.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectClassification.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectTracking.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Orientation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Position.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Probability.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Shape.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Topology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Track.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Variance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Covariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldOfView.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValueMap.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValuePair.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LocalizationIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchingIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Object.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectBase.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectClassification.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectTracking.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Orientation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Position.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Probability.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Shape.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Topology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Track.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TrackPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Variance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationModeTypes already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusSubTypeUnknown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeMotion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypePosition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeDirection already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingInvalidType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingOrientationTypes already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ObjectMotionType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectTypePedestrianType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClass already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassVerticalType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassBodyType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassCompositionType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorPosition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubposition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlane already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBox already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeSphereRadius already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCylinder already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCone already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureTopPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureBottomPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeHorizontalStructurePoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBodyStructure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlaneStructurePoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeComposedStructureId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeTypeUndefined already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationModeTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusSubTypeUnknown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypePosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeDirection.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingInvalidType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingOrientationTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectMotionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectTypePedestrianType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClass.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassVerticalType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassBodyType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassCompositionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorPosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubposition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBox.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeSphereRadius.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeHorizontalStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBodyStructure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlaneStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeComposedStructureId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeTypeUndefined.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationModeTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusSubTypeUnknown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypePosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeDirection.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingInvalidType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingOrientationTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ObjectMotionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectTypePedestrianType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClass.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassVerticalType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassBodyType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassCompositionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorPosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubposition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBox.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeSphereRadius.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeHorizontalStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBodyStructure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlaneStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeComposedStructureId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeTypeUndefined.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPath.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPathStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMU.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMUStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Objects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OdometryStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfiguration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfigurationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatusStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfileStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Covariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldOfView.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValueMap.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValuePair.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LocalizationIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchingIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Object.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectBase.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectClassification.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectTracking.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Orientation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Position.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Probability.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Shape.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Topology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Track.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TrackPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Variance.\n" + ] + } + ], + "source": [ + "converter.convert()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/examples/Convert messages.ipynb.license b/docs/source/examples/Convert messages.ipynb.license new file mode 100644 index 0000000..6605644 --- /dev/null +++ b/docs/source/examples/Convert messages.ipynb.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/Parse messages.ipynb b/docs/source/examples/Parse messages.ipynb new file mode 100644 index 0000000..ff91330 --- /dev/null +++ b/docs/source/examples/Parse messages.ipynb @@ -0,0 +1,312 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from capella_ros_tools.modules.messages.parser import MessageDef\n", + "from IPython.display import display" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "msg_name = \"CameraInfo\"\n", + "msg_string = \"\"\"\n", + "# This message defines meta information for a camera. It should be in a\n", + "# camera namespace on topic \"camera_info\" and accompanied by up to five\n", + "# image topics named:\n", + "#\n", + "# image_raw - raw data from the camera driver, possibly Bayer encoded\n", + "# image - monochrome, distorted\n", + "# image_color - color, distorted\n", + "# image_rect - monochrome, rectified\n", + "# image_rect_color - color, rectified\n", + "#\n", + "# The image_pipeline contains packages (image_proc, stereo_image_proc)\n", + "# for producing the four processed image topics from image_raw and\n", + "# camera_info. The meaning of the camera parameters are described in\n", + "# detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.\n", + "#\n", + "# The image_geometry package provides a user-friendly interface to\n", + "# common operations using this meta information. If you want to, e.g.,\n", + "# project a 3d point into image coordinates, we strongly recommend\n", + "# using image_geometry.\n", + "#\n", + "# If the camera is uncalibrated, the matrices D, K, R, P should be left\n", + "# zeroed out. In particular, clients may assume that K[0] == 0.0\n", + "# indicates an uncalibrated camera.\n", + "\n", + "#######################################################################\n", + "# Image acquisition info #\n", + "#######################################################################\n", + "\n", + "# Time of image acquisition, camera coordinate frame ID\n", + "std_msgs/Header header # Header timestamp should be acquisition time of image\n", + " # Header frame_id should be optical frame of camera\n", + " # origin of frame should be optical center of camera\n", + " # +x should point to the right in the image\n", + " # +y should point down in the image\n", + " # +z should point into the plane of the image\n", + "\n", + "\n", + "#######################################################################\n", + "# Calibration Parameters #\n", + "#######################################################################\n", + "# These are fixed during camera calibration. Their values will be the #\n", + "# same in all messages until the camera is recalibrated. Note that #\n", + "# self-calibrating systems may \"recalibrate\" frequently. #\n", + "# #\n", + "# The internal parameters can be used to warp a raw (distorted) image #\n", + "# to: #\n", + "# 1. An undistorted image (requires D and K) #\n", + "# 2. A rectified image (requires D, K, R) #\n", + "# The projection matrix P projects 3D points into the rectified image.#\n", + "#######################################################################\n", + "\n", + "# The image dimensions with which the camera was calibrated.\n", + "# Normally this will be the full camera resolution in pixels.\n", + "uint32 height\n", + "uint32 width\n", + "\n", + "# The distortion model used. Supported models are listed in\n", + "# sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a\n", + "# simple model of radial and tangential distortion - is sufficent.\n", + "string distortion_model\n", + "\n", + "# The distortion parameters, size depending on the distortion model.\n", + "# For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).\n", + "float64[] d\n", + "\n", + "# Intrinsic camera matrix for the raw (distorted) images.\n", + "# [fx 0 cx]\n", + "# K = [ 0 fy cy]\n", + "# [ 0 0 1]\n", + "# Projects 3D points in the camera coordinate frame to 2D pixel\n", + "# coordinates using the focal lengths (fx, fy) and principal point\n", + "# (cx, cy).\n", + "float64[9] k # 3x3 row-major matrix\n", + "\n", + "# Rectification matrix (stereo cameras only)\n", + "# A rotation matrix aligning the camera coordinate system to the ideal\n", + "# stereo image plane so that epipolar lines in both stereo images are\n", + "# parallel.\n", + "float64[9] r # 3x3 row-major matrix\n", + "\n", + "# Projection/camera matrix\n", + "# [fx' 0 cx' Tx]\n", + "# P = [ 0 fy' cy' Ty]\n", + "# [ 0 0 1 0]\n", + "# By convention, this matrix specifies the intrinsic (camera) matrix\n", + "# of the processed (rectified) image. That is, the left 3x3 portion\n", + "# is the normal camera intrinsic matrix for the rectified image.\n", + "# It projects 3D points in the camera coordinate frame to 2D pixel\n", + "# coordinates using the focal lengths (fx', fy') and principal point\n", + "# (cx', cy') - these may differ from the values in K.\n", + "# For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will\n", + "# also have R = the identity and P[1:3,1:3] = K.\n", + "# For a stereo pair, the fourth column [Tx Ty 0]' is related to the\n", + "# position of the optical center of the second camera in the first\n", + "# camera's frame. We assume Tz = 0 so both cameras are in the same\n", + "# stereo image plane. The first camera always has Tx = Ty = 0. For\n", + "# the right (second) camera of a horizontal stereo pair, Ty = 0 and\n", + "# Tx = -fx' * B, where B is the baseline between the cameras.\n", + "# Given a 3D point [X Y Z]', the projection (x, y) of the point onto\n", + "# the rectified image is given by:\n", + "# [u v w]' = P * [X Y Z 1]'\n", + "# x = u / w\n", + "# y = v / w\n", + "# This holds for both images of a stereo pair.\n", + "float64[12] p # 3x4 row-major matrix\n", + "\n", + "\n", + "#######################################################################\n", + "# Operational Parameters #\n", + "#######################################################################\n", + "# These define the image region actually captured by the camera #\n", + "# driver. Although they affect the geometry of the output image, they #\n", + "# may be changed freely without recalibrating the camera. #\n", + "#######################################################################\n", + "\n", + "# Binning refers here to any camera setting which combines rectangular\n", + "# neighborhoods of pixels into larger \"super-pixels.\" It reduces the\n", + "# resolution of the output image to\n", + "# (width / binning_x) x (height / binning_y).\n", + "# The default values binning_x = binning_y = 0 is considered the same\n", + "# as binning_x = binning_y = 1 (no subsampling).\n", + "uint32 binning_x\n", + "uint32 binning_y\n", + "\n", + "# Region of interest (subwindow of full camera resolution), given in\n", + "# full resolution (unbinned) image coordinates. A particular ROI\n", + "# always denotes the same window of pixels on the camera sensor,\n", + "# regardless of binning settings.\n", + "# The default setting of roi (all values 0) is considered the same as\n", + "# full resolution (roi.width = width, roi.height = height).\n", + "RegionOfInterest roi\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

CameraInfo

# This message defines meta information for a camera. It should be in a
# camera namespace on topic \"camera_info\" and accompanied by up to five
# image topics named:
#
# image_raw - raw data from the camera driver, possibly Bayer encoded
# image - monochrome, distorted
# image_color - color, distorted
# image_rect - monochrome, rectified
# image_rect_color - color, rectified
#
# The image_pipeline contains packages (image_proc, stereo_image_proc)
# for producing the four processed image topics from image_raw and
# camera_info. The meaning of the camera parameters are described in
# detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
#
# The image_geometry package provides a user-friendly interface to
# common operations using this meta information. If you want to, e.g.,
# project a 3d point into image coordinates, we strongly recommend
# using image_geometry.
#
# If the camera is uncalibrated, the matrices D, K, R, P should be left
# zeroed out. In particular, clients may assume that K[0] == 0.0
# indicates an uncalibrated camera.
#######################################################################
# Image acquisition info #
#######################################################################
#######################################################################
# Calibration Parameters #
#######################################################################
# These are fixed during camera calibration. Their values will be the #
# same in all messages until the camera is recalibrated. Note that #
# self-calibrating systems may \"recalibrate\" frequently. #
# #
# The internal parameters can be used to warp a raw (distorted) image #
# to: #
# 1. An undistorted image (requires D and K) #
# 2. A rectified image (requires D, K, R) #
# The projection matrix P projects 3D points into the rectified image.#
#######################################################################
#######################################################################
# Operational Parameters #
#######################################################################
# These define the image region actually captured by the camera #
# driver. Although they affect the geometry of the output image, they #
# may be changed freely without recalibrating the camera. #
#######################################################################

Fields

  1. std_msgs/Header header
    # Time of image acquisition, camera coordinate frame ID
    # Header timestamp should be acquisition time of image
    # Header frame_id should be optical frame of camera
    # origin of frame should be optical center of camera
    # +x should point to the right in the image
    # +y should point down in the image
    # +z should point into the plane of the image
  2. uint32 height
    # The image dimensions with which the camera was calibrated.
    # Normally this will be the full camera resolution in pixels.
  3. uint32 width
    # The image dimensions with which the camera was calibrated.
    # Normally this will be the full camera resolution in pixels.
  4. string distortion_model
    # The distortion model used. Supported models are listed in
    # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
    # simple model of radial and tangential distortion - is sufficent.
  5. float64[] d
    # The distortion parameters, size depending on the distortion model.
    # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
  6. float64[9.0] k
    # Intrinsic camera matrix for the raw (distorted) images.
    # [fx 0 cx]
    # K = [ 0 fy cy]
    # [ 0 0 1]
    # Projects 3D points in the camera coordinate frame to 2D pixel
    # coordinates using the focal lengths (fx, fy) and principal point
    # (cx, cy).
    # 3x3 row-major matrix
  7. float64[9.0] r
    # Rectification matrix (stereo cameras only)
    # A rotation matrix aligning the camera coordinate system to the ideal
    # stereo image plane so that epipolar lines in both stereo images are
    # parallel.
    # 3x3 row-major matrix
  8. float64[12.0] p
    # Projection/camera matrix
    # [fx' 0 cx' Tx]
    # P = [ 0 fy' cy' Ty]
    # [ 0 0 1 0]
    # By convention, this matrix specifies the intrinsic (camera) matrix
    # of the processed (rectified) image. That is, the left 3x3 portion
    # is the normal camera intrinsic matrix for the rectified image.
    # It projects 3D points in the camera coordinate frame to 2D pixel
    # coordinates using the focal lengths (fx', fy') and principal point
    # (cx', cy') - these may differ from the values in K.
    # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
    # also have R = the identity and P[1:3,1:3] = K.
    # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
    # position of the optical center of the second camera in the first
    # camera's frame. We assume Tz = 0 so both cameras are in the same
    # stereo image plane. The first camera always has Tx = Ty = 0. For
    # the right (second) camera of a horizontal stereo pair, Ty = 0 and
    # Tx = -fx' * B, where B is the baseline between the cameras.
    # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
    # the rectified image is given by:
    # [u v w]' = P * [X Y Z 1]'
    # x = u / w
    # y = v / w
    # This holds for both images of a stereo pair.
    # 3x4 row-major matrix
  9. uint32 binning_x
    # Binning refers here to any camera setting which combines rectangular
    # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
    # resolution of the output image to
    # (width / binning_x) x (height / binning_y).
    # The default values binning_x = binning_y = 0 is considered the same
    # as binning_x = binning_y = 1 (no subsampling).
  10. uint32 binning_y
    # Binning refers here to any camera setting which combines rectangular
    # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
    # resolution of the output image to
    # (width / binning_x) x (height / binning_y).
    # The default values binning_x = binning_y = 0 is considered the same
    # as binning_x = binning_y = 1 (no subsampling).
  11. RegionOfInterest roi
    # Region of interest (subwindow of full camera resolution), given in
    # full resolution (unbinned) image coordinates. A particular ROI
    # always denotes the same window of pixels on the camera sensor,
    # regardless of binning settings.
    # The default setting of roi (all values 0) is considered the same as
    # full resolution (roi.width = width, roi.height = height).

Enums

    " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", + "display(msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "msg_name = \"DiagnosticStatus\"\n", + "msg_string = \"\"\"\n", + "# This message holds the status of an individual component of the robot.\n", + "\n", + "# Possible levels of operations.\n", + "byte OK=0\n", + "byte WARN=1\n", + "byte ERROR=2\n", + "byte STALE=3\n", + "\n", + "# Level of operation enumerated above.\n", + "byte level\n", + "# A description of the test/component reporting.\n", + "string name\n", + "# A description of the status.\n", + "string message\n", + "# A hardware unique string.\n", + "string hardware_id\n", + "# An array of values associated with the status.\n", + "KeyValue[] values\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

    DiagnosticStatus

    # This message holds the status of an individual component of the robot.

    Fields

    1. byte level
      # Level of operation enumerated above.
    2. string name
      # A description of the test/component reporting.
    3. string message
      # A description of the status.
    4. string hardware_id
      # A hardware unique string.
    5. KeyValue[] values
      # An array of values associated with the status.

    Enums

    1. DiagnosticStatus
      # Possible levels of operations.
      • byte OK = 0
      • byte WARN = 1
      • byte ERROR = 2
      • byte STALE = 3
    " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", + "display(msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "msg_name = \"PointCloud2\"\n", + "msg_string = \"\"\"\n", + "# This message holds a collection of N-dimensional points, which may\n", + "# contain additional information such as normals, intensity, etc. The\n", + "# point data is stored as a binary blob, its layout described by the\n", + "# contents of the \"fields\" array.\n", + "#\n", + "# The point cloud data may be organized 2d (image-like) or 1d (unordered).\n", + "# Point clouds organized as 2d images may be produced by camera depth sensors\n", + "# such as stereo or time-of-flight.\n", + "\n", + "# Time of sensor data acquisition, and the coordinate frame ID (for 3d points).\n", + "std_msgs/Header header\n", + "\n", + "# 2D structure of the point cloud. If the cloud is unordered, height is\n", + "# 1 and width is the length of the point cloud.\n", + "uint32 height\n", + "uint32 width\n", + "\n", + "# Describes the channels and their layout in the binary data blob.\n", + "PointField[] fields\n", + "\n", + "bool is_bigendian # Is this data bigendian?\n", + "uint32 point_step # Length of a point in bytes\n", + "uint32 row_step # Length of a row in bytes\n", + "uint8[] data # Actual point data, size is (row_step*height)\n", + "\n", + "bool is_dense # True if there are no invalid points\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

    PointCloud2

    # This message holds a collection of N-dimensional points, which may
    # contain additional information such as normals, intensity, etc. The
    # point data is stored as a binary blob, its layout described by the
    # contents of the \"fields\" array.
    #
    # The point cloud data may be organized 2d (image-like) or 1d (unordered).
    # Point clouds organized as 2d images may be produced by camera depth sensors
    # such as stereo or time-of-flight.

    Fields

    1. std_msgs/Header header
      # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
    2. uint32 height
      # 2D structure of the point cloud. If the cloud is unordered, height is
      # 1 and width is the length of the point cloud.
    3. uint32 width
      # 2D structure of the point cloud. If the cloud is unordered, height is
      # 1 and width is the length of the point cloud.
    4. PointField[] fields
      # Describes the channels and their layout in the binary data blob.
    5. bool is_bigendian
      # Is this data bigendian?
    6. uint32 point_step
      # Length of a point in bytes
    7. uint32 row_step
      # Length of a row in bytes
    8. uint8[] data
      # Actual point data, size is (row_step*height)
    9. bool is_dense
      # True if there are no invalid points

    Enums

      " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", + "display(msgs)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/examples/Parse messages.ipynb.license b/docs/source/examples/Parse messages.ipynb.license new file mode 100644 index 0000000..6605644 --- /dev/null +++ b/docs/source/examples/Parse messages.ipynb.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/empty_project_52/.project b/docs/source/examples/data/empty_project_52/.project new file mode 100644 index 0000000..5315043 --- /dev/null +++ b/docs/source/examples/data/empty_project_52/.project @@ -0,0 +1,12 @@ + + + empty_project_52 + + + + + + + org.polarsys.capella.project.nature + + diff --git a/docs/source/examples/data/empty_project_52/.project.license b/docs/source/examples/data/empty_project_52/.project.license new file mode 100644 index 0000000..6605644 --- /dev/null +++ b/docs/source/examples/data/empty_project_52/.project.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.afm b/docs/source/examples/data/empty_project_52/empty_project_52.afm new file mode 100644 index 0000000..33d102e --- /dev/null +++ b/docs/source/examples/data/empty_project_52/empty_project_52.afm @@ -0,0 +1,4 @@ + + + + diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.afm.license b/docs/source/examples/data/empty_project_52/empty_project_52.afm.license new file mode 100644 index 0000000..6605644 --- /dev/null +++ b/docs/source/examples/data/empty_project_52/empty_project_52.afm.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.aird b/docs/source/examples/data/empty_project_52/empty_project_52.aird new file mode 100644 index 0000000..63f8ae5 --- /dev/null +++ b/docs/source/examples/data/empty_project_52/empty_project_52.aird @@ -0,0 +1,29 @@ + + + empty_project_52.afm + empty_project_52.capella + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.aird.license b/docs/source/examples/data/empty_project_52/empty_project_52.aird.license new file mode 100644 index 0000000..6605644 --- /dev/null +++ b/docs/source/examples/data/empty_project_52/empty_project_52.aird.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.capella b/docs/source/examples/data/empty_project_52/empty_project_52.capella new file mode 100644 index 0000000..836b9e3 --- /dev/null +++ b/docs/source/examples/data/empty_project_52/empty_project_52.capella @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.capella.license b/docs/source/examples/data/empty_project_52/empty_project_52.capella.license new file mode 100644 index 0000000..6605644 --- /dev/null +++ b/docs/source/examples/data/empty_project_52/empty_project_52.capella.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +SPDX-License-Identifier: Apache-2.0 diff --git a/pyproject.toml b/pyproject.toml index 74d9840..bb4fa1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,9 +9,9 @@ build-backend = "setuptools.build_meta" dynamic = ["version"] name = "capella-ros-tools" -description = "Tools for using ROS with Capella" +description = "API and scripts to parse .msg files and convert them to Capella" readme = "README.md" -requires-python = ">=3.10, <3.12" +requires-python = ">=3.9, <3.12" license = { text = "Apache-2.0" } authors = [ { name = "DB Netz AG" }, @@ -23,11 +23,16 @@ classifiers = [ "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", - ] + "Programming Language :: Python :: 3.11", +] dependencies = [ "click", - "capellambse", + "capellambse @ git+https://github.com/DSD-DBS/py-capellambse.git@more-filepath-props", + "capellambse_context_diagrams", + "fastapi", + "uvicorn[standard]", ] [project.urls] @@ -49,7 +54,7 @@ test = [ [tool.black] line-length = 79 -target-version = ["py310"] +target-version = ["py39"] [tool.coverage.run] branch = true diff --git a/tests/test_capella_ros_tools.py b/tests/test_capella_ros_tools.py new file mode 100644 index 0000000..17bcb5d --- /dev/null +++ b/tests/test_capella_ros_tools.py @@ -0,0 +1,8 @@ +# Copyright DB Netz AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +import capella_ros_tools + + +def test_add_some_tests_here(): + ... From 2b122bdad0c0568b6a8cc56991cf59be44d495dc Mon Sep 17 00:00:00 2001 From: huyenngn Date: Thu, 21 Dec 2023 07:41:53 +0100 Subject: [PATCH 10/47] fix: Eliminate duplicates --- capella_ros_tools/__main__.py | 6 +- .../display/templates/class.html | 134 +- .../modules/capella/serializer.py | 21 +- capella_ros_tools/modules/messages/parser.py | 31 +- capella_ros_tools/scripts/msg2capella.py | 18 +- docs/source/examples/Convert messages.ipynb | 1246 +---------------- pyproject.toml | 1 - 7 files changed, 225 insertions(+), 1232 deletions(-) diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 30f124c..c40c1db 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -23,9 +23,9 @@ @click.option( "--exists-action", "action", - type=click.Choice(["k", "o", "a"], case_sensitive=False), + type=click.Choice(["k", "o", "a", "c"], case_sensitive=False), default="c" if sys.stdin.isatty() else "a", - help="Default action when an element already exists: (k)eep, (o)verwrite, (a)bort.", + help="Default action when an element already exists: (c)heck, (k)eep, (o)verwrite, (a)bort.", ) @click.option("--port", "-p", type=int, help="Port for HTML display.") @click.option( @@ -43,7 +43,7 @@ nargs=2, type=( click.Choice(["capella", "messages"]), - click.Path(exists=True, path_type=Path), + click.Path(path_type=Path), ), required=True, help="Output file type and path.", diff --git a/capella_ros_tools/display/templates/class.html b/capella_ros_tools/display/templates/class.html index 6e41fc7..f22e83b 100644 --- a/capella_ros_tools/display/templates/class.html +++ b/capella_ros_tools/display/templates/class.html @@ -55,9 +55,137 @@

      diff --git a/capella_ros_tools/modules/capella/serializer.py b/capella_ros_tools/modules/capella/serializer.py index 9f617c9..9d39185 100644 --- a/capella_ros_tools/modules/capella/serializer.py +++ b/capella_ros_tools/modules/capella/serializer.py @@ -42,7 +42,9 @@ def create_classes( overlap = [] for cls in classes: try: - overlap.append(package.classes.by_name(cls.name)) + overlap.append( + self.model.search("Class", below=package).by_name(cls.name) + ) logger.info("Class %s already exists.", cls.name) except KeyError: package.classes.create( @@ -81,7 +83,11 @@ def create_enums( overlap = [] for enum in enums: try: - overlap.append(package.datatypes.by_name(enum.name)) + overlap.append( + self.model.search("Enumeration", below=package).by_name( + enum.name + ) + ) logger.info("Enum %s already exists.", enum.name) except KeyError: type = package.datatypes.create( @@ -146,9 +152,7 @@ def create_properties(self, cls: ClassDef, package: t.Any): try: type_package = self.data.packages.by_name(prop.type_pkg_name) except KeyError: - type_package = ( - package.parent if package is not self.data else package - ) + type_package = package try: partclass = self.model.search( @@ -177,12 +181,17 @@ def create_properties(self, cls: ClassDef, package: t.Any): continue except KeyError: pass + + try: + type_package = package.parent.packages.by_name("types") + except KeyError: + type_package = package try: property_type = self.model.search( "Enumeration", below=type_package ).by_name(prop.type_name) except KeyError: - property_type = self._find_type(prop.type_name, type_package) + property_type = self._find_type(prop.type_name, package) attribute = self._create_composition( superclass, prop, property_type diff --git a/capella_ros_tools/modules/messages/parser.py b/capella_ros_tools/modules/messages/parser.py index 3efab6c..4e615aa 100644 --- a/capella_ros_tools/modules/messages/parser.py +++ b/capella_ros_tools/modules/messages/parser.py @@ -41,12 +41,12 @@ VALID_MESSAGE_NAME_PATTERN = "[A-Z][A-Za-z0-9]*" -VALID_CONSTANT_NAME_PATTERN = "[A-Z][A-Z0-9_]*?[A-Z0-9]*" +VALID_CONSTANT_NAME_PATTERN = "[A-Z][A-Z0-9_]*[A-Z0-9]*" VALID_REF_COMMENT_PATTERN = re.compile( r"cf\.\s*" rf"({VALID_MESSAGE_NAME_PATTERN})" r"(?:,\s*" - rf"({VALID_CONSTANT_NAME_PATTERN}_XXX))?" + rf"({VALID_CONSTANT_NAME_PATTERN}))?" ) @@ -214,18 +214,27 @@ def _process_enums(msg): for enum in msg.enums: _rename_enum(enum) - to_delete = set() + to_delete = [] for i, enum in enumerate(msg.enums): - # combine enums with the same name - if i in to_delete: + # combine enums with the same name or have just 1 value + if enum in to_delete: continue + + try: + if len(enum.values) == 1: + msg.enums[i + 1].values = enum.values + msg.enums[i + 1].values + to_delete.append(enum) + continue + except IndexError: + pass + indeces = [ i for i, other_enum in enumerate(msg.enums) if other_enum.name is enum.name and other_enum is not enum ] for i in indeces: - to_delete.add(i) + to_delete.append(msg.enums[i]) for value in msg.enums[i].values: enum.values.append( ConstantDef( @@ -236,8 +245,8 @@ def _process_enums(msg): ) ) - for i in to_delete: - del msg.enums[i] + for enum in to_delete: + msg.enums.remove(enum) for enum in msg.enums: match_name = [ @@ -282,7 +291,11 @@ def _process_comments(instance): # reference to enum ref_file_name, ref_common_prefix = match.groups() instance.type.name = ( - _get_enum_identifier(ref_common_prefix[:-4]) + _get_enum_identifier( + ref_common_prefix[:-4] + if ref_common_prefix.endswith("_XXX") + else ref_common_prefix + ) if ref_common_prefix else ref_file_name ) diff --git a/capella_ros_tools/scripts/msg2capella.py b/capella_ros_tools/scripts/msg2capella.py index bc7c036..010c5c9 100644 --- a/capella_ros_tools/scripts/msg2capella.py +++ b/capella_ros_tools/scripts/msg2capella.py @@ -94,14 +94,7 @@ def _add_objects( ): packages = [p.name for p in current_pkg_def.packages] self.model.create_packages(packages, current_root) - classes = [ - ClassDef(c.name, [], "\n".join(c.annotations)) - for c in current_pkg_def.messages - if c.fields - ] - overlap = self.model.create_classes(classes, current_root) - self._resolve_overlap(overlap, self.model.delete_classes, current_root) - self.model.create_classes(classes, current_root) + enums = [ EnumDef( e.name, @@ -124,6 +117,15 @@ def _add_objects( self._resolve_overlap(overlap, self.model.delete_enums, current_root) self.model.create_enums(enums, current_root) + classes = [ + ClassDef(c.name, [], "\n".join(c.annotations)) + for c in current_pkg_def.messages + if c.fields + ] + overlap = self.model.create_classes(classes, current_root) + self._resolve_overlap(overlap, self.model.delete_classes, current_root) + self.model.create_classes(classes, current_root) + for new_pkg_def in current_pkg_def.packages: new_root = current_root.packages.by_name(new_pkg_def.name) self._add_objects(new_pkg_def, new_root) diff --git a/docs/source/examples/Convert messages.ipynb b/docs/source/examples/Convert messages.ipynb index d756412..b3a19dd 100644 --- a/docs/source/examples/Convert messages.ipynb +++ b/docs/source/examples/Convert messages.ipynb @@ -24,15 +24,33 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:capellambse.model:Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "WARNING:capellambse.model:Property values are not available in this model\n" + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[3], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m converter \u001b[38;5;241m=\u001b[39m \u001b[43mmsg2capella\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mConverter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcapella_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlayer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mo\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/scripts/msg2capella.py:55\u001b[0m, in \u001b[0;36mConverter.__init__\u001b[0;34m(self, msg_path, capella_path, layer, action, no_deps)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 49\u001b[0m msg_path: t\u001b[38;5;241m.\u001b[39mAny,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 53\u001b[0m no_deps: \u001b[38;5;28mbool\u001b[39m,\n\u001b[1;32m 54\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 55\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmsgs \u001b[38;5;241m=\u001b[39m \u001b[43mMessagePkgDef\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_pkg_folder\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;241m=\u001b[39m CapellaModel(capella_path, layer)\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maction \u001b[38;5;241m=\u001b[39m action\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:326\u001b[0m, in \u001b[0;36mMessagePkgDef.from_pkg_folder\u001b[0;34m(cls, root_dir, root_dir_name)\u001b[0m\n\u001b[1;32m 323\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mcls\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, [], [])\n\u001b[1;32m 324\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m \u001b[38;5;28mdir\u001b[39m \u001b[38;5;129;01min\u001b[39;00m root_dir\u001b[38;5;241m.\u001b[39mrglob(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmsg\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m 325\u001b[0m out\u001b[38;5;241m.\u001b[39mpackages\u001b[38;5;241m.\u001b[39mappend(\n\u001b[0;32m--> 326\u001b[0m \u001b[43mMessagePkgDef\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_folder\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 327\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mdir\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mroot_dir_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mdir\u001b[39;49m\n\u001b[1;32m 328\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 329\u001b[0m )\n\u001b[1;32m 330\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m out\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:316\u001b[0m, in \u001b[0;36mMessagePkgDef.from_msg_folder\u001b[0;34m(cls, package_name, msg_pkg_dir)\u001b[0m\n\u001b[1;32m 313\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mmessages\u001b[38;5;241m.\u001b[39mappend(MessageDef\u001b[38;5;241m.\u001b[39mfrom_msg_file(msg_file))\n\u001b[1;32m 314\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m msg_file\u001b[38;5;241m.\u001b[39mis_dir():\n\u001b[1;32m 315\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mpackages\u001b[38;5;241m.\u001b[39mappend(\n\u001b[0;32m--> 316\u001b[0m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_folder\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_file\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg_file\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 317\u001b[0m )\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg_pkg\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:313\u001b[0m, in \u001b[0;36mMessagePkgDef.from_msg_folder\u001b[0;34m(cls, package_name, msg_pkg_dir)\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m msg_file \u001b[38;5;129;01min\u001b[39;00m msg_pkg_dir\u001b[38;5;241m.\u001b[39miterdir():\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m msg_file\u001b[38;5;241m.\u001b[39msuffix \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.msg\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m--> 313\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mmessages\u001b[38;5;241m.\u001b[39mappend(\u001b[43mMessageDef\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_file\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_file\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 314\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m msg_file\u001b[38;5;241m.\u001b[39mis_dir():\n\u001b[1;32m 315\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mpackages\u001b[38;5;241m.\u001b[39mappend(\n\u001b[1;32m 316\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mfrom_msg_folder(msg_file\u001b[38;5;241m.\u001b[39mname, msg_file)\n\u001b[1;32m 317\u001b[0m )\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:110\u001b[0m, in \u001b[0;36mMessageDef.from_msg_file\u001b[0;34m(cls, msg_file)\u001b[0m\n\u001b[1;32m 108\u001b[0m msg_name \u001b[38;5;241m=\u001b[39m msg_file\u001b[38;5;241m.\u001b[39mstem\n\u001b[1;32m 109\u001b[0m message_string \u001b[38;5;241m=\u001b[39m msg_file\u001b[38;5;241m.\u001b[39mread_text()\n\u001b[0;32m--> 110\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_string\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmessage_string\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:184\u001b[0m, in \u001b[0;36mMessageDef.from_msg_string\u001b[0;34m(cls, msg_name, message_string)\u001b[0m\n\u001b[1;32m 181\u001b[0m last_element \u001b[38;5;241m=\u001b[39m msg\u001b[38;5;241m.\u001b[39mfields[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n\u001b[1;32m 183\u001b[0m \u001b[38;5;66;03m# condense and rename enums\u001b[39;00m\n\u001b[0;32m--> 184\u001b[0m \u001b[43m_process_enums\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 186\u001b[0m \u001b[38;5;66;03m# condense comment lines, extract special annotations\u001b[39;00m\n\u001b[1;32m 187\u001b[0m _process_comments(msg)\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:227\u001b[0m, in \u001b[0;36m_process_enums\u001b[0;34m(msg)\u001b[0m\n\u001b[1;32m 225\u001b[0m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m=\u001b[39m enum\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m+\u001b[39m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues\n\u001b[1;32m 226\u001b[0m to_delete\u001b[38;5;241m.\u001b[39madd(i)\n\u001b[0;32m--> 227\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[1;32m 228\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mIndexError\u001b[39;00m:\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:227\u001b[0m, in \u001b[0;36m_process_enums\u001b[0;34m(msg)\u001b[0m\n\u001b[1;32m 225\u001b[0m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m=\u001b[39m enum\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m+\u001b[39m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues\n\u001b[1;32m 226\u001b[0m to_delete\u001b[38;5;241m.\u001b[39madd(i)\n\u001b[0;32m--> 227\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[1;32m 228\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mIndexError\u001b[39;00m:\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1395\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1344\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", + "File \u001b[0;32m~/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -42,1208 +60,32 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalID already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DiagnosticStatusLevel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatusLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum DiagnosticStatusLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Accel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class AccelStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovarianceStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Inertia already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InertiaStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Point already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Point32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Polygon already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PolygonStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Pose already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Pose2D already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovarianceStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Quaternion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class QuaternionStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Transform already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TransformStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Twist already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TwistStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovarianceStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3Stamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Wrench already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class WrenchStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Accel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Inertia.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InertiaStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Polygon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PolygonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose2D.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Quaternion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted QuaternionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transform.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransformStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Twist.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3Stamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Wrench.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted WrenchStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Accel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Inertia.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InertiaStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Point.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Point32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Polygon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PolygonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose2D.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Quaternion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class QuaternionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Transform.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransformStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Twist.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3Stamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Wrench.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class WrenchStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GridCells already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMetaData already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class OccupancyGrid already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Path already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GridCells.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMetaData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted OccupancyGrid.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Path.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GridCells.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMetaData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class OccupancyGrid.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Path.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class BatteryState already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CameraInfo already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ChannelFloat32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CompressedImage already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FluidPressure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Illuminance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Image already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Imu already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JointState already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Joy already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedback already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedbackArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LaserEcho already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LaserScan already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MagneticField already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointState already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiEchoLaserScan already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatFix already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud2 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointField already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Range already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RegionOfInterest already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RelativeHumidity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Temperature already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TimeReference already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted BatteryState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CameraInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ChannelFloat32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CompressedImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FluidPressure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Illuminance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Image.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Imu.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Joy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedbackArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserEcho.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MagneticField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiEchoLaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFix.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud2.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Range.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RegionOfInterest.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RelativeHumidity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Temperature.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TimeReference.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class BatteryState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CameraInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ChannelFloat32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CompressedImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FluidPressure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Illuminance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Image.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Imu.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Joy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedbackArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserEcho.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MagneticField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiEchoLaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatFix.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud2.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Range.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RegionOfInterest.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RelativeHumidity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Temperature.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TimeReference.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyHealth already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyTechnology already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Type already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum NavSatFixPositionCovarianceType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Status already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Service already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PointFieldDatatype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum RangeRadiationType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyHealth.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyTechnology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Type.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFixPositionCovarianceType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Status.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Service.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointFieldDatatype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RangeRadiationType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyHealth.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyTechnology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Type.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum NavSatFixPositionCovarianceType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Status.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Service.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PointFieldDatatype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum RangeRadiationType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Mesh already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MeshTriangle already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Plane already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SolidPrimitive already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mesh.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshTriangle.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Plane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Mesh.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshTriangle.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Plane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SolidPrimitive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SolidPrimitiveType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Box already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SphereRadius already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Cylinder already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Cone already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PrismHeight already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitiveType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Box.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SphereRadius.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrismHeight.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SolidPrimitiveType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Box.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SphereRadius.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrismHeight.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Bool already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Byte already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ByteMultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Char already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ColorRGBA already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float32MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float64 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float64MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Header already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int16 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int16MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int32MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int64 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int64MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int8 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int8MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayDimension already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayLayout already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class String already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Bool.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Byte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ByteMultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Char.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ColorRGBA.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Header.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayDimension.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayLayout.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted String.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Bool.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Byte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ByteMultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Char.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ColorRGBA.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Header.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayDimension.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayLayout.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class String.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class DisparityImage already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DisparityImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DisparityImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectory already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectoryPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectory already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectoryPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ImageMarker already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarker already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerControl already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerFeedback already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerInit already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerPose already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerUpdate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Marker already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MarkerArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MenuEntry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MeshFile already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UVCoordinate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControl.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerInit.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerPose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Marker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshFile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UVCoordinate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ImageMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerControl.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerInit.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerPose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerUpdate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Marker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MarkerArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MenuEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshFile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UVCoordinate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ImageMarkerId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerControlOrientationMode already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerFeedbackEventType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Mouse already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerUpdateType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MarkerId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MenuEntryCommandType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControlOrientationMode.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedbackEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mouse.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdateType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntryCommandType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ImageMarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerControlOrientationMode.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerFeedbackEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Mouse.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerUpdateType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MenuEntryCommandType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalInfo already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusAccepted already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusExecuting already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceling already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusSucceeded already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceled already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusAborted already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusAccepted.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusExecuting.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceling.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusSucceeded.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceled.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusAborted.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAccepted.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusExecuting.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceling.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusSucceeded.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceled.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAborted.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Duration already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Time already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Duration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Time.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Duration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Time.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class State already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Transition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionDescription already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionEvent already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted State.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class State.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Transition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StateId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateUnconfigured already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateInactive already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateActive already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateFinalized already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateConfiguring already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateCleaningup already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateShuttingdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateActivating already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateDeactivating already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateErrorprocessing already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionConfigure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCleanup already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActivate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionDeactivate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionUnconfiguredShutdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionInactiveShutdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActiveShutdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionDestroy already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnConfigure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnCleanup already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnActivate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnDeactivate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnShutdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnError already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackSuccess already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackFailure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackError already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StateId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateUnconfigured.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateInactive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateActive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateFinalized.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateConfiguring.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateCleaningup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateShuttingdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateActivating.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateDeactivating.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateErrorprocessing.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionConfigure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCleanup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDeactivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionUnconfiguredShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionInactiveShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActiveShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDestroy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnConfigure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnCleanup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnDeactivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackSuccess.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackFailure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StateId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateUnconfigured.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateInactive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateActive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateFinalized.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateConfiguring.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateCleaningup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateShuttingdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateActivating.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateDeactivating.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateErrorprocessing.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionConfigure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCleanup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionDeactivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionUnconfiguredShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionInactiveShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActiveShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionDestroy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnConfigure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnCleanup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnDeactivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackSuccess.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackFailure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FloatingPointRange already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IntegerRange already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ListParametersResult already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Log already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LoggerLevel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Parameter already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterDescriptor already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEvent already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEventDescriptors already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterValue already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SetLoggerLevelsResult already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SetParametersResult already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FloatingPointRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IntegerRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ListParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Log.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterDescriptor.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEventDescriptors.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetLoggerLevelsResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FloatingPointRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IntegerRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ListParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Log.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LoggerLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterDescriptor.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEventDescriptors.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SetLoggerLevelsResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SetParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LogLevel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Info already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Warn already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Error already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Fatal already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LoggerLevelType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ParameterNotSet already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Parameter already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LogLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Info.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Warn.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Error.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Fatal.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevelType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterNotSet.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LogLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Info.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Warn.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Error.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Fatal.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LoggerLevelType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ParameterNotSet.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Clock already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Clock.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Clock.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ServiceEventInfo already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ServiceEventInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ServiceEventInfoEventType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfoEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ServiceEventInfoEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MetricsMessage already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class StatisticDataPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MetricsMessage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticDataPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MetricsMessage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StatisticDataPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatisticsDataTypeUninitialized already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatisticsDataType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticsDataTypeUninitialized.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticsDataType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticsDataTypeUninitialized.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticsDataType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Builtins already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Builtins.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Builtins.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Field already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IndividualTypeDescription already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TypeDescription already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TypeSource already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Field.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IndividualTypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeSource.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Field.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IndividualTypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeSource.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeTypeId 0 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeNestedType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBoolean already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeByte already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeFixed already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBounded already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeTypeId 0.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeNestedType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeBoolean.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeByte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeFixed.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeBounded.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeTypeId 0.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeNestedType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBoolean.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeByte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeFixed.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBounded.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UUID already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UUID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UUID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Accel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Inertia.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InertiaStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Polygon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PolygonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose2D.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Quaternion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for QuaternionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transform.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransformStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Twist.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3Stamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Wrench.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for WrenchStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GridCells.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMetaData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OccupancyGrid.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Path.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for BatteryState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CameraInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ChannelFloat32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CompressedImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FluidPressure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Illuminance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Image.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Imu.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Joy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedbackArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserEcho.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MagneticField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiEchoLaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatFix.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud2.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Range.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RegionOfInterest.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RelativeHumidity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Temperature.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TimeReference.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Mesh.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshTriangle.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Plane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SolidPrimitive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Bool.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Byte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ByteMultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Char.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ColorRGBA.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Header.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayDimension.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayLayout.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for String.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DisparityImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ImageMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerControl.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerInit.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerPose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerUpdate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Marker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MarkerArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MenuEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshFile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UVCoordinate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Duration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Time.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for State.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FloatingPointRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IntegerRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ListParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Log.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LoggerLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterDescriptor.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEventDescriptors.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetLoggerLevelsResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Clock.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ServiceEventInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MetricsMessage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StatisticDataPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Builtins.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Field.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IndividualTypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeSource.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UUID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalization already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupelStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPath already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPathStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalization already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalizationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IMU already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IMUStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalization already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupelStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Objects already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectsStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class OdometryStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizon already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformation already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjects already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjectsStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPath.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPathStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMU.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMUStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Objects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted OdometryStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPath.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPathStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IMU.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IMUStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Objects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class OdometryStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfiguration already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfigurationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatusStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersionStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfile already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfileStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfiguration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfigurationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfileStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfiguration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfigurationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatusStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfileStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Covariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FieldOfView already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ID already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValueMap already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValuePair already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LocalizationIntegrity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchingIntegrity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Object already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectBase already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectClassification already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectTracking already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Orientation already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Position already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Probability already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonData already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationEntry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorIntegrity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Shape already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Topology already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Track already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TrackPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Variance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Covariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldOfView.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValueMap.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValuePair.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Object.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectBase.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectClassification.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectTracking.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Orientation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Position.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Probability.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Shape.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Topology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Track.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Variance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Covariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldOfView.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValueMap.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValuePair.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LocalizationIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchingIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Object.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectBase.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectClassification.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectTracking.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Orientation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Position.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Probability.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Shape.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Topology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Track.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TrackPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Variance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationModeTypes already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusSubTypeUnknown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeMotion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypePosition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeDirection already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingInvalidType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingOrientationTypes already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ObjectMotionType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectTypePedestrianType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClass already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassVerticalType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassBodyType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassCompositionType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorPosition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubposition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlane already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBox already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeSphereRadius already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCylinder already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCone already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureTopPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureBottomPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeHorizontalStructurePoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBodyStructure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlaneStructurePoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeComposedStructureId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeTypeUndefined already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationModeTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusSubTypeUnknown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypePosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeDirection.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingInvalidType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingOrientationTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectMotionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectTypePedestrianType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClass.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassVerticalType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassBodyType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassCompositionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorPosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubposition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBox.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeSphereRadius.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeHorizontalStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBodyStructure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlaneStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeComposedStructureId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeTypeUndefined.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationModeTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusSubTypeUnknown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypePosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeDirection.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingInvalidType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingOrientationTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ObjectMotionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectTypePedestrianType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClass.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassVerticalType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassBodyType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassCompositionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorPosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubposition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBox.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeSphereRadius.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeHorizontalStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBodyStructure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlaneStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeComposedStructureId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeTypeUndefined.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPath.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPathStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMU.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMUStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Objects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OdometryStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfiguration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfigurationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatusStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfileStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Covariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldOfView.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValueMap.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValuePair.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LocalizationIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchingIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Object.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectBase.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectClassification.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectTracking.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Orientation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Position.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Probability.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Shape.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Topology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Track.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TrackPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Variance.\n" + "Traceback (most recent call last):\n", + " File \"_pydevd_bundle/pydevd_cython.pyx\", line 577, in _pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception\n", + " File \"_pydevd_bundle/pydevd_cython.pyx\", line 312, in _pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\n", + " File \"/home/huyenngn/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py\", line 2070, in do_wait_suspend\n", + " keep_suspended = self._do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\n", + " File \"/home/huyenngn/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py\", line 2106, in _do_wait_suspend\n", + " time.sleep(0.01)\n", + "KeyboardInterrupt\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'converter' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[3], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mconverter\u001b[49m\u001b[38;5;241m.\u001b[39mconvert()\n", + "\u001b[0;31mNameError\u001b[0m: name 'converter' is not defined" ] } ], diff --git a/pyproject.toml b/pyproject.toml index bb4fa1c..e1ae6cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,6 @@ classifiers = [ dependencies = [ "click", "capellambse @ git+https://github.com/DSD-DBS/py-capellambse.git@more-filepath-props", - "capellambse_context_diagrams", "fastapi", "uvicorn[standard]", ] From bf68a03b67dcf05798f729badc5f6e4146bff384 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Thu, 21 Dec 2023 07:42:43 +0100 Subject: [PATCH 11/47] feat: Convert capella to messages --- capella_ros_tools/modules/capella/parser.py | 49 +++++------ .../modules/messages/serializer.py | 44 ++++++++-- capella_ros_tools/scripts/capella2msg.py | 88 ++++++++++++++++++- 3 files changed, 145 insertions(+), 36 deletions(-) diff --git a/capella_ros_tools/modules/capella/parser.py b/capella_ros_tools/modules/capella/parser.py index 3b66a9e..3d779c2 100644 --- a/capella_ros_tools/modules/capella/parser.py +++ b/capella_ros_tools/modules/capella/parser.py @@ -19,30 +19,6 @@ def get_classes(self, package: t.Any) -> list[ClassDef]: for cls in package.classes: props = [] for prop in cls.owned_properties: - type: t.Any - if prop.type.__class__.__name__ == "Enumeration": - type = EnumDef( - prop.type.name, - [ - EnumValue( - literal.value.type.name, - literal.name, - literal.value.value, - literal.description, - ) - for literal in prop.type.owned_literals - ], - prop.type.description, - ) - elif prop.type.__class__.__name__ == "Class": - type = ClassDef( - prop.type.name, - [], - prop.type.description, - ) - else: - type = prop.type.name - type_pkg_name = prop.type.parent.name if type_pkg_name in [ "Predefined Types", @@ -52,9 +28,9 @@ def get_classes(self, package: t.Any) -> list[ClassDef]: props.append( ClassProperty( - prop.name, - type, + prop.type.name, type_pkg_name, + prop.name, prop.min_card.value, prop.max_card.value, prop.description, @@ -68,3 +44,24 @@ def get_classes(self, package: t.Any) -> list[ClassDef]: ) ) return classes + + def get_enums(self, package: t.Any) -> list[EnumDef]: + """Get enums in Capella model.""" + enums = [] + for enum in package.enumerations: + enums.append( + EnumDef( + enum.name, + [ + EnumValue( + literal.value.type.name, + literal.name, + literal.value.value, + literal.description, + ) + for literal in enum.owned_literals + ], + enum.description, + ) + ) + return enums diff --git a/capella_ros_tools/modules/messages/serializer.py b/capella_ros_tools/modules/messages/serializer.py index 5cf8557..37206b6 100644 --- a/capella_ros_tools/modules/messages/serializer.py +++ b/capella_ros_tools/modules/messages/serializer.py @@ -18,13 +18,35 @@ def to_msg_file(self, msg_file: Path): def to_msg_string(self) -> str: """Convert message to string.""" - msg_string = "\n".join(self.annotations) + "\n" - msg_string += ( - "\n".join([f"{f.type} {f.name}" for f in self.fields]) + "\n\n" - ) - msg_string += ( - "\n\n".join([f"{e.name}\n{e.values}" for e in self.enums]) + "\n\n" - ) + msg_string = "\n".join(self.annotations) + "\n\n" + for enum in self.enums: + msg_string += ( + f"# name: {enum.name}" + "\n".join(enum.annotations) + "\n" + ) + msg_string += ( + "\n".join( + [ + f"{value.type.name} {value.name} = {value.value}" + + "\n".join(self.annotations) + for value in enum.values + ] + ) + + "\n\n" + ) + + for field in self.fields: + msg_string += ( + f"{(field.type.pkg_name + '/') if field.type.pkg_name else ''}" + ) + msg_string += f"{field.type.name}" + if field.type.array_size == float("inf"): + msg_string += "[]" + elif field.type.array_size: + msg_string += f"[{field.type.array_size}]" + msg_string += ( + f" {field.name}" + "\n".join(self.annotations) + "\n\n" + ) + return msg_string @@ -36,3 +58,11 @@ def to_msg_folder(self, msg_pkg_dir: Path): msg_pkg_dir.mkdir(parents=True, exist_ok=True) for msg in self.messages: msg.to_msg_file(msg_pkg_dir / f"{msg.name}.msg") + for pkg in self.packages: + pkg.to_msg_folder(msg_pkg_dir / pkg.name) + + def to_pkg_folder(self, pkg_dir: Path): + """Write packages to folder.""" + pkg_dir.mkdir(parents=True, exist_ok=True) + for pkg in self.packages: + pkg.to_msg_folder(pkg_dir / pkg.name / "msg") diff --git a/capella_ros_tools/scripts/capella2msg.py b/capella_ros_tools/scripts/capella2msg.py index 0b65981..a085ad8 100644 --- a/capella_ros_tools/scripts/capella2msg.py +++ b/capella_ros_tools/scripts/capella2msg.py @@ -4,6 +4,16 @@ import typing as t from capella_ros_tools.modules.capella.parser import CapellaModel +from capella_ros_tools.modules.messages import ( + BaseTypeDef, + ConstantDef, + EnumDef, + FieldDef, +) +from capella_ros_tools.modules.messages.serializer import ( + MessageDef, + MessagePkgDef, +) CAPELLA_TYPE_TO_MSG = { "Boolean": "bool", @@ -26,10 +36,82 @@ class Converter: """Convert Capella data to ROS messages.""" - def __init__(self, capella_path: t.Any, layer: str, merge: str) -> None: + def __init__( + self, + msg_path: t.Any, + capella_path: t.Any, + layer: str, + action: str, + no_deps: bool, + ) -> None: + self.msg_path = msg_path + self.msgs = MessagePkgDef(msg_path.stem, [], []) self.model = CapellaModel(capella_path, layer) - self.merge = merge + self.action = action + self.no_deps = no_deps + + def _add_package(self, current_root: t.Any) -> MessagePkgDef: + """Add package to message package definition.""" + current_pkg_def = MessagePkgDef(current_root.name, [], []) + + for cls in self.model.get_classes(current_root): + current_pkg_def.messages.append( + MessageDef( + cls.name, + [ + FieldDef( + BaseTypeDef( + CAPELLA_TYPE_TO_MSG[prop.type_name] + if prop.type_name in CAPELLA_TYPE_TO_MSG + else prop.type_name, + None if prop.max_card == 1 else prop.max_card, + None + if prop.type_pkg_name == current_pkg_def.name + else prop.type_pkg_name, + ), + prop.name, + prop.description.split("\n"), + ) + for prop in cls.properties + ], + [], + cls.description.split("\n"), + ) + ) + + for enum in self.model.get_enums(current_root): + current_pkg_def.messages.append( + MessageDef( + enum.name, + [], + [ + EnumDef( + enum.name, + [ + ConstantDef( + BaseTypeDef( + CAPELLA_TYPE_TO_MSG[value.type] + ), + value.name, + str(value.value), + value.description.split("\n"), + ) + for value in enum.values + ], + [], + ) + ], + enum.description.split("\n"), + ) + ) + + for pkg_name in self.model.get_packages(current_root): + new_root = current_root.packages.by_name(pkg_name) + current_pkg_def.packages.append(self._add_package(new_root)) + + return current_pkg_def def convert(self) -> None: """Convert Capella data to ROS messages.""" - return + self.msgs.packages.append(self._add_package(self.model.data)) + self.msgs.to_pkg_folder(self.msg_path) From 09fa50e00c81b05bb0a0c5ea1ace2b95e62bb6a7 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 9 Jan 2024 10:15:38 +0100 Subject: [PATCH 12/47] feat: Make tree view draggable --- .commitlintrc.yml | 24 + .git_archival.txt | 2 +- .gitattributes | 2 +- .github/workflows/build-test-publish.yml | 9 +- .github/workflows/docs.yml | 4 +- .github/workflows/lint.yml | 6 +- .github/workflows/pr-target.yml | 81 + .gitignore | 2 +- .pre-commit-config.yaml | 14 +- CONTRIBUTING.md | 79 +- LICENSES/.license_header.txt | 4 + README.md | 6 +- capella_ros_tools/__init__.py | 3 +- capella_ros_tools/__main__.py | 19 +- capella_ros_tools/modules/__init__.py | 4 +- capella_ros_tools/modules/capella/__init__.py | 13 +- capella_ros_tools/modules/capella/parser.py | 2 +- .../modules/capella/serializer.py | 18 +- .../modules/messages/__init__.py | 29 +- capella_ros_tools/modules/messages/parser.py | 27 +- .../modules/messages/serializer.py | 12 +- capella_ros_tools/scripts/__init__.py | 5 +- capella_ros_tools/scripts/capella2msg.py | 13 +- capella_ros_tools/scripts/msg2capella.py | 14 +- capella_ros_tools/snapshot/__init__.py | 3 + capella_ros_tools/snapshot/app.py | 68 + .../snapshot/static/icons/favicon.ico | Bin 0 -> 1150 bytes .../snapshot/static/icons/favicon.ico.license | 2 + capella_ros_tools/snapshot/static/styles.css | 152 + .../snapshot/templates/class.html | 191 + .../snapshot/templates/enum.html | 56 + .../snapshot/templates/package.html | 92 + docs/Makefile | 18 +- docs/make.bat | 2 +- docs/source/_static/github-logo.svg | 2 +- docs/source/conf.py | 3 +- docs/source/examples/Import messages.ipynb | 938 ++ .../examples/Import messages.ipynb.license | 2 + docs/source/examples/Parse messages.ipynb | 53 + .../examples/Parse messages.ipynb.license | 4 +- .../data/empty_project_52/.project.license | 2 +- .../empty_project_52.afm.license | 2 +- .../empty_project_52.aird.license | 2 +- .../empty_project_52.capella.license | 4 + .../examples/data/example_msgs/CameraInfo.msg | 134 + .../data/example_msgs/DiagnosticStatus.msg | 21 + .../data/example_msgs/PointCloud2.msg | 29 + .../examples/data/melody_model_60/.project | 11 + .../data/melody_model_60/.project.license | 2 + .../melody_model_60/Melody Model Test.afm | 6 + .../Melody Model Test.afm.license | 2 + .../melody_model_60/Melody Model Test.aird | 13006 ++++++++++++++++ .../Melody Model Test.aird.license | 2 + .../melody_model_60/Melody Model Test.capella | 3124 ++++ .../Melody Model Test.capella.license | 2 + docs/source/howtos/howtos.rst | 52 + docs/source/index.rst | 44 +- docs/source/usage/usage.rst | 23 + pyproject.toml | 13 +- tests/test_capella_ros_tools.py | 2 +- 60 files changed, 18339 insertions(+), 122 deletions(-) create mode 100644 .commitlintrc.yml create mode 100644 .github/workflows/pr-target.yml create mode 100644 capella_ros_tools/snapshot/__init__.py create mode 100644 capella_ros_tools/snapshot/app.py create mode 100644 capella_ros_tools/snapshot/static/icons/favicon.ico create mode 100644 capella_ros_tools/snapshot/static/icons/favicon.ico.license create mode 100644 capella_ros_tools/snapshot/static/styles.css create mode 100644 capella_ros_tools/snapshot/templates/class.html create mode 100644 capella_ros_tools/snapshot/templates/enum.html create mode 100644 capella_ros_tools/snapshot/templates/package.html create mode 100644 docs/source/examples/Import messages.ipynb create mode 100644 docs/source/examples/Import messages.ipynb.license create mode 100644 docs/source/examples/data/example_msgs/CameraInfo.msg create mode 100644 docs/source/examples/data/example_msgs/DiagnosticStatus.msg create mode 100644 docs/source/examples/data/example_msgs/PointCloud2.msg create mode 100644 docs/source/examples/data/melody_model_60/.project create mode 100644 docs/source/examples/data/melody_model_60/.project.license create mode 100644 docs/source/examples/data/melody_model_60/Melody Model Test.afm create mode 100644 docs/source/examples/data/melody_model_60/Melody Model Test.afm.license create mode 100644 docs/source/examples/data/melody_model_60/Melody Model Test.aird create mode 100644 docs/source/examples/data/melody_model_60/Melody Model Test.aird.license create mode 100644 docs/source/examples/data/melody_model_60/Melody Model Test.capella create mode 100644 docs/source/examples/data/melody_model_60/Melody Model Test.capella.license create mode 100644 docs/source/howtos/howtos.rst create mode 100644 docs/source/usage/usage.rst diff --git a/.commitlintrc.yml b/.commitlintrc.yml new file mode 100644 index 0000000..ae711cf --- /dev/null +++ b/.commitlintrc.yml @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright DB InfraGO AG and the capellambse contributors +# SPDX-License-Identifier: CC0-1.0 +rules: + body-leading-blank: [2, always] + footer-leading-blank: [2, always] + scope-case: [2, always, lower-case] + subject-case: [2, always, sentence-case] + subject-empty: [2, never] + subject-full-stop: [2, never, .] + subject-max-length: [2, always, 72] + type-empty: [2, never] + type-enum: [2, always, [ + build, + chore, + ci, + docs, + feat, + fix, + merge, + perf, + refactor, + revert, + test, + ]] diff --git a/.git_archival.txt b/.git_archival.txt index 1c1d2e8..5a4899c 100644 --- a/.git_archival.txt +++ b/.git_archival.txt @@ -1,4 +1,4 @@ -Copyright DB Netz AG and contributors +Copyright DB InfraGO AG and contributors SPDX-License-Identifier: CC0-1.0 node: $Format:%H$ diff --git a/.gitattributes b/.gitattributes index de62da1..e9dd5d5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 * text=auto diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index 5b03088..5db9f4d 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 name: Build @@ -18,11 +18,12 @@ jobs: matrix: os: [ubuntu-latest] python_version: - - "3.9" - "3.10" + - "3.11" + - "3.12" include: - os: windows-latest - python_version: "3.9" + python_version: "3.10" steps: - uses: actions/checkout@v2 - name: Set up Python ${{matrix.python_version}} @@ -55,7 +56,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v2 with: - python-version: "3.9" + python-version: "3.10" - name: Install dependencies run: |- python -m pip install -U pip diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 45fe026..8307775 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 name: Docs @@ -18,7 +18,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-python@v2 with: - python-version: "3.9" + python-version: "3.10" - name: Upgrade pip run: | python -m pip install -U pip diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1decfee..26dc57f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 name: Lint @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: - python-version: "3.9" + python-version: "3.10" - name: Upgrade pip run: |- python -m pip install -U pip @@ -30,7 +30,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: - python-version: "3.9" + python-version: "3.10" - name: Upgrade pip run: |- python -m pip install -U pip diff --git a/.github/workflows/pr-target.yml b/.github/workflows/pr-target.yml new file mode 100644 index 0000000..ab7c0ae --- /dev/null +++ b/.github/workflows/pr-target.yml @@ -0,0 +1,81 @@ +# SPDX-FileCopyrightText: Copyright DB InfraGO AG and the capellambse contributors +# SPDX-License-Identifier: CC0-1.0 + +name: Conventional Commits + +on: + pull_request_target: + types: [opened, synchronize] + +permissions: + contents: read + pull-requests: write + +jobs: + conventional-commits: + runs-on: ubuntu-latest + steps: + - name: Checkout the base branch + # Commitlint will use the configuration that is checked out; i.e. in + # this case it will use the config from the PR's base branch, which + # must have already been approved by someone with repo write access. + # + # Because commitlint accepts arbitrary JavaScript as configuration, + # this is necessary to prevent code injection attacks. Combined with + # the `pull-requests: write` permission needed for posting comments, + # this could potentially allow an attacker to merge any code into any + # branch. + # + # However, it also means that (good) pull requests intended to change + # or extend the config will be validated against the old config, which + # may cause false errors. + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.base.ref }} + + - name: Pull the PR + run: git fetch origin +${{ github.event.pull_request.head.sha }} + + - name: Install commitlint + run: npm install -g @commitlint/cli + + - name: Validate commit messages + id: conventional-commits + continue-on-error: true + env: + SHA_FROM: ${{ github.event.pull_request.base.sha }} + SHA_TO: ${{ github.event.pull_request.head.sha }} + run: | + delim="_EOF_$(uuidgen)" + echo "validation-result<<$delim" >> "$GITHUB_OUTPUT" + r=0 + commitlint --from "$SHA_FROM" --to "$SHA_TO" >> "$GITHUB_OUTPUT" 2>&1 || r=$? + echo "$delim" >> "$GITHUB_OUTPUT" + exit $r + + - name: Post comment if validation failed + if: steps.conventional-commits.outcome == "failure" + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + TEXT: |- + The pull request does not conform to the conventional commit specification. Please ensure that your commit messages follow the spec: + + + + We also strongly recommend that you set up your development environment with pre-commit, as described in our [CONTRIBUTING guidelines](https://github.com/DSD-DBS/py-capellambse/blob/master/CONTRIBUTING.rst). This will run all the important checks right before you commit your changes, and avoids lengthy CI wait time and round trips. + + The following commits failed to validate: + + ``` + ${{ steps.conventional-commits.outputs.validation-result }} + ``` + + Here are some examples of valid commit messages: + + ``` + feat(model): Add realized_states to State and Mode + fix(aird): Fix ZeroDivisionError with zero-sized circles + docs(readme): Update project description + ``` + run: 'gh pr comment "$PR_NUMBER" -F - <<< "$TEXT"' diff --git a/.gitignore b/.gitignore index 975287e..6dddc2e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 # Byte-compiled / optimized / DLL files diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7315f4a..1919daf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,11 +1,11 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 default_install_hook_types: [commit-msg, pre-commit] default_stages: [commit, merge-commit] repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: check-added-large-files - id: check-ast @@ -26,11 +26,11 @@ repos: - id: fix-byte-order-marker - id: trailing-whitespace - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.9.1 + rev: 23.12.1 hooks: - id: black - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort - repo: https://github.com/PyCQA/docformatter @@ -47,11 +47,11 @@ repos: additional_dependencies: - pydocstyle[toml] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.5.1 + rev: v1.8.0 hooks: - id: mypy - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.4.2 + rev: v1.5.4 hooks: - id: insert-license name: Insert license headers (shell-style comments) @@ -98,6 +98,6 @@ repos: hooks: - id: reuse - repo: https://github.com/qoomon/git-conventional-commits - rev: v2.6.5 + rev: v2.6.7 hooks: - id: conventional-commits diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3bd1561..fa1edc1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,5 @@ @@ -32,10 +32,14 @@ pytest We additionally recommend that you set up your editor / IDE as follows. +- Indent with 4 spaces per level of indentation - Indent with 4 spaces per level of indentation +- Maximum line length of 79 (add a ruler / thin line / highlighting / ...) - Maximum line length of 79 (add a ruler / thin line / highlighting / ...) +- _If you use Visual Studio Code_: Consider using a platform which supports + third-party language servers more easily, and continue with the next point. - _If you use Visual Studio Code_: Consider using a platform which supports third-party language servers more easily, and continue with the next point. @@ -51,19 +55,40 @@ We additionally recommend that you set up your editor / IDE as follows. } ``` + ```json + "[python]": { + "editor.codeActionsOnSave": { + "source.organizeImports": true + } + } + ``` + + Note that the Pylance language server is not recommended, as it occasionally + causes false-positive errors for perfectly valid code. Note that the Pylance language server is not recommended, as it occasionally causes false-positive errors for perfectly valid code. +- _If you do not use VSC_: Set up your editor to use the [python-lsp-server], + and make sure that the relevant plugins are installed. You can install + everything that's needed into the virtualenv with pip: - _If you do not use VSC_: Set up your editor to use the [python-lsp-server], and make sure that the relevant plugins are installed. You can install everything that's needed into the virtualenv with pip: + [python-lsp-server]: https://github.com/python-lsp/python-lsp-server [python-lsp-server]: https://github.com/python-lsp/python-lsp-server ```sh pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy ``` + ```sh + pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy + ``` + + This will provide as-you-type linting as well as automatic formatting on + save. Language server clients are available for a wide range of editors, from + Vim/Emacs to PyCharm/IDEA. This will provide as-you-type linting as well as automatic formatting on save. Language server clients are available for a wide range of editors, from Vim/Emacs to PyCharm/IDEA. @@ -74,27 +99,47 @@ We base our code style on a modified version of the [Google style guide for Python code](https://google.github.io/styleguide/pyguide.html). The key differences are: +- **Docstrings**: The [Numpy style guide] applies here. - **Docstrings**: The [Numpy style guide] applies here. [numpy style guide]: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard + [numpy style guide]: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard + When writing docstrings for functions, use the imperative style, as per + [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". When writing docstrings for functions, use the imperative style, as per [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". [pep-257]: https://peps.python.org/pep-0257/ + [pep-257]: https://peps.python.org/pep-0257/ +- **Overridden methods**: If the documentation did not change from the base + class (i.e. the base class' method's docstring still applies without + modification), do not add a short docstring á la "See base class". This lets + automated tools pick up the full base class docstring instead, and is + therefore more useful in IDEs etc. - **Overridden methods**: If the documentation did not change from the base class (i.e. the base class' method's docstring still applies without modification), do not add a short docstring á la "See base class". This lets automated tools pick up the full base class docstring instead, and is therefore more useful in IDEs etc. +- **Linting**: Use [pylint] for static code analysis, and [mypy] for static + type checking. - **Linting**: Use [pylint] for static code analysis, and [mypy] for static type checking. [pylint]: https://github.com/PyCQA/pylint [mypy]: https://github.com/python/mypy + [pylint]: https://github.com/PyCQA/pylint + [mypy]: https://github.com/python/mypy +- **Formatting**: Use [black] as code auto-formatter. The maximum line length + is 79, as per [PEP-8]. This setting should be automatically picked up from + the `pyproject.toml` file. The reason for the shorter line length is that it + avoids wrapping and overflows in side-by-side split views (e.g. diffs) if + there's also information displayed to the side of it (e.g. a tree view of the + modified files). - **Formatting**: Use [black] as code auto-formatter. The maximum line length is 79, as per [PEP-8]. This setting should be automatically picked up from the `pyproject.toml` file. The reason for the shorter line length is that it @@ -102,33 +147,42 @@ The key differences are: there's also information displayed to the side of it (e.g. a tree view of the modified files). + [black]: https://github.com/psf/black + [pep-8]: https://www.python.org/dev/peps/pep-0008/ [black]: https://github.com/psf/black [pep-8]: https://www.python.org/dev/peps/pep-0008/ + Be aware of the different line length of 72 for docstrings. We currently do + not have a satisfactory solution to automatically apply or enforce this. Be aware of the different line length of 72 for docstrings. We currently do not have a satisfactory solution to automatically apply or enforce this. + Note that, while you're encouraged to do so in general, it is not a hard + requirement to break up long strings into smaller parts. Additionally, never + break up strings that are presented to the user in e.g. log messages, as that + makes it significantly harder to grep for them. Note that, while you're encouraged to do so in general, it is not a hard requirement to break up long strings into smaller parts. Additionally, never break up strings that are presented to the user in e.g. log messages, as that makes it significantly harder to grep for them. + Use [isort] for automatic sorting of imports. Its settings should + automatically be picked up from the `pyproject.toml` file as well. Use [isort] for automatic sorting of imports. Its settings should automatically be picked up from the `pyproject.toml` file as well. [isort]: https://github.com/PyCQA/isort + [isort]: https://github.com/PyCQA/isort +- **Typing**: We do not make an exception for `typing` imports. Instead of + writing `from typing import SomeName`, use `import typing as t` and access + typing related classes like `t.TypedDict`. - **Typing**: We do not make an exception for `typing` imports. Instead of writing `from typing import SomeName`, use `import typing as t` and access typing related classes like `t.TypedDict`. - Use the new syntax and classes for typing introduced with Python 3.10 and available using - `from __future__ import annotations` since Python 3.8. - - Be aware however that this only works in the context of annotations; the code - still needs to run on Python 3.9! This means that in some (rare) cases, you _must_ use the - old-style type hints. + Use the new syntax and classes for typing introduced with Python 3.10. - Instead of `t.Tuple`, `t.List` etc. use the builtin classes `tuple`, `list` etc. @@ -140,13 +194,22 @@ The key differences are: `t.Optional[...]` and always explicitly annotate where `None` is possible. [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ + [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ +- **Python style rules**: For conflicting parts, the [Black code style] wins. + If you have set up black correctly, you don't need to worry about this though + :) - **Python style rules**: For conflicting parts, the [Black code style] wins. If you have set up black correctly, you don't need to worry about this though :) [black code style]: https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html + [black code style]: https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html +- When working with `dict`s, consider using `t.TypedDict` instead of a more + generic `dict[str, float|int|str]`-like annotation where possible, as the + latter is much less precise (often requiring additional `assert`s or + `isinstance` checks to pass) and can grow unwieldy very quickly. - When working with `dict`s, consider using `t.TypedDict` instead of a more generic `dict[str, float|int|str]`-like annotation where possible, as the latter is much less precise (often requiring additional `assert`s or @@ -154,3 +217,5 @@ The key differences are: - Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses a more convenient `class ...:` syntax and also supports type annotations. +- Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses + a more convenient `class ...:` syntax and also supports type annotations. diff --git a/LICENSES/.license_header.txt b/LICENSES/.license_header.txt index c3fb022..dfb50dd 100644 --- a/LICENSES/.license_header.txt +++ b/LICENSES/.license_header.txt @@ -1,2 +1,6 @@ +<<<<<<< HEAD Copyright DB Netz AG and contributors +======= +Copyright DB InfraGO AG and contributors +>>>>>>> 40ef464 (feat: Make tree view draggable) SPDX-License-Identifier: Apache-2.0 diff --git a/README.md b/README.md index 6f3eed9..70e3862 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ @@ -8,7 +8,7 @@ ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/build-test-publish.yml/badge.svg) ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) -API and scripts to parse .msg files and convert them to Capella +Tool for converting ROS messages from and to Capella models. # Documentation @@ -48,7 +48,7 @@ look at our [guidelines for contributors](CONTRIBUTING.md) for details. This project is compliant with the [REUSE Specification Version 3.0](https://git.fsfe.org/reuse/docs/src/commit/d173a27231a36e1a2a3af07421f5e557ae0fec46/spec.md). -Copyright DB Netz AG, licensed under Apache 2.0 (see full text in +Copyright DB InfraGO AG, licensed under Apache 2.0 (see full text in [LICENSES/Apache-2.0.txt](LICENSES/Apache-2.0.txt)) Dot-files are licensed under CC0-1.0 (see full text in diff --git a/capella_ros_tools/__init__.py b/capella_ros_tools/__init__.py index c41de8b..b1ace6b 100644 --- a/capella_ros_tools/__init__.py +++ b/capella_ros_tools/__init__.py @@ -1,7 +1,6 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """The capella_ros_tools package.""" - from importlib import metadata try: diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index c40c1db..755444a 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Main entry point into capella_ros_tools.""" @@ -10,8 +10,8 @@ import click import capella_ros_tools -from capella_ros_tools.display import app from capella_ros_tools.scripts import capella2msg, msg2capella +from capella_ros_tools.snapshot import app @click.command() @@ -27,9 +27,8 @@ default="c" if sys.stdin.isatty() else "a", help="Default action when an element already exists: (c)heck, (k)eep, (o)verwrite, (a)bort.", ) -@click.option("--port", "-p", type=int, help="Port for HTML display.") +@click.option("--port", type=int, help="Port for HTML display.") @click.option( - "--in", "-i", "in_", nargs=2, @@ -38,8 +37,8 @@ help="Input file type and path.", ) @click.option( - "--out", "-o", + "out", nargs=2, type=( click.Choice(["capella", "messages"]), @@ -49,8 +48,8 @@ help="Output file type and path.", ) @click.option( - "--layer", "-l", + "layer", type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=True), required=True, help="Layer to use.", @@ -91,16 +90,18 @@ def cli( input = ( input if input.exists() - else capellambse.filehandler.get_filehandler(input_path).rootdir + else capellambse.filehandler.get_filehandler(input_path) ) msg_path, capella_path, convert_class = ( - (input, output, msg2capella.Converter) + (input.rootdir, output, msg2capella.Converter) if input_type == "messages" else (output, input, capella2msg.Converter) ) - converter = convert_class(msg_path, capella_path, layer, action, no_deps) + converter: t.Any = convert_class( + msg_path, capella_path, layer, action, no_deps + ) converter.convert() if port: diff --git a/capella_ros_tools/modules/__init__.py b/capella_ros_tools/modules/__init__.py index b4f5599..c253554 100644 --- a/capella_ros_tools/modules/__init__.py +++ b/capella_ros_tools/modules/__init__.py @@ -1,3 +1,3 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""Capella_ros_tools modules.""" +"""The modules package.""" diff --git a/capella_ros_tools/modules/capella/__init__.py b/capella_ros_tools/modules/capella/__init__.py index 1859e4d..2449cb0 100644 --- a/capella_ros_tools/modules/capella/__init__.py +++ b/capella_ros_tools/modules/capella/__init__.py @@ -1,6 +1,7 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""Capella model definition.""" +"""The capella module.""" + import typing as t import capellambse @@ -11,7 +12,7 @@ class EnumValue(t.NamedTuple): type: str name: str - value: int + value: str description: str @@ -29,8 +30,8 @@ class ClassProperty(t.NamedTuple): type_name: str type_pkg_name: str name: str - min_card: float - max_card: float + min_card: str + max_card: str description: str @@ -43,7 +44,7 @@ class ClassDef(t.NamedTuple): class BaseCapellaModel: - """Base class for capella model.""" + """Base class for Capella model.""" def __init__( self, diff --git a/capella_ros_tools/modules/capella/parser.py b/capella_ros_tools/modules/capella/parser.py index 3d779c2..da98504 100644 --- a/capella_ros_tools/modules/capella/parser.py +++ b/capella_ros_tools/modules/capella/parser.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Parser for Capella model.""" import typing as t diff --git a/capella_ros_tools/modules/capella/serializer.py b/capella_ros_tools/modules/capella/serializer.py index 9d39185..ff94cc2 100644 --- a/capella_ros_tools/modules/capella/serializer.py +++ b/capella_ros_tools/modules/capella/serializer.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Serializer for Capella model.""" import logging @@ -13,7 +13,7 @@ class CapellaModel(BaseCapellaModel): - """Capella model definition for serializing model.""" + """Capella model definition for serialized model.""" def create_packages( self, packages: list[str], package: t.Any = None @@ -108,15 +108,15 @@ def create_enums( return overlap - def delete_enums(self, types: list, package: t.Any = None) -> None: - """Delete types in Capella model.""" + def delete_enums(self, enums: list, package: t.Any = None) -> None: + """Delete enums in Capella model.""" if package is None: package = self.data - for type in types: + for enum in enums: try: - package.datatypes.remove(type) - logger.info("Deleted %s.", type.name) + package.datatypes.remove(enum) + logger.info("Deleted %s.", enum.name) except ValueError: pass @@ -171,10 +171,10 @@ def create_properties(self, cls: ClassDef, package: t.Any): type=superclass, kind="ASSOCIATION", min_card=capellambse.new_object( - "LiteralNumericValue", value=1 + "LiteralNumericValue", value="1" ), max_card=capellambse.new_object( - "LiteralNumericValue", value=1 + "LiteralNumericValue", value="1" ), ) self._set_cardinality(composition, prop) diff --git a/capella_ros_tools/modules/messages/__init__.py b/capella_ros_tools/modules/messages/__init__.py index ae0ea70..74e18ef 100644 --- a/capella_ros_tools/modules/messages/__init__.py +++ b/capella_ros_tools/modules/messages/__init__.py @@ -1,22 +1,26 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""IDL Message definition.""" "" +"""The messages module.""" + import typing as t class BaseTypeDef: - """Type definition for a field or constant in a message.""" + """Base type definition for a field or constant in a message.""" def __init__( self, name: str, - array_size: float | None = None, + array_size: str | None = None, pkg_name: str | None = None, ) -> None: self.name = name """Name of the type.""" self.array_size = array_size - """Max size of the array.""" + """Max size of the array. + + None: type is not an array + """ self.pkg_name = pkg_name """Name of the package the type is defined in. @@ -62,7 +66,7 @@ def __init__( class BaseMessageDef: - """Definition of a message.""" + """Base definition of a message.""" def __init__( self, @@ -85,7 +89,8 @@ def _repr_html_(self): ) for field in self.fields: fragments.append( - f'
    1. {field.type.pkg_name+"/" if field.type.pkg_name else ""}{field.type.name}{"[]" if field.type.array_size == float("inf") else f"[{field.type.array_size}]" if field.type.array_size else ""} {field.name}
      ' + f"
    2. {field.type.pkg_name+'/' if field.type.pkg_name else ''}" + f"{field.type.name}{'[]' if field.type.array_size == '*' else f'[{field.type.array_size}]' if field.type.array_size else ''} {field.name}
      " + "
      ".join(field.annotations) + "
    3. " ) @@ -109,7 +114,7 @@ def _repr_html_(self): class BaseMessagePkgDef: - """Definition of a message package.""" + """Base definition of a message package.""" def __init__(self, name: str, messages: list, packages: list): self.name = name @@ -117,4 +122,10 @@ def __init__(self, name: str, messages: list, packages: list): self.packages = packages def _repr_html_(self): - return f'

      {self.name}

      Messages

        {"".join([f"
      1. {msg.name}
      2. " for msg in self.messages])}

      Packages

        {"".join([f"
      1. {pkg.name}
      2. " for pkg in self.packages])}
      ' + return ( + f"

      {self.name}

      Messages

        " + f"{''.join([f'
      1. {msg.name}
      2. ' for msg in self.messages])}" + "

      Packages

        " + f"{''.join([f'
      1. {pkg.name}
      2. ' for pkg in self.packages])}" + "
      " + ) diff --git a/capella_ros_tools/modules/messages/parser.py b/capella_ros_tools/modules/messages/parser.py index 4e615aa..fb647d0 100644 --- a/capella_ros_tools/modules/messages/parser.py +++ b/capella_ros_tools/modules/messages/parser.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Parser for IDL messages.""" import os @@ -51,7 +51,7 @@ class TypeDef(BaseTypeDef): - """Type definition for a field or constant in a message.""" + """Type definition for a field or constant in a parsed message.""" def __init__(self, type_string: str) -> None: super().__init__(type_string) @@ -61,13 +61,12 @@ def __init__(self, type_string: str) -> None: index = type_string.rindex("[") array_size_string = type_string[index + 1 : -1] if array_size_string: - array_size_string = array_size_string.lstrip( + self.array_size = array_size_string.lstrip( ARRAY_UPPER_BOUND_TOKEN ) - self.array_size = float(array_size_string) else: # dynamic array - self.array_size = float("inf") + self.array_size = "*" type_string = type_string[:index] @@ -83,7 +82,7 @@ def __init__(self, type_string: str) -> None: def _extract_file_level_comments(message_string: str): - """Extract comments at the beginning of the message file.""" + """Extract comments at the beginning of the message.""" lines = message_string.splitlines() if lines and not lines[0].strip(): lines = lines[1:] @@ -100,18 +99,18 @@ def _extract_file_level_comments(message_string: str): class MessageDef(BaseMessageDef): - """Message definition for a ROS message.""" + """Definition of a message for parsed messages.""" @classmethod def from_msg_file(cls, msg_file: t.Any): - """Create a message definition from a message file.""" + """Create message definition from a .msg file.""" msg_name = msg_file.stem message_string = msg_file.read_text() return cls.from_msg_string(msg_name, message_string) @classmethod def from_msg_string(cls, msg_name: str, message_string: str): - """Create a message definition from a message string.""" + """Create message definition from a message string.""" message_comments, lines = _extract_file_level_comments(message_string) msg = cls(msg_name, [], [], message_comments) last_element: t.Any = msg @@ -207,7 +206,7 @@ def _rename_enum(enum: EnumDef): def _process_enums(msg): - """Condense enums and renames them if necessary.""" + """Condense enums and rename them if necessary.""" if len(msg.enums) == 0: return @@ -270,7 +269,7 @@ def _process_enums(msg): def _process_comments(instance): - """Condense comment lines and extracts special annotations.""" + """Condense comment lines and extract special annotations.""" lines = instance.annotations if not lines: return @@ -302,11 +301,11 @@ def _process_comments(instance): class MessagePkgDef(BaseMessagePkgDef): - """Message package definition for ROS message package.""" + """Definition of a message package for parsed messages.""" @classmethod def from_msg_folder(cls, package_name: str, msg_pkg_dir: t.Any): - """Create a message package definition from folder.""" + """Create MessagePkgDef from a folder of .msg files.""" msg_pkg = cls(package_name, [], []) for msg_file in msg_pkg_dir.iterdir(): if msg_file.suffix == ".msg": @@ -319,7 +318,7 @@ def from_msg_folder(cls, package_name: str, msg_pkg_dir: t.Any): @classmethod def from_pkg_folder(cls, root_dir: t.Any, root_dir_name: str = "root"): - """Create a package package definition from a package folder.""" + """Create MessagePkgDef from a folder of messagefolders.""" out = cls("", [], []) for dir in root_dir.rglob("msg"): out.packages.append( diff --git a/capella_ros_tools/modules/messages/serializer.py b/capella_ros_tools/modules/messages/serializer.py index 37206b6..6f5a18e 100644 --- a/capella_ros_tools/modules/messages/serializer.py +++ b/capella_ros_tools/modules/messages/serializer.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Serializer for IDL messages.""" from pathlib import Path @@ -10,7 +10,7 @@ class MessageDef(BaseMessageDef): - """Message definition for a ROS message.""" + """Definition of a message for serialized messages.""" def to_msg_file(self, msg_file: Path): """Write message to file.""" @@ -39,7 +39,7 @@ def to_msg_string(self) -> str: f"{(field.type.pkg_name + '/') if field.type.pkg_name else ''}" ) msg_string += f"{field.type.name}" - if field.type.array_size == float("inf"): + if field.type.array_size == "*": msg_string += "[]" elif field.type.array_size: msg_string += f"[{field.type.array_size}]" @@ -51,10 +51,10 @@ def to_msg_string(self) -> str: class MessagePkgDef(BaseMessagePkgDef): - """Message package definition for ROS message package.""" + """Definition of message package for serialized messages.""" def to_msg_folder(self, msg_pkg_dir: Path): - """Write message package to folder.""" + """Write messages and packages to a folder of .msg files.""" msg_pkg_dir.mkdir(parents=True, exist_ok=True) for msg in self.messages: msg.to_msg_file(msg_pkg_dir / f"{msg.name}.msg") @@ -62,7 +62,7 @@ def to_msg_folder(self, msg_pkg_dir: Path): pkg.to_msg_folder(msg_pkg_dir / pkg.name) def to_pkg_folder(self, pkg_dir: Path): - """Write packages to folder.""" + """Write packages to a folder of message folders.""" pkg_dir.mkdir(parents=True, exist_ok=True) for pkg in self.packages: pkg.to_msg_folder(pkg_dir / pkg.name / "msg") diff --git a/capella_ros_tools/scripts/__init__.py b/capella_ros_tools/scripts/__init__.py index 46ca00d..a999ec1 100644 --- a/capella_ros_tools/scripts/__init__.py +++ b/capella_ros_tools/scripts/__init__.py @@ -1,4 +1,3 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""The scripts package.""" "" -modules = ["capella2msg", "msg2capella"] +"""The scripts package.""" diff --git a/capella_ros_tools/scripts/capella2msg.py b/capella_ros_tools/scripts/capella2msg.py index a085ad8..1655b87 100644 --- a/capella_ros_tools/scripts/capella2msg.py +++ b/capella_ros_tools/scripts/capella2msg.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Convert Capella data to ROS messages.""" import typing as t @@ -34,7 +34,7 @@ class Converter: - """Convert Capella data to ROS messages.""" + """Converter class for converting Capella data to ROS messages.""" def __init__( self, @@ -51,7 +51,6 @@ def __init__( self.no_deps = no_deps def _add_package(self, current_root: t.Any) -> MessagePkgDef: - """Add package to message package definition.""" current_pkg_def = MessagePkgDef(current_root.name, [], []) for cls in self.model.get_classes(current_root): @@ -64,7 +63,9 @@ def _add_package(self, current_root: t.Any) -> MessagePkgDef: CAPELLA_TYPE_TO_MSG[prop.type_name] if prop.type_name in CAPELLA_TYPE_TO_MSG else prop.type_name, - None if prop.max_card == 1 else prop.max_card, + None + if prop.max_card == "1" + else prop.max_card, None if prop.type_pkg_name == current_pkg_def.name else prop.type_pkg_name, @@ -112,6 +113,6 @@ def _add_package(self, current_root: t.Any) -> MessagePkgDef: return current_pkg_def def convert(self) -> None: - """Convert Capella data to ROS messages.""" + """Start conversion.""" self.msgs.packages.append(self._add_package(self.model.data)) - self.msgs.to_pkg_folder(self.msg_path) + self.msgs.to_msg_folder(self.msg_path) diff --git a/capella_ros_tools/scripts/msg2capella.py b/capella_ros_tools/scripts/msg2capella.py index 010c5c9..5676ed1 100644 --- a/capella_ros_tools/scripts/msg2capella.py +++ b/capella_ros_tools/scripts/msg2capella.py @@ -1,6 +1,6 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""Convert ROS messages to Capella data.""" "" +"""Import ROS messages into Capella.""" import typing as t import capellambse @@ -42,7 +42,7 @@ class Converter: - """Converts ROS messages to Capella data.""" + """Converter class for importing ROS messages into Capella.""" def __init__( self, @@ -102,7 +102,7 @@ def _add_objects( EnumValue( MSG_TYPE_TO_CAPELLA.get(v.type.name) or v.type.name, v.name, - int(v.value), + v.value, "\n".join(v.annotations), ) for v in e.values @@ -143,8 +143,8 @@ def _add_relations(self, current_pkg_def, current_root): or f.type.name, f.type.pkg_name, f.name, - min_card=0 if f.type.array_size else 1, - max_card=f.type.array_size or 1, + min_card="0" if f.type.array_size else "1", + max_card=f.type.array_size or "1", description="\n".join(f.annotations), ) for f in msg.fields @@ -159,7 +159,7 @@ def _add_relations(self, current_pkg_def, current_root): self._add_relations(new_pkg_def, new_root) def convert(self) -> None: - """Convert ROS messages to Capella data.""" + """Start conversion.""" current_root = self.model.data if not self.no_deps: diff --git a/capella_ros_tools/snapshot/__init__.py b/capella_ros_tools/snapshot/__init__.py new file mode 100644 index 0000000..12e5d94 --- /dev/null +++ b/capella_ros_tools/snapshot/__init__.py @@ -0,0 +1,3 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""The snapshot package.""" diff --git a/capella_ros_tools/snapshot/app.py b/capella_ros_tools/snapshot/app.py new file mode 100644 index 0000000..3cc5db0 --- /dev/null +++ b/capella_ros_tools/snapshot/app.py @@ -0,0 +1,68 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""FastAPI app for viewing current snapshot of a Capella model.""" + +import typing as t +from pathlib import Path + +import uvicorn +from fastapi import FastAPI, Request +from fastapi.responses import HTMLResponse +from fastapi.staticfiles import StaticFiles +from fastapi.templating import Jinja2Templates + +PATH = Path(__file__).parent + + +app = FastAPI(title="Capella ROS Tools") +app.mount( + "/static", StaticFiles(directory=PATH.joinpath("static")), name="static" +) +templates = Jinja2Templates(directory=PATH.joinpath("templates")) + + +def get_type(xtype: str) -> str: + """Return type name from xtype.""" + return xtype.rpartition(":")[2] + + +templates.env.globals.update(get_type=get_type) + + +@app.get("/", response_class=HTMLResponse) +def root(request: Request): + """Display root data package.""" + element = app.state.data_package + context = { + "request": request, + "element": element, + "get_type": get_type, + } + response = templates.TemplateResponse("package.html", context) + return response + + +@app.get("/{type}/{uuid}", response_class=HTMLResponse) +def view(request: Request, type: str, uuid: str): + """Display element by uuid.""" + element = app.state.model.by_uuid(uuid) + template = type + ".html" + + context = { + "request": request, + "element": element, + "get_type": get_type, + } + response = templates.TemplateResponse(template, context) + return response + + +def start(model: t.Any, layer: str, port: int = 5000): + """Start the app.""" "" + app.state.model = model + app.state.data_package = getattr(model, layer).data_package + uvicorn.run( + app, + host="0.0.0.0", + port=port, + ) diff --git a/capella_ros_tools/snapshot/static/icons/favicon.ico b/capella_ros_tools/snapshot/static/icons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a0c9c57790ad59936eb10aae1125145b7895a798 GIT binary patch literal 1150 zcmb7@KS;w+5XP@bS~^%M{#&h^f|K3cTwI+LoQpJRwNzaEGnj%X4kCh3oZY&(I#vo6 z#L3yE*u_OCh;}HR-`U)w4Heo~F4ya<~!wChc5VcmdvL$rE->7hgR$mne@3-^7tz)WA+Yt@G{-p`u) z@eb=+m;Z)4e4<=4p2f#{nuvGR$vx%XqCwxXa%jE+Z4-P`>Yl@=S|25&PeJ_1N2B<9 zvgQy|<`11WoH#aVc TT4zM1QkPZ1+cm^n5E-Ih_${+; literal 0 HcmV?d00001 diff --git a/capella_ros_tools/snapshot/static/icons/favicon.ico.license b/capella_ros_tools/snapshot/static/icons/favicon.ico.license new file mode 100644 index 0000000..f6f3181 --- /dev/null +++ b/capella_ros_tools/snapshot/static/icons/favicon.ico.license @@ -0,0 +1,2 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 diff --git a/capella_ros_tools/snapshot/static/styles.css b/capella_ros_tools/snapshot/static/styles.css new file mode 100644 index 0000000..a776e49 --- /dev/null +++ b/capella_ros_tools/snapshot/static/styles.css @@ -0,0 +1,152 @@ +/* + * Copyright DB InfraGO AG and contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --pink: #ffaccd; + --pink-dark: rgb(255, 0, 153); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --color-accent: var(--pink); + --color-accent-hover: var(--pink-dark); + + --section-gap: 160px; +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +html, +body { + width: 100vw; + height: 100vh; + margin: 0; + padding: 0; +} + +body { + display: flex; + flex-direction: row; + color: var(--color-text); + background: var(--color-background-soft); + line-height: 1.6; + font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + color: inherit; + text-decoration: none; + border-bottom: 3px solid var(--color-accent); +} + +a:hover { + border-bottom-color: var(--color-accent-hover); +} + +span { + white-space: pre-wrap; + display: inline-flex; + opacity: 0.75; +} + +strong { + font-weight: 500; +} + +main { + padding: 0.5rem 1rem; +} + +main, +aside { + max-height: 100%; + overflow-y: auto; + flex: 1; + display: flex; + flex-direction: column; +} + +aside { + background-color: white; +} + +aside > div { + height: 100%; + width: 100%; +} + +table { + border-spacing: 0 1.5rem; +} +tr > td:first-child { + font-weight: bold; + text-align: right; + padding-right: 2rem; + white-space: nowrap; + width: 1%; +} + +tr > td:last-child { + text-align: left; +} + +ol { + padding: 0; + counter-reset: list; +} +ol > li { + list-style: none; + display: flex; +} +ol > li:before { + content: "[" counter(list) "] "; + counter-increment: list; + margin-right: 0.5em; +} + +::-webkit-scrollbar { + display: none; +} + +/* Media query for landscape mode */ +@media screen and (orientation: portrait) { + body { + display: flex; + flex-direction: column; + } +} diff --git a/capella_ros_tools/snapshot/templates/class.html b/capella_ros_tools/snapshot/templates/class.html new file mode 100644 index 0000000..247fefe --- /dev/null +++ b/capella_ros_tools/snapshot/templates/class.html @@ -0,0 +1,191 @@ + + + + + + + + {{ element.name }} - Overview + + + + +
      +

      + {{ element.name }} + ({{ element.xtype }}) +

      + + + + + + + + + + + + + + + + + +
      uuid{{ element.uuid }}
      parent{{ element.parent._short_html_() }}
      description + {{ element.description }} +
      properties +
        + {% for prop in element.properties %} +
      1. +

        + Property "{{ prop.name + }}": {{prop.type.name}} + {{ prop.description }} +

        +
      2. + {% endfor %} +
      +
      +
      + + + diff --git a/capella_ros_tools/snapshot/templates/enum.html b/capella_ros_tools/snapshot/templates/enum.html new file mode 100644 index 0000000..4a55fa9 --- /dev/null +++ b/capella_ros_tools/snapshot/templates/enum.html @@ -0,0 +1,56 @@ + + + + + + + + {{ element.name }} - Overview + + + + +
      +

      + {{ element.name }} + ({{ element.xtype }}) +

      + + + + + + + + + + + + + + + + + +
      uuid{{ element.uuid }}
      parent{{ element.parent._short_html_() }}
      description + {{ element.description }} +
      literals +
        + {% for lit in element.literals %} +
      1. + EnumerationLiteral "{{ + lit.name }}": {{lit.value.type.name}} = + {{lit.value.value}} +
      2. + {% endfor %} +
      +
      +
      + + diff --git a/capella_ros_tools/snapshot/templates/package.html b/capella_ros_tools/snapshot/templates/package.html new file mode 100644 index 0000000..59975b4 --- /dev/null +++ b/capella_ros_tools/snapshot/templates/package.html @@ -0,0 +1,92 @@ + + + + + + + + {{ element.name }} - Overview + + + +
      +

      + {{ element.name }} + ({{ element.xtype }}) +

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      uuid{{ element.uuid }}
      parent{{ element.parent._short_html_() }}
      classes +
        + {% for cls in element.classes %} +
      1. + {{ cls._short_html_() }} +
      2. + {% endfor %} +
      +
      datatypes +
        + {% for datatype in element.datatypes %} {% if + get_type(datatype.xtype) != 'Enumeration' %} +
      1. + {{ datatype._short_html_() }} +
      2. + {% endif %} {% endfor %} +
      +
      enumeration +
        + {% for enum in element.enumerations %} +
      1. + {{ enum._short_html_() }} +
      2. + {% endfor %} +
      +
      packages +
        + {% for pkg in element.packages %} +
      1. + {{ pkg._short_html_() }} +
      2. + {% endfor %} +
      +
      +
      + + diff --git a/docs/Makefile b/docs/Makefile index fdfe666..3a2dfee 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 # Minimal makefile for Sphinx documentation @@ -21,3 +21,19 @@ help: # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + + +# Auto-generate API documentation +apidoc: + sphinx-apidoc --module-first --output-dir source/code --force .. + +clean-apidoc: + rm -rfv source/code + +.PHONY: apidoc clean-apidoc +clean: clean-apidoc + +.PHONY: serve +html: apidoc +serve: html + cd build/html && exec python -m http.server --bind 127.0.0.1 diff --git a/docs/make.bat b/docs/make.bat index ab614db..9f24710 100644 --- a/docs/make.bat +++ b/docs/make.bat @@ -1,5 +1,5 @@ @ECHO OFF -REM Copyright DB Netz AG and contributors +REM Copyright DB InfraGO AG and contributors REM SPDX-License-Identifier: CC0-1.0 pushd %~dp0 diff --git a/docs/source/_static/github-logo.svg b/docs/source/_static/github-logo.svg index a407b96..6305840 100644 --- a/docs/source/_static/github-logo.svg +++ b/docs/source/_static/github-logo.svg @@ -1,5 +1,5 @@ diff --git a/docs/source/conf.py b/docs/source/conf.py index 1925ae0..f114da7 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Configuration file for Sphinx.""" @@ -36,6 +36,7 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ + "nbsphinx", "sphinx.ext.autodoc", "sphinx.ext.intersphinx", "sphinx.ext.napoleon", diff --git a/docs/source/examples/Import messages.ipynb b/docs/source/examples/Import messages.ipynb new file mode 100644 index 0000000..163435a --- /dev/null +++ b/docs/source/examples/Import messages.ipynb @@ -0,0 +1,938 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Import Messages" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import capellambse\n", + "from capella_ros_tools.scripts import msg2capella\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "msg_path = capellambse.filehandler.get_filehandler(\"git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss\").rootdir\n", + "capella_path = Path(\"data/empty_project_52\")\n", + "layer = \"la\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:capellambse.model:Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "WARNING:capellambse.model:Property values are not available in this model\n" + ] + } + ], + "source": [ + "converter = msg2capella.Converter(msg_path, capella_path, layer, \"o\", False)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:capella_ros_tools.modules.capella.serializer:Created package actionlib_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package diagnostic_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package geometry_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package nav_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package sensor_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package shape_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package std_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package stereo_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package trajectory_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package visualization_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalID already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum DiagnosticStatusLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DiagnosticStatusLevel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Accel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Inertia.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InertiaStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Point.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Point32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Polygon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PolygonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose2D.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Quaternion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class QuaternionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Transform.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransformStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Twist.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3Stamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Wrench.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class WrenchStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Accel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class AccelStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovarianceStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Inertia already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InertiaStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Point already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Point32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Polygon already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PolygonStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Pose already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Pose2D already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovarianceStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Quaternion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class QuaternionStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Transform already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TransformStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Twist already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TwistStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovarianceStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3Stamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Wrench already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class WrenchStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GridCells.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMetaData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class OccupancyGrid.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Path.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GridCells already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMetaData already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class OccupancyGrid already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Path already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyHealth.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyTechnology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Type.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum NavSatFixPositionCovarianceType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Status.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Service.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PointFieldDatatype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum RangeRadiationType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyHealth already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyTechnology already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Type already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum NavSatFixPositionCovarianceType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Status already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Service already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PointFieldDatatype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum RangeRadiationType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class BatteryState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CameraInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ChannelFloat32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CompressedImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FluidPressure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Illuminance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Image.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Imu.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Joy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedbackArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserEcho.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MagneticField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiEchoLaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatFix.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud2.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Range.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RegionOfInterest.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RelativeHumidity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Temperature.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TimeReference.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class BatteryState already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CameraInfo already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ChannelFloat32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CompressedImage already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FluidPressure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Illuminance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Image already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Imu already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JointState already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Joy already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedback already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedbackArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LaserEcho already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LaserScan already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MagneticField already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointState already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiEchoLaserScan already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatFix already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud2 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class PointField already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Range already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RegionOfInterest already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RelativeHumidity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Temperature already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TimeReference already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SolidPrimitiveType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Box.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrismHeight.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SolidPrimitiveType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Box already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Cylinder already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Cone already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PrismHeight already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Mesh.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshTriangle.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Plane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SolidPrimitive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Mesh already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MeshTriangle already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Plane already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SolidPrimitive already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Bool.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Byte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ByteMultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Char.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ColorRGBA.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Header.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayDimension.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayLayout.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class String.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Bool already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Byte already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ByteMultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Char already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ColorRGBA already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float32MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float64 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Float64MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Header already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int16 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int16MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int32MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int64 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int64MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int8 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Int8MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayDimension already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayLayout already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class String already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8MultiArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DisparityImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class DisparityImage already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectory already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectoryPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectory already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectoryPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ImageMarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerControlOrientationMode.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerFeedbackEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Mouse.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerUpdateType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MenuEntryCommandType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ImageMarkerId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerControlOrientationMode already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerFeedbackEventType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Mouse already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerUpdateType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MarkerId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MenuEntryCommandType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ImageMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerControl.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerInit.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerPose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerUpdate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Marker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MarkerArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MenuEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshFile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UVCoordinate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ImageMarker already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarker already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerControl already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerFeedback already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerInit already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerPose already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerUpdate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Marker already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MarkerArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MenuEntry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MeshFile already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UVCoordinate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package action_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package builtin_interfaces.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package lifecycle_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package rcl_interfaces.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package rosgraph_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package service_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package statistics_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package test_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package type_description_interfaces.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceling.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceled.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAborted.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceling already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceled already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusAborted already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalInfo already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Duration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Time.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Duration already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Time already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StateId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateActive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateConfiguring.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateShuttingdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateDeactivating.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateErrorprocessing.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionUnconfiguredShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActiveShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnConfigure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnCleanup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnDeactivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackFailure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StateId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateActive already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateConfiguring already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateShuttingdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateDeactivating already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateErrorprocessing already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActivate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionUnconfiguredShutdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActiveShutdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnConfigure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnCleanup already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnActivate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnDeactivate already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnShutdown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnError already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackFailure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackError already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class State.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Transition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class State already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Transition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionDescription already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionEvent already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LogLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Error.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Fatal.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LoggerLevelType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ParameterType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LogLevel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Error already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum Fatal already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LoggerLevelType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ParameterType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FloatingPointRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IntegerRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ListParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Log.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LoggerLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterDescriptor.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEventDescriptors.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SetLoggerLevelsResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SetParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FloatingPointRange already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IntegerRange already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ListParametersResult already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Log already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LoggerLevel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Parameter already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterDescriptor already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEvent already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEventDescriptors already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterValue already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SetLoggerLevelsResult already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SetParametersResult already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Clock.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Clock already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ServiceEventInfoEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ServiceEventInfoEventType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ServiceEventInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ServiceEventInfo already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticDataType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StatisticDataType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MetricsMessage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StatisticDataPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MetricsMessage already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class StatisticDataPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Builtins already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeTypeId 0.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeByte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeFixed.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBounded.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeTypeId 0 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeByte already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeFixed already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBounded already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Field.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IndividualTypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeSource.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Field already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IndividualTypeDescription already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TypeDescription already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TypeSource already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package unique_identifier_msgs.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UUID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class UUID already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Accel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Inertia.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InertiaStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Polygon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PolygonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose2D.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Quaternion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for QuaternionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transform.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransformStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Twist.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3Stamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Wrench.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for WrenchStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GridCells.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMetaData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OccupancyGrid.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Path.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for BatteryState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CameraInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ChannelFloat32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CompressedImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FluidPressure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Illuminance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Image.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Imu.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Joy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedbackArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserEcho.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MagneticField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiEchoLaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatFix.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud2.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Range.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RegionOfInterest.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RelativeHumidity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Temperature.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TimeReference.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Mesh.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshTriangle.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Plane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SolidPrimitive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Bool.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Byte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ByteMultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Char.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ColorRGBA.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Header.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayDimension.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayLayout.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for String.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DisparityImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ImageMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerControl.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerInit.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerPose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerUpdate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Marker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MarkerArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MenuEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshFile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UVCoordinate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Duration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Time.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for State.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FloatingPointRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IntegerRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ListParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Log.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LoggerLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterDescriptor.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEventDescriptors.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetLoggerLevelsResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Clock.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ServiceEventInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MetricsMessage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StatisticDataPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Field.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IndividualTypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeSource.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UUID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package dsd_ros_messages.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package mission_control.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package sub_msg.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created package types.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPath.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPathStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IMU.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IMUStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Objects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class OdometryStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalization already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupelStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPath already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPathStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalization already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalizationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IMU already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class IMUStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalization already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupel already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupelStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Objects already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectsStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class OdometryStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizon already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformation already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjects already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjectsStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfiguration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfigurationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatusStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfileStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfiguration already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfigurationStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatus already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatusStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersionStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfile already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfileStamped already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Covariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldOfView.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValueMap.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValuePair.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LocalizationIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchingIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Object.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectBase.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectClassification.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectTracking.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Orientation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Position.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Probability.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Shape.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Topology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Track.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TrackPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Variance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Covariance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class FieldOfView already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ID already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValueMap already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValuePair already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class LocalizationIntegrity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchingIntegrity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Object already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectBase already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectClassification already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectTracking already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Orientation already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Position already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Probability already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonData already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationEntry already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class SensorIntegrity already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Shape already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Topology already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Track already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class TrackPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Class Variance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationModeTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusSubTypeUnknown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypePosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeDirection.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingInvalidType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingOrientationTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ObjectMotionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectTypePedestrianType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClass.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassVerticalType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassBodyType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassCompositionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorPosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubposition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBox.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeHorizontalStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBodyStructure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlaneStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeComposedStructureId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationModeTypes already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusSubTypeUnknown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeMotion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypePosition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeDirection already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingInvalidType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingOrientationTypes already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ObjectMotionType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectTypePedestrianType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClass already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassVerticalType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassBodyType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassCompositionType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorPosition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubposition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlane already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBox already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCylinder already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCone already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureTopPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureBottomPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeHorizontalStructurePoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBodyStructure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlaneStructurePoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeComposedStructureId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPath.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPathStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMU.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMUStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Objects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OdometryStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfiguration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfigurationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatusStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfileStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Covariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldOfView.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValueMap.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValuePair.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LocalizationIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchingIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Object.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectBase.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectClassification.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectTracking.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Orientation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Position.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Probability.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Shape.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Topology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Track.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TrackPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Variance.\n" + ] + } + ], + "source": [ + "converter.convert()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/examples/Import messages.ipynb.license b/docs/source/examples/Import messages.ipynb.license new file mode 100644 index 0000000..f6f3181 --- /dev/null +++ b/docs/source/examples/Import messages.ipynb.license @@ -0,0 +1,2 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/Parse messages.ipynb b/docs/source/examples/Parse messages.ipynb index ff91330..a719013 100644 --- a/docs/source/examples/Parse messages.ipynb +++ b/docs/source/examples/Parse messages.ipynb @@ -1,6 +1,7 @@ { "cells": [ { +<<<<<<< HEAD "cell_type": "code", "execution_count": 1, "metadata": {}, @@ -8,6 +9,12 @@ "source": [ "from capella_ros_tools.modules.messages.parser import MessageDef\n", "from IPython.display import display" +======= + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parse Messages" +>>>>>>> 40ef464 (feat: Make tree view draggable) ] }, { @@ -16,6 +23,7 @@ "metadata": {}, "outputs": [], "source": [ +<<<<<<< HEAD "msg_name = \"CameraInfo\"\n", "msg_string = \"\"\"\n", "# This message defines meta information for a camera. It should be in a\n", @@ -150,20 +158,36 @@ "# full resolution (roi.width = width, roi.height = height).\n", "RegionOfInterest roi\n", "\"\"\"" +======= + "from capella_ros_tools.modules.messages.parser import MessageDef\n", + "from pathlib import Path\n", + "from IPython.display import display\n" +>>>>>>> 40ef464 (feat: Make tree view draggable) ] }, { "cell_type": "code", +<<<<<<< HEAD "execution_count": 3, +======= + "execution_count": 4, +>>>>>>> 40ef464 (feat: Make tree view draggable) "metadata": {}, "outputs": [ { "data": { "text/html": [ +<<<<<<< HEAD "

      CameraInfo

      # This message defines meta information for a camera. It should be in a
      # camera namespace on topic \"camera_info\" and accompanied by up to five
      # image topics named:
      #
      # image_raw - raw data from the camera driver, possibly Bayer encoded
      # image - monochrome, distorted
      # image_color - color, distorted
      # image_rect - monochrome, rectified
      # image_rect_color - color, rectified
      #
      # The image_pipeline contains packages (image_proc, stereo_image_proc)
      # for producing the four processed image topics from image_raw and
      # camera_info. The meaning of the camera parameters are described in
      # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
      #
      # The image_geometry package provides a user-friendly interface to
      # common operations using this meta information. If you want to, e.g.,
      # project a 3d point into image coordinates, we strongly recommend
      # using image_geometry.
      #
      # If the camera is uncalibrated, the matrices D, K, R, P should be left
      # zeroed out. In particular, clients may assume that K[0] == 0.0
      # indicates an uncalibrated camera.
      #######################################################################
      # Image acquisition info #
      #######################################################################
      #######################################################################
      # Calibration Parameters #
      #######################################################################
      # These are fixed during camera calibration. Their values will be the #
      # same in all messages until the camera is recalibrated. Note that #
      # self-calibrating systems may \"recalibrate\" frequently. #
      # #
      # The internal parameters can be used to warp a raw (distorted) image #
      # to: #
      # 1. An undistorted image (requires D and K) #
      # 2. A rectified image (requires D, K, R) #
      # The projection matrix P projects 3D points into the rectified image.#
      #######################################################################
      #######################################################################
      # Operational Parameters #
      #######################################################################
      # These define the image region actually captured by the camera #
      # driver. Although they affect the geometry of the output image, they #
      # may be changed freely without recalibrating the camera. #
      #######################################################################

      Fields

      1. std_msgs/Header header
        # Time of image acquisition, camera coordinate frame ID
        # Header timestamp should be acquisition time of image
        # Header frame_id should be optical frame of camera
        # origin of frame should be optical center of camera
        # +x should point to the right in the image
        # +y should point down in the image
        # +z should point into the plane of the image
      2. uint32 height
        # The image dimensions with which the camera was calibrated.
        # Normally this will be the full camera resolution in pixels.
      3. uint32 width
        # The image dimensions with which the camera was calibrated.
        # Normally this will be the full camera resolution in pixels.
      4. string distortion_model
        # The distortion model used. Supported models are listed in
        # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
        # simple model of radial and tangential distortion - is sufficent.
      5. float64[] d
        # The distortion parameters, size depending on the distortion model.
        # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
      6. float64[9.0] k
        # Intrinsic camera matrix for the raw (distorted) images.
        # [fx 0 cx]
        # K = [ 0 fy cy]
        # [ 0 0 1]
        # Projects 3D points in the camera coordinate frame to 2D pixel
        # coordinates using the focal lengths (fx, fy) and principal point
        # (cx, cy).
        # 3x3 row-major matrix
      7. float64[9.0] r
        # Rectification matrix (stereo cameras only)
        # A rotation matrix aligning the camera coordinate system to the ideal
        # stereo image plane so that epipolar lines in both stereo images are
        # parallel.
        # 3x3 row-major matrix
      8. float64[12.0] p
        # Projection/camera matrix
        # [fx' 0 cx' Tx]
        # P = [ 0 fy' cy' Ty]
        # [ 0 0 1 0]
        # By convention, this matrix specifies the intrinsic (camera) matrix
        # of the processed (rectified) image. That is, the left 3x3 portion
        # is the normal camera intrinsic matrix for the rectified image.
        # It projects 3D points in the camera coordinate frame to 2D pixel
        # coordinates using the focal lengths (fx', fy') and principal point
        # (cx', cy') - these may differ from the values in K.
        # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
        # also have R = the identity and P[1:3,1:3] = K.
        # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
        # position of the optical center of the second camera in the first
        # camera's frame. We assume Tz = 0 so both cameras are in the same
        # stereo image plane. The first camera always has Tx = Ty = 0. For
        # the right (second) camera of a horizontal stereo pair, Ty = 0 and
        # Tx = -fx' * B, where B is the baseline between the cameras.
        # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
        # the rectified image is given by:
        # [u v w]' = P * [X Y Z 1]'
        # x = u / w
        # y = v / w
        # This holds for both images of a stereo pair.
        # 3x4 row-major matrix
      9. uint32 binning_x
        # Binning refers here to any camera setting which combines rectangular
        # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
        # resolution of the output image to
        # (width / binning_x) x (height / binning_y).
        # The default values binning_x = binning_y = 0 is considered the same
        # as binning_x = binning_y = 1 (no subsampling).
      10. uint32 binning_y
        # Binning refers here to any camera setting which combines rectangular
        # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
        # resolution of the output image to
        # (width / binning_x) x (height / binning_y).
        # The default values binning_x = binning_y = 0 is considered the same
        # as binning_x = binning_y = 1 (no subsampling).
      11. RegionOfInterest roi
        # Region of interest (subwindow of full camera resolution), given in
        # full resolution (unbinned) image coordinates. A particular ROI
        # always denotes the same window of pixels on the camera sensor,
        # regardless of binning settings.
        # The default setting of roi (all values 0) is considered the same as
        # full resolution (roi.width = width, roi.height = height).

      Enums

        " ], "text/plain": [ "" +======= + "

        CameraInfo

        # This message defines meta information for a camera. It should be in a
        # camera namespace on topic \"camera_info\" and accompanied by up to five
        # image topics named:
        #
        # image_raw - raw data from the camera driver, possibly Bayer encoded
        # image - monochrome, distorted
        # image_color - color, distorted
        # image_rect - monochrome, rectified
        # image_rect_color - color, rectified
        #
        # The image_pipeline contains packages (image_proc, stereo_image_proc)
        # for producing the four processed image topics from image_raw and
        # camera_info. The meaning of the camera parameters are described in
        # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
        #
        # The image_geometry package provides a user-friendly interface to
        # common operations using this meta information. If you want to, e.g.,
        # project a 3d point into image coordinates, we strongly recommend
        # using image_geometry.
        #
        # If the camera is uncalibrated, the matrices D, K, R, P should be left
        # zeroed out. In particular, clients may assume that K[0] == 0.0
        # indicates an uncalibrated camera.
        #######################################################################
        # Image acquisition info #
        #######################################################################
        #######################################################################
        # Calibration Parameters #
        #######################################################################
        # These are fixed during camera calibration. Their values will be the #
        # same in all messages until the camera is recalibrated. Note that #
        # self-calibrating systems may \"recalibrate\" frequently. #
        # #
        # The internal parameters can be used to warp a raw (distorted) image #
        # to: #
        # 1. An undistorted image (requires D and K) #
        # 2. A rectified image (requires D, K, R) #
        # The projection matrix P projects 3D points into the rectified image.#
        #######################################################################
        #######################################################################
        # Operational Parameters #
        #######################################################################
        # These define the image region actually captured by the camera #
        # driver. Although they affect the geometry of the output image, they #
        # may be changed freely without recalibrating the camera. #
        #######################################################################

        Fields

        1. std_msgs/Header header
          # Time of image acquisition, camera coordinate frame ID
          # Header timestamp should be acquisition time of image
          # Header frame_id should be optical frame of camera
          # origin of frame should be optical center of camera
          # +x should point to the right in the image
          # +y should point down in the image
          # +z should point into the plane of the image
        2. uint32 height
          # The image dimensions with which the camera was calibrated.
          # Normally this will be the full camera resolution in pixels.
        3. uint32 width
          # The image dimensions with which the camera was calibrated.
          # Normally this will be the full camera resolution in pixels.
        4. string distortion_model
          # The distortion model used. Supported models are listed in
          # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
          # simple model of radial and tangential distortion - is sufficent.
        5. float64[] d
          # The distortion parameters, size depending on the distortion model.
          # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
        6. float64[9] k
          # Intrinsic camera matrix for the raw (distorted) images.
          # [fx 0 cx]
          # K = [ 0 fy cy]
          # [ 0 0 1]
          # Projects 3D points in the camera coordinate frame to 2D pixel
          # coordinates using the focal lengths (fx, fy) and principal point
          # (cx, cy).
          # 3x3 row-major matrix
        7. float64[9] r
          # Rectification matrix (stereo cameras only)
          # A rotation matrix aligning the camera coordinate system to the ideal
          # stereo image plane so that epipolar lines in both stereo images are
          # parallel.
          # 3x3 row-major matrix
        8. float64[12] p
          # Projection/camera matrix
          # [fx' 0 cx' Tx]
          # P = [ 0 fy' cy' Ty]
          # [ 0 0 1 0]
          # By convention, this matrix specifies the intrinsic (camera) matrix
          # of the processed (rectified) image. That is, the left 3x3 portion
          # is the normal camera intrinsic matrix for the rectified image.
          # It projects 3D points in the camera coordinate frame to 2D pixel
          # coordinates using the focal lengths (fx', fy') and principal point
          # (cx', cy') - these may differ from the values in K.
          # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
          # also have R = the identity and P[1:3,1:3] = K.
          # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
          # position of the optical center of the second camera in the first
          # camera's frame. We assume Tz = 0 so both cameras are in the same
          # stereo image plane. The first camera always has Tx = Ty = 0. For
          # the right (second) camera of a horizontal stereo pair, Ty = 0 and
          # Tx = -fx' * B, where B is the baseline between the cameras.
          # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
          # the rectified image is given by:
          # [u v w]' = P * [X Y Z 1]'
          # x = u / w
          # y = v / w
          # This holds for both images of a stereo pair.
          # 3x4 row-major matrix
        9. uint32 binning_x
          # Binning refers here to any camera setting which combines rectangular
          # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
          # resolution of the output image to
          # (width / binning_x) x (height / binning_y).
          # The default values binning_x = binning_y = 0 is considered the same
          # as binning_x = binning_y = 1 (no subsampling).
        10. uint32 binning_y
          # Binning refers here to any camera setting which combines rectangular
          # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
          # resolution of the output image to
          # (width / binning_x) x (height / binning_y).
          # The default values binning_x = binning_y = 0 is considered the same
          # as binning_x = binning_y = 1 (no subsampling).
        11. RegionOfInterest roi
          # Region of interest (subwindow of full camera resolution), given in
          # full resolution (unbinned) image coordinates. A particular ROI
          # always denotes the same window of pixels on the camera sensor,
          # regardless of binning settings.
          # The default setting of roi (all values 0) is considered the same as
          # full resolution (roi.width = width, roi.height = height).

        Enums

          " + ], + "text/plain": [ + "" +>>>>>>> 40ef464 (feat: Make tree view draggable) ] }, "metadata": {}, @@ -171,12 +195,17 @@ } ], "source": [ +<<<<<<< HEAD "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", +======= + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/CameraInfo.msg\"))\n", +>>>>>>> 40ef464 (feat: Make tree view draggable) "display(msgs)" ] }, { "cell_type": "code", +<<<<<<< HEAD "execution_count": 4, "metadata": {}, "outputs": [], @@ -206,16 +235,25 @@ }, { "cell_type": "code", +======= +>>>>>>> 40ef464 (feat: Make tree view draggable) "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ +<<<<<<< HEAD "

          DiagnosticStatus

          # This message holds the status of an individual component of the robot.

          Fields

          1. byte level
            # Level of operation enumerated above.
          2. string name
            # A description of the test/component reporting.
          3. string message
            # A description of the status.
          4. string hardware_id
            # A hardware unique string.
          5. KeyValue[] values
            # An array of values associated with the status.

          Enums

          1. DiagnosticStatus
            # Possible levels of operations.
            • byte OK = 0
            • byte WARN = 1
            • byte ERROR = 2
            • byte STALE = 3
          " ], "text/plain": [ "" +======= + "

          DiagnosticStatus

          # This message holds the status of an individual component of the robot.

          Fields

          1. DiagnosticStatusLevel level
            # Level of operation enumerated above.
          2. string name
            # A description of the test/component reporting.
          3. string message
            # A description of the status.
          4. string hardware_id
            # A hardware unique string.
          5. KeyValue[] values
            # An array of values associated with the status.

          Enums

          1. DiagnosticStatusLevel
            # Possible levels of operations.
            • byte OK = 0
            • byte WARN = 1
            • byte ERROR = 2
            • byte STALE = 3
          " + ], + "text/plain": [ + "" +>>>>>>> 40ef464 (feat: Make tree view draggable) ] }, "metadata": {}, @@ -223,7 +261,11 @@ } ], "source": [ +<<<<<<< HEAD "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", +======= + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/DiagnosticStatus.msg\"))\n", +>>>>>>> 40ef464 (feat: Make tree view draggable) "display(msgs)" ] }, @@ -231,6 +273,7 @@ "cell_type": "code", "execution_count": 6, "metadata": {}, +<<<<<<< HEAD "outputs": [], "source": [ "msg_name = \"PointCloud2\"\n", @@ -268,6 +311,8 @@ "cell_type": "code", "execution_count": 7, "metadata": {}, +======= +>>>>>>> 40ef464 (feat: Make tree view draggable) "outputs": [ { "data": { @@ -275,7 +320,11 @@ "

          PointCloud2

          # This message holds a collection of N-dimensional points, which may
          # contain additional information such as normals, intensity, etc. The
          # point data is stored as a binary blob, its layout described by the
          # contents of the \"fields\" array.
          #
          # The point cloud data may be organized 2d (image-like) or 1d (unordered).
          # Point clouds organized as 2d images may be produced by camera depth sensors
          # such as stereo or time-of-flight.

          Fields

          1. std_msgs/Header header
            # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
          2. uint32 height
            # 2D structure of the point cloud. If the cloud is unordered, height is
            # 1 and width is the length of the point cloud.
          3. uint32 width
            # 2D structure of the point cloud. If the cloud is unordered, height is
            # 1 and width is the length of the point cloud.
          4. PointField[] fields
            # Describes the channels and their layout in the binary data blob.
          5. bool is_bigendian
            # Is this data bigendian?
          6. uint32 point_step
            # Length of a point in bytes
          7. uint32 row_step
            # Length of a row in bytes
          8. uint8[] data
            # Actual point data, size is (row_step*height)
          9. bool is_dense
            # True if there are no invalid points

          Enums

            " ], "text/plain": [ +<<<<<<< HEAD "" +======= + "" +>>>>>>> 40ef464 (feat: Make tree view draggable) ] }, "metadata": {}, @@ -283,7 +332,11 @@ } ], "source": [ +<<<<<<< HEAD "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", +======= + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/PointCloud2.msg\"))\n", +>>>>>>> 40ef464 (feat: Make tree view draggable) "display(msgs)" ] } diff --git a/docs/source/examples/Parse messages.ipynb.license b/docs/source/examples/Parse messages.ipynb.license index 6605644..f6f3181 100644 --- a/docs/source/examples/Parse messages.ipynb.license +++ b/docs/source/examples/Parse messages.ipynb.license @@ -1,2 +1,2 @@ -SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors -SPDX-License-Identifier: Apache-2.0 +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/data/empty_project_52/.project.license b/docs/source/examples/data/empty_project_52/.project.license index 6605644..02c8c23 100644 --- a/docs/source/examples/data/empty_project_52/.project.license +++ b/docs/source/examples/data/empty_project_52/.project.license @@ -1,2 +1,2 @@ -SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +Copyright DB InfraGO AG and contributors SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.afm.license b/docs/source/examples/data/empty_project_52/empty_project_52.afm.license index 6605644..02c8c23 100644 --- a/docs/source/examples/data/empty_project_52/empty_project_52.afm.license +++ b/docs/source/examples/data/empty_project_52/empty_project_52.afm.license @@ -1,2 +1,2 @@ -SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +Copyright DB InfraGO AG and contributors SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.aird.license b/docs/source/examples/data/empty_project_52/empty_project_52.aird.license index 6605644..02c8c23 100644 --- a/docs/source/examples/data/empty_project_52/empty_project_52.aird.license +++ b/docs/source/examples/data/empty_project_52/empty_project_52.aird.license @@ -1,2 +1,2 @@ -SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +Copyright DB InfraGO AG and contributors SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.capella.license b/docs/source/examples/data/empty_project_52/empty_project_52.capella.license index 6605644..1efec84 100644 --- a/docs/source/examples/data/empty_project_52/empty_project_52.capella.license +++ b/docs/source/examples/data/empty_project_52/empty_project_52.capella.license @@ -1,2 +1,6 @@ +<<<<<<< HEAD SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors +======= +Copyright DB InfraGO AG and contributors +>>>>>>> 40ef464 (feat: Make tree view draggable) SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/example_msgs/CameraInfo.msg b/docs/source/examples/data/example_msgs/CameraInfo.msg new file mode 100644 index 0000000..0c75a90 --- /dev/null +++ b/docs/source/examples/data/example_msgs/CameraInfo.msg @@ -0,0 +1,134 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 +# +# This message defines meta information for a camera. It should be in a +# camera namespace on topic "camera_info" and accompanied by up to five +# image topics named: +# +# image_raw - raw data from the camera driver, possibly Bayer encoded +# image - monochrome, distorted +# image_color - color, distorted +# image_rect - monochrome, rectified +# image_rect_color - color, rectified +# +# The image_pipeline contains packages (image_proc, stereo_image_proc) +# for producing the four processed image topics from image_raw and +# camera_info. The meaning of the camera parameters are described in +# detail at http://www.ros.org/wiki/image_pipeline/CameraInfo. +# +# The image_geometry package provides a user-friendly interface to +# common operations using this meta information. If you want to, e.g., +# project a 3d point into image coordinates, we strongly recommend +# using image_geometry. +# +# If the camera is uncalibrated, the matrices D, K, R, P should be left +# zeroed out. In particular, clients may assume that K[0] == 0.0 +# indicates an uncalibrated camera. + +####################################################################### +# Image acquisition info # +####################################################################### + +# Time of image acquisition, camera coordinate frame ID +std_msgs/Header header # Header timestamp should be acquisition time of image + # Header frame_id should be optical frame of camera + # origin of frame should be optical center of camera + # +x should point to the right in the image + # +y should point down in the image + # +z should point into the plane of the image + + +####################################################################### +# Calibration Parameters # +####################################################################### +# These are fixed during camera calibration. Their values will be the # +# same in all messages until the camera is recalibrated. Note that # +# self-calibrating systems may "recalibrate" frequently. # +# # +# The internal parameters can be used to warp a raw (distorted) image # +# to: # +# 1. An undistorted image (requires D and K) # +# 2. A rectified image (requires D, K, R) # +# The projection matrix P projects 3D points into the rectified image.# +####################################################################### + +# The image dimensions with which the camera was calibrated. +# Normally this will be the full camera resolution in pixels. +uint32 height +uint32 width + +# The distortion model used. Supported models are listed in +# sensor_msgs/distortion_models.hpp. For most cameras, "plumb_bob" - a +# simple model of radial and tangential distortion - is sufficent. +string distortion_model + +# The distortion parameters, size depending on the distortion model. +# For "plumb_bob", the 5 parameters are: (k1, k2, t1, t2, k3). +float64[] d + +# Intrinsic camera matrix for the raw (distorted) images. +# [fx 0 cx] +# K = [ 0 fy cy] +# [ 0 0 1] +# Projects 3D points in the camera coordinate frame to 2D pixel +# coordinates using the focal lengths (fx, fy) and principal point +# (cx, cy). +float64[9] k # 3x3 row-major matrix + +# Rectification matrix (stereo cameras only) +# A rotation matrix aligning the camera coordinate system to the ideal +# stereo image plane so that epipolar lines in both stereo images are +# parallel. +float64[9] r # 3x3 row-major matrix + +# Projection/camera matrix +# [fx' 0 cx' Tx] +# P = [ 0 fy' cy' Ty] +# [ 0 0 1 0] +# By convention, this matrix specifies the intrinsic (camera) matrix +# of the processed (rectified) image. That is, the left 3x3 portion +# is the normal camera intrinsic matrix for the rectified image. +# It projects 3D points in the camera coordinate frame to 2D pixel +# coordinates using the focal lengths (fx', fy') and principal point +# (cx', cy') - these may differ from the values in K. +# For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will +# also have R = the identity and P[1:3,1:3] = K. +# For a stereo pair, the fourth column [Tx Ty 0]' is related to the +# position of the optical center of the second camera in the first +# camera's frame. We assume Tz = 0 so both cameras are in the same +# stereo image plane. The first camera always has Tx = Ty = 0. For +# the right (second) camera of a horizontal stereo pair, Ty = 0 and +# Tx = -fx' * B, where B is the baseline between the cameras. +# Given a 3D point [X Y Z]', the projection (x, y) of the point onto +# the rectified image is given by: +# [u v w]' = P * [X Y Z 1]' +# x = u / w +# y = v / w +# This holds for both images of a stereo pair. +float64[12] p # 3x4 row-major matrix + + +####################################################################### +# Operational Parameters # +####################################################################### +# These define the image region actually captured by the camera # +# driver. Although they affect the geometry of the output image, they # +# may be changed freely without recalibrating the camera. # +####################################################################### + +# Binning refers here to any camera setting which combines rectangular +# neighborhoods of pixels into larger "super-pixels." It reduces the +# resolution of the output image to +# (width / binning_x) x (height / binning_y). +# The default values binning_x = binning_y = 0 is considered the same +# as binning_x = binning_y = 1 (no subsampling). +uint32 binning_x +uint32 binning_y + +# Region of interest (subwindow of full camera resolution), given in +# full resolution (unbinned) image coordinates. A particular ROI +# always denotes the same window of pixels on the camera sensor, +# regardless of binning settings. +# The default setting of roi (all values 0) is considered the same as +# full resolution (roi.width = width, roi.height = height). +RegionOfInterest roi diff --git a/docs/source/examples/data/example_msgs/DiagnosticStatus.msg b/docs/source/examples/data/example_msgs/DiagnosticStatus.msg new file mode 100644 index 0000000..7ebc47c --- /dev/null +++ b/docs/source/examples/data/example_msgs/DiagnosticStatus.msg @@ -0,0 +1,21 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 +# +# This message holds the status of an individual component of the robot. + +# Possible levels of operations. +byte OK=0 +byte WARN=1 +byte ERROR=2 +byte STALE=3 + +# Level of operation enumerated above. +byte level +# A description of the test/component reporting. +string name +# A description of the status. +string message +# A hardware unique string. +string hardware_id +# An array of values associated with the status. +KeyValue[] values diff --git a/docs/source/examples/data/example_msgs/PointCloud2.msg b/docs/source/examples/data/example_msgs/PointCloud2.msg new file mode 100644 index 0000000..1353f3f --- /dev/null +++ b/docs/source/examples/data/example_msgs/PointCloud2.msg @@ -0,0 +1,29 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 +# +# This message holds a collection of N-dimensional points, which may +# contain additional information such as normals, intensity, etc. The +# point data is stored as a binary blob, its layout described by the +# contents of the "fields" array. +# +# The point cloud data may be organized 2d (image-like) or 1d (unordered). +# Point clouds organized as 2d images may be produced by camera depth sensors +# such as stereo or time-of-flight. + +# Time of sensor data acquisition, and the coordinate frame ID (for 3d points). +std_msgs/Header header + +# 2D structure of the point cloud. If the cloud is unordered, height is +# 1 and width is the length of the point cloud. +uint32 height +uint32 width + +# Describes the channels and their layout in the binary data blob. +PointField[] fields + +bool is_bigendian # Is this data bigendian? +uint32 point_step # Length of a point in bytes +uint32 row_step # Length of a row in bytes +uint8[] data # Actual point data, size is (row_step*height) + +bool is_dense # True if there are no invalid points diff --git a/docs/source/examples/data/melody_model_60/.project b/docs/source/examples/data/melody_model_60/.project new file mode 100644 index 0000000..f147def --- /dev/null +++ b/docs/source/examples/data/melody_model_60/.project @@ -0,0 +1,11 @@ + + + 6_0 + + + + + + + + diff --git a/docs/source/examples/data/melody_model_60/.project.license b/docs/source/examples/data/melody_model_60/.project.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/docs/source/examples/data/melody_model_60/.project.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.afm b/docs/source/examples/data/melody_model_60/Melody Model Test.afm new file mode 100644 index 0000000..0540ecf --- /dev/null +++ b/docs/source/examples/data/melody_model_60/Melody Model Test.afm @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.afm.license b/docs/source/examples/data/melody_model_60/Melody Model Test.afm.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/docs/source/examples/data/melody_model_60/Melody Model Test.afm.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.aird b/docs/source/examples/data/melody_model_60/Melody Model Test.aird new file mode 100644 index 0000000..5b672cf --- /dev/null +++ b/docs/source/examples/data/melody_model_60/Melody Model Test.aird @@ -0,0 +1,13006 @@ + + + + Melody%20Model%20Test.afm + Melody%20Model%20Test.capella + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + + + + + + + + + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelSize + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + uid + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + color + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + color + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelAlignment + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + labelColor + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelFormat + strike_through + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelFormat + underline + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelFormat + borderColor + borderSize + labelColor + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelAlignment + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + strokeColor + size + + + + + + + + + + strokeColor + size + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + strokeColor + size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + backgroundColor + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + lineStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + + + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + size + routingStyle + strokeColor + + + + + + + + + + + size + routingStyle + strokeColor + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + color + + + + + + + + + strokeColor + size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + labelColor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + backgroundColor + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + lineStyle + + + + + + + + + + + + + + + diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.aird.license b/docs/source/examples/data/melody_model_60/Melody Model Test.aird.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/docs/source/examples/data/melody_model_60/Melody Model Test.aird.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.capella b/docs/source/examples/data/melody_model_60/Melody Model Test.capella new file mode 100644 index 0000000..ec3c9cc --- /dev/null +++ b/docs/source/examples/data/melody_model_60/Melody Model Test.capella @@ -0,0 +1,3124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A test spec. + capella:linkedText + + + + + + This is a test context.<a href="0e0164c3-076e-42c1-8f82-7a43ab84385c"/> + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The actor lives in a world where predators exist +AND +A <a href="e6e4d30c-4d80-4899-8d8d-1350239c15a7"/> is near the actor + capella:linkedText + + + + + The predator no longer exists +OR +The predator is far away + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <a href="dd2d0dab-a35f-4104-91e5-b412f35cba15"/> + capella:linkedText + + + + + The actor feels sated + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Spot a huntable animal + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actor feels well rested + capella:linkedText + + + + + + + Actor feels sated + capella:linkedText + + + + + + + Food is cooked + capella:linkedText + + + + + + + Revenge + capella:linkedText + + + + + + + No revenge + capella:linkedText + + + + + + + Success + capella:linkedText + + + + + + + Hunt failed + capella:linkedText + + + + + + + Reached safety + capella:linkedText + + + + + + + Hunt ended + + capella:linkedText + 2 + + + + + + + Actor feels hungry + self.hunger >= 0.8 + capella:linkedText + Python + + + + + + + Actor gets too old + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a test context. + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actor feels well rested + capella:linkedText + + + + + + + + Actor feels sated + capella:linkedText + + + + + + + + Food is cooked + capella:linkedText + + + + + + + + Revenge + capella:linkedText + + + + + + + + No revenge + capella:linkedText + + + + + + + + Success + capella:linkedText + + + + + + + + Hunt failed + capella:linkedText + + + + + + + + Reached safety + capella:linkedText + + + + + + + + Hunt ended + capella:linkedText + + + + + + + + Actor feels hungry + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <a href="a0159943-264f-4a97-a245-565fb6bf9db4"/> + capella:linkedText + + + + + + + + + + + + + + + + + + + + + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.capella.license b/docs/source/examples/data/melody_model_60/Melody Model Test.capella.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/docs/source/examples/data/melody_model_60/Melody Model Test.capella.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/howtos/howtos.rst b/docs/source/howtos/howtos.rst new file mode 100644 index 0000000..74cbcc0 --- /dev/null +++ b/docs/source/howtos/howtos.rst @@ -0,0 +1,52 @@ +.. + Copyright DB InfraGO AG and contributors + SPDX-License-Identifier: Apache-2.0 + +.. _howtos: + +******* +Examples +******* + +This section contains a collection of examples that demonstrate how to use the library. + +Using the CLI +============= + +Importing ROS2 Messages: +------------------------ +.. code-block:: bash + + $ python -m capella_ros_tools -i messages docs/source/examples/data/example_msgs -o capella docs/source/examples/data/empty_project_52 -l la --port 5000 --exists-action=k --no-deps + +Exporting Capella Models +------------------------ +.. code-block:: bash + + $ python -m capella_ros_tools -i capella docs/source/examples/data/melody_model_60 -l la -o messages docs/source/examples/data/example_msgs --port 5000 + +Import ROS2 Messages from Git Repository: +------------------------ +.. code-block:: bash + + $ python -m capella_ros_tools -i messages git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss -o capella docs/source/examples/data/empty_project_52 -l la --port 5000 --exists-action=k --no-deps + +Export Capella Models from Git Repository: +------------------------ +.. code-block:: bash + + $ python -m capella_ros_tools -i capella git+https://github.com/DSD-DBS/coffee-machine -l la -o messages docs/source/examples/data/coffee_msgs --port 5000 + + +Using the Python API +==================== + +In this section you can view dedicated tutorial-notebooks that demonstrate how to use the library. + +.. toctree:: + :maxdepth: 4 + :caption: How tos: + :numbered: + :glob: + + ../examples/* diff --git a/docs/source/index.rst b/docs/source/index.rst index 8e45b65..52eade7 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,14 +1,52 @@ .. - Copyright DB Netz AG and contributors + Copyright DB InfraGO AG and contributors SPDX-License-Identifier: Apache-2.0 -Welcome to capella-ros-tools's documentation! -============================================= + +***************************** +Welcome to the Capella ROS Tools documentation! +***************************** + +Overview +======== + +.. image:: https://img.shields.io/badge/license-Apache%202-blue.svg + :target: + +.. image:: https://img.shields.io/badge/code%20style-black-000000.svg + :target: https://github.com/psf/black + :alt: Black + +**Date**: |today| **Version**: |Version| + +Capella ROS Tools is a command-line application written in Python, designed to facilitate the seamless integration of ROS2 and Capella MBSE tools. Key features include: + +* generate ROS2 message files (.msg) from Capella models +* generate Capella elements and objects from ROS2 message files +* support input sources through both local file paths and Git repositories +* disply snapshots of Capella model elements in a tree structure + +If you want a quickstart at how to use this tool, head right into the +:ref:`Usage section `. + .. toctree:: :maxdepth: 2 :caption: Contents: +.. toctree:: + :maxdepth: 3 + :caption: Usage + + usage/usage + + +.. toctree:: + :caption: Examples + :titlesonly: + + howtos/howtos + .. toctree:: :maxdepth: 3 :caption: API reference diff --git a/docs/source/usage/usage.rst b/docs/source/usage/usage.rst new file mode 100644 index 0000000..9a1d58a --- /dev/null +++ b/docs/source/usage/usage.rst @@ -0,0 +1,23 @@ +.. + Copyright DB InfraGO AG and contributors + SPDX-License-Identifier: Apache-2.0 + +.. _howtos: + +***** +Usage +***** + +This section describes how to use the Capella ROS Tools CLI. + +Importing ROS2 Messages: +------------------------ +.. code-block:: bash + + $ python -m capella_ros_tools -i messages -o capella -l --port= --exists-action= --no-deps + +Exporting Capella Models +------------------------ +.. code-block:: bash + + $ python -m capella_ros_tools -i capella -l -o messages --port diff --git a/pyproject.toml b/pyproject.toml index e1ae6cd..704b9af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 [build-system] @@ -9,12 +9,12 @@ build-backend = "setuptools.build_meta" dynamic = ["version"] name = "capella-ros-tools" -description = "API and scripts to parse .msg files and convert them to Capella" +description = "Tool for converting ROS messages from and to Capella models." readme = "README.md" -requires-python = ">=3.9, <3.12" +requires-python = ">=3.10, <3.13" license = { text = "Apache-2.0" } authors = [ - { name = "DB Netz AG" }, + { name = "DB InfraGO AG" }, ] keywords = [] classifiers = [ @@ -23,9 +23,9 @@ classifiers = [ "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] dependencies = [ "click", @@ -53,7 +53,7 @@ test = [ [tool.black] line-length = 79 -target-version = ["py39"] +target-version = ["py310"] [tool.coverage.run] branch = true @@ -203,3 +203,4 @@ include = ["capella_ros_tools", "capella_ros_tools.*"] [tool.setuptools_scm] # This section must exist for setuptools_scm to work +local_scheme = "no-local-version" diff --git a/tests/test_capella_ros_tools.py b/tests/test_capella_ros_tools.py index 17bcb5d..29b3e25 100644 --- a/tests/test_capella_ros_tools.py +++ b/tests/test_capella_ros_tools.py @@ -1,4 +1,4 @@ -# Copyright DB Netz AG and contributors +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 import capella_ros_tools From 0ae37a690c8015e4e2ef158e84f4fa2bf0a7c50b Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 9 Jan 2024 22:19:06 +0100 Subject: [PATCH 13/47] fix: Local path input --- capella_ros_tools/__main__.py | 23 +- capella_ros_tools/modules/messages/parser.py | 2 +- docs/source/examples/Export capella.ipynb | 81 +++ .../examples/Export capella.ipynb.license | 2 + docs/source/examples/Parse messages.ipynb | 519 ++++++------------ .../example_msgs/{ => msg}/CameraInfo.msg | 0 .../{ => msg}/DiagnosticStatus.msg | 0 .../example_msgs/{ => msg}/PointCloud2.msg | 0 docs/source/howtos/howtos.rst | 14 +- docs/source/usage/usage.rst | 6 +- 10 files changed, 261 insertions(+), 386 deletions(-) create mode 100644 docs/source/examples/Export capella.ipynb create mode 100644 docs/source/examples/Export capella.ipynb.license rename docs/source/examples/data/example_msgs/{ => msg}/CameraInfo.msg (100%) rename docs/source/examples/data/example_msgs/{ => msg}/DiagnosticStatus.msg (100%) rename docs/source/examples/data/example_msgs/{ => msg}/PointCloud2.msg (100%) diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 755444a..e328959 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -27,6 +27,12 @@ default="c" if sys.stdin.isatty() else "a", help="Default action when an element already exists: (c)heck, (k)eep, (o)verwrite, (a)bort.", ) +@click.option( + "--no-deps", + "no_deps", + is_flag=True, + help="Don’t install message dependencies.", +) @click.option("--port", type=int, help="Port for HTML display.") @click.option( "-i", @@ -54,12 +60,6 @@ required=True, help="Layer to use.", ) -@click.option( - "--no-deps", - "no_deps", - is_flag=True, - help="Don’t install message dependencies.", -) def cli( in_: tuple[str, str], out: tuple[str, str], @@ -87,14 +87,13 @@ def cli( input: t.Any = Path(input_path) - input = ( - input - if input.exists() - else capellambse.filehandler.get_filehandler(input_path) - ) + if not input.exists() and input_type == "messages": + input = capellambse.filehandler.get_filehandler(input_path).rootdir + elif not input.exists() and input_type == "capella": + input = capellambse.filehandler.get_filehandler(input_path) msg_path, capella_path, convert_class = ( - (input.rootdir, output, msg2capella.Converter) + (input, output, msg2capella.Converter) if input_type == "messages" else (output, input, capella2msg.Converter) ) diff --git a/capella_ros_tools/modules/messages/parser.py b/capella_ros_tools/modules/messages/parser.py index fb647d0..c71136a 100644 --- a/capella_ros_tools/modules/messages/parser.py +++ b/capella_ros_tools/modules/messages/parser.py @@ -318,7 +318,7 @@ def from_msg_folder(cls, package_name: str, msg_pkg_dir: t.Any): @classmethod def from_pkg_folder(cls, root_dir: t.Any, root_dir_name: str = "root"): - """Create MessagePkgDef from a folder of messagefolders.""" + """Create MessagePkgDef from a folder of message folders.""" out = cls("", [], []) for dir in root_dir.rglob("msg"): out.packages.append( diff --git a/docs/source/examples/Export capella.ipynb b/docs/source/examples/Export capella.ipynb new file mode 100644 index 0000000..8a5e4bb --- /dev/null +++ b/docs/source/examples/Export capella.ipynb @@ -0,0 +1,81 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Export Capella" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import capellambse\n", + "from capella_ros_tools.scripts import capella2msg\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "msg_path = Path(\"data/coffee_msgs\")\n", + "capella_path = capellambse.filehandler.get_filehandler(\"git+https://github.com/DSD-DBS/coffee-machine\")\n", + "layer = \"la\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "Property values are not available in this model\n" + ] + } + ], + "source": [ + "converter = capella2msg.Converter(msg_path, capella_path, layer, \"o\", False)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "converter.convert()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/examples/Export capella.ipynb.license b/docs/source/examples/Export capella.ipynb.license new file mode 100644 index 0000000..f6f3181 --- /dev/null +++ b/docs/source/examples/Export capella.ipynb.license @@ -0,0 +1,2 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/Parse messages.ipynb b/docs/source/examples/Parse messages.ipynb index a719013..5ce665e 100644 --- a/docs/source/examples/Parse messages.ipynb +++ b/docs/source/examples/Parse messages.ipynb @@ -1,365 +1,158 @@ { - "cells": [ - { -<<<<<<< HEAD - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.modules.messages.parser import MessageDef\n", - "from IPython.display import display" -======= - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Parse Messages" ->>>>>>> 40ef464 (feat: Make tree view draggable) - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ -<<<<<<< HEAD - "msg_name = \"CameraInfo\"\n", - "msg_string = \"\"\"\n", - "# This message defines meta information for a camera. It should be in a\n", - "# camera namespace on topic \"camera_info\" and accompanied by up to five\n", - "# image topics named:\n", - "#\n", - "# image_raw - raw data from the camera driver, possibly Bayer encoded\n", - "# image - monochrome, distorted\n", - "# image_color - color, distorted\n", - "# image_rect - monochrome, rectified\n", - "# image_rect_color - color, rectified\n", - "#\n", - "# The image_pipeline contains packages (image_proc, stereo_image_proc)\n", - "# for producing the four processed image topics from image_raw and\n", - "# camera_info. The meaning of the camera parameters are described in\n", - "# detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.\n", - "#\n", - "# The image_geometry package provides a user-friendly interface to\n", - "# common operations using this meta information. If you want to, e.g.,\n", - "# project a 3d point into image coordinates, we strongly recommend\n", - "# using image_geometry.\n", - "#\n", - "# If the camera is uncalibrated, the matrices D, K, R, P should be left\n", - "# zeroed out. In particular, clients may assume that K[0] == 0.0\n", - "# indicates an uncalibrated camera.\n", - "\n", - "#######################################################################\n", - "# Image acquisition info #\n", - "#######################################################################\n", - "\n", - "# Time of image acquisition, camera coordinate frame ID\n", - "std_msgs/Header header # Header timestamp should be acquisition time of image\n", - " # Header frame_id should be optical frame of camera\n", - " # origin of frame should be optical center of camera\n", - " # +x should point to the right in the image\n", - " # +y should point down in the image\n", - " # +z should point into the plane of the image\n", - "\n", - "\n", - "#######################################################################\n", - "# Calibration Parameters #\n", - "#######################################################################\n", - "# These are fixed during camera calibration. Their values will be the #\n", - "# same in all messages until the camera is recalibrated. Note that #\n", - "# self-calibrating systems may \"recalibrate\" frequently. #\n", - "# #\n", - "# The internal parameters can be used to warp a raw (distorted) image #\n", - "# to: #\n", - "# 1. An undistorted image (requires D and K) #\n", - "# 2. A rectified image (requires D, K, R) #\n", - "# The projection matrix P projects 3D points into the rectified image.#\n", - "#######################################################################\n", - "\n", - "# The image dimensions with which the camera was calibrated.\n", - "# Normally this will be the full camera resolution in pixels.\n", - "uint32 height\n", - "uint32 width\n", - "\n", - "# The distortion model used. Supported models are listed in\n", - "# sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a\n", - "# simple model of radial and tangential distortion - is sufficent.\n", - "string distortion_model\n", - "\n", - "# The distortion parameters, size depending on the distortion model.\n", - "# For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).\n", - "float64[] d\n", - "\n", - "# Intrinsic camera matrix for the raw (distorted) images.\n", - "# [fx 0 cx]\n", - "# K = [ 0 fy cy]\n", - "# [ 0 0 1]\n", - "# Projects 3D points in the camera coordinate frame to 2D pixel\n", - "# coordinates using the focal lengths (fx, fy) and principal point\n", - "# (cx, cy).\n", - "float64[9] k # 3x3 row-major matrix\n", - "\n", - "# Rectification matrix (stereo cameras only)\n", - "# A rotation matrix aligning the camera coordinate system to the ideal\n", - "# stereo image plane so that epipolar lines in both stereo images are\n", - "# parallel.\n", - "float64[9] r # 3x3 row-major matrix\n", - "\n", - "# Projection/camera matrix\n", - "# [fx' 0 cx' Tx]\n", - "# P = [ 0 fy' cy' Ty]\n", - "# [ 0 0 1 0]\n", - "# By convention, this matrix specifies the intrinsic (camera) matrix\n", - "# of the processed (rectified) image. That is, the left 3x3 portion\n", - "# is the normal camera intrinsic matrix for the rectified image.\n", - "# It projects 3D points in the camera coordinate frame to 2D pixel\n", - "# coordinates using the focal lengths (fx', fy') and principal point\n", - "# (cx', cy') - these may differ from the values in K.\n", - "# For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will\n", - "# also have R = the identity and P[1:3,1:3] = K.\n", - "# For a stereo pair, the fourth column [Tx Ty 0]' is related to the\n", - "# position of the optical center of the second camera in the first\n", - "# camera's frame. We assume Tz = 0 so both cameras are in the same\n", - "# stereo image plane. The first camera always has Tx = Ty = 0. For\n", - "# the right (second) camera of a horizontal stereo pair, Ty = 0 and\n", - "# Tx = -fx' * B, where B is the baseline between the cameras.\n", - "# Given a 3D point [X Y Z]', the projection (x, y) of the point onto\n", - "# the rectified image is given by:\n", - "# [u v w]' = P * [X Y Z 1]'\n", - "# x = u / w\n", - "# y = v / w\n", - "# This holds for both images of a stereo pair.\n", - "float64[12] p # 3x4 row-major matrix\n", - "\n", - "\n", - "#######################################################################\n", - "# Operational Parameters #\n", - "#######################################################################\n", - "# These define the image region actually captured by the camera #\n", - "# driver. Although they affect the geometry of the output image, they #\n", - "# may be changed freely without recalibrating the camera. #\n", - "#######################################################################\n", - "\n", - "# Binning refers here to any camera setting which combines rectangular\n", - "# neighborhoods of pixels into larger \"super-pixels.\" It reduces the\n", - "# resolution of the output image to\n", - "# (width / binning_x) x (height / binning_y).\n", - "# The default values binning_x = binning_y = 0 is considered the same\n", - "# as binning_x = binning_y = 1 (no subsampling).\n", - "uint32 binning_x\n", - "uint32 binning_y\n", - "\n", - "# Region of interest (subwindow of full camera resolution), given in\n", - "# full resolution (unbinned) image coordinates. A particular ROI\n", - "# always denotes the same window of pixels on the camera sensor,\n", - "# regardless of binning settings.\n", - "# The default setting of roi (all values 0) is considered the same as\n", - "# full resolution (roi.width = width, roi.height = height).\n", - "RegionOfInterest roi\n", - "\"\"\"" -======= - "from capella_ros_tools.modules.messages.parser import MessageDef\n", - "from pathlib import Path\n", - "from IPython.display import display\n" ->>>>>>> 40ef464 (feat: Make tree view draggable) - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 3, -======= - "execution_count": 4, ->>>>>>> 40ef464 (feat: Make tree view draggable) - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ -<<<<<<< HEAD - "

            CameraInfo

            # This message defines meta information for a camera. It should be in a
            # camera namespace on topic \"camera_info\" and accompanied by up to five
            # image topics named:
            #
            # image_raw - raw data from the camera driver, possibly Bayer encoded
            # image - monochrome, distorted
            # image_color - color, distorted
            # image_rect - monochrome, rectified
            # image_rect_color - color, rectified
            #
            # The image_pipeline contains packages (image_proc, stereo_image_proc)
            # for producing the four processed image topics from image_raw and
            # camera_info. The meaning of the camera parameters are described in
            # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
            #
            # The image_geometry package provides a user-friendly interface to
            # common operations using this meta information. If you want to, e.g.,
            # project a 3d point into image coordinates, we strongly recommend
            # using image_geometry.
            #
            # If the camera is uncalibrated, the matrices D, K, R, P should be left
            # zeroed out. In particular, clients may assume that K[0] == 0.0
            # indicates an uncalibrated camera.
            #######################################################################
            # Image acquisition info #
            #######################################################################
            #######################################################################
            # Calibration Parameters #
            #######################################################################
            # These are fixed during camera calibration. Their values will be the #
            # same in all messages until the camera is recalibrated. Note that #
            # self-calibrating systems may \"recalibrate\" frequently. #
            # #
            # The internal parameters can be used to warp a raw (distorted) image #
            # to: #
            # 1. An undistorted image (requires D and K) #
            # 2. A rectified image (requires D, K, R) #
            # The projection matrix P projects 3D points into the rectified image.#
            #######################################################################
            #######################################################################
            # Operational Parameters #
            #######################################################################
            # These define the image region actually captured by the camera #
            # driver. Although they affect the geometry of the output image, they #
            # may be changed freely without recalibrating the camera. #
            #######################################################################

            Fields

            1. std_msgs/Header header
              # Time of image acquisition, camera coordinate frame ID
              # Header timestamp should be acquisition time of image
              # Header frame_id should be optical frame of camera
              # origin of frame should be optical center of camera
              # +x should point to the right in the image
              # +y should point down in the image
              # +z should point into the plane of the image
            2. uint32 height
              # The image dimensions with which the camera was calibrated.
              # Normally this will be the full camera resolution in pixels.
            3. uint32 width
              # The image dimensions with which the camera was calibrated.
              # Normally this will be the full camera resolution in pixels.
            4. string distortion_model
              # The distortion model used. Supported models are listed in
              # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
              # simple model of radial and tangential distortion - is sufficent.
            5. float64[] d
              # The distortion parameters, size depending on the distortion model.
              # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
            6. float64[9.0] k
              # Intrinsic camera matrix for the raw (distorted) images.
              # [fx 0 cx]
              # K = [ 0 fy cy]
              # [ 0 0 1]
              # Projects 3D points in the camera coordinate frame to 2D pixel
              # coordinates using the focal lengths (fx, fy) and principal point
              # (cx, cy).
              # 3x3 row-major matrix
            7. float64[9.0] r
              # Rectification matrix (stereo cameras only)
              # A rotation matrix aligning the camera coordinate system to the ideal
              # stereo image plane so that epipolar lines in both stereo images are
              # parallel.
              # 3x3 row-major matrix
            8. float64[12.0] p
              # Projection/camera matrix
              # [fx' 0 cx' Tx]
              # P = [ 0 fy' cy' Ty]
              # [ 0 0 1 0]
              # By convention, this matrix specifies the intrinsic (camera) matrix
              # of the processed (rectified) image. That is, the left 3x3 portion
              # is the normal camera intrinsic matrix for the rectified image.
              # It projects 3D points in the camera coordinate frame to 2D pixel
              # coordinates using the focal lengths (fx', fy') and principal point
              # (cx', cy') - these may differ from the values in K.
              # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
              # also have R = the identity and P[1:3,1:3] = K.
              # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
              # position of the optical center of the second camera in the first
              # camera's frame. We assume Tz = 0 so both cameras are in the same
              # stereo image plane. The first camera always has Tx = Ty = 0. For
              # the right (second) camera of a horizontal stereo pair, Ty = 0 and
              # Tx = -fx' * B, where B is the baseline between the cameras.
              # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
              # the rectified image is given by:
              # [u v w]' = P * [X Y Z 1]'
              # x = u / w
              # y = v / w
              # This holds for both images of a stereo pair.
              # 3x4 row-major matrix
            9. uint32 binning_x
              # Binning refers here to any camera setting which combines rectangular
              # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
              # resolution of the output image to
              # (width / binning_x) x (height / binning_y).
              # The default values binning_x = binning_y = 0 is considered the same
              # as binning_x = binning_y = 1 (no subsampling).
            10. uint32 binning_y
              # Binning refers here to any camera setting which combines rectangular
              # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
              # resolution of the output image to
              # (width / binning_x) x (height / binning_y).
              # The default values binning_x = binning_y = 0 is considered the same
              # as binning_x = binning_y = 1 (no subsampling).
            11. RegionOfInterest roi
              # Region of interest (subwindow of full camera resolution), given in
              # full resolution (unbinned) image coordinates. A particular ROI
              # always denotes the same window of pixels on the camera sensor,
              # regardless of binning settings.
              # The default setting of roi (all values 0) is considered the same as
              # full resolution (roi.width = width, roi.height = height).

            Enums

              " - ], - "text/plain": [ - "" -======= - "

              CameraInfo

              # This message defines meta information for a camera. It should be in a
              # camera namespace on topic \"camera_info\" and accompanied by up to five
              # image topics named:
              #
              # image_raw - raw data from the camera driver, possibly Bayer encoded
              # image - monochrome, distorted
              # image_color - color, distorted
              # image_rect - monochrome, rectified
              # image_rect_color - color, rectified
              #
              # The image_pipeline contains packages (image_proc, stereo_image_proc)
              # for producing the four processed image topics from image_raw and
              # camera_info. The meaning of the camera parameters are described in
              # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
              #
              # The image_geometry package provides a user-friendly interface to
              # common operations using this meta information. If you want to, e.g.,
              # project a 3d point into image coordinates, we strongly recommend
              # using image_geometry.
              #
              # If the camera is uncalibrated, the matrices D, K, R, P should be left
              # zeroed out. In particular, clients may assume that K[0] == 0.0
              # indicates an uncalibrated camera.
              #######################################################################
              # Image acquisition info #
              #######################################################################
              #######################################################################
              # Calibration Parameters #
              #######################################################################
              # These are fixed during camera calibration. Their values will be the #
              # same in all messages until the camera is recalibrated. Note that #
              # self-calibrating systems may \"recalibrate\" frequently. #
              # #
              # The internal parameters can be used to warp a raw (distorted) image #
              # to: #
              # 1. An undistorted image (requires D and K) #
              # 2. A rectified image (requires D, K, R) #
              # The projection matrix P projects 3D points into the rectified image.#
              #######################################################################
              #######################################################################
              # Operational Parameters #
              #######################################################################
              # These define the image region actually captured by the camera #
              # driver. Although they affect the geometry of the output image, they #
              # may be changed freely without recalibrating the camera. #
              #######################################################################

              Fields

              1. std_msgs/Header header
                # Time of image acquisition, camera coordinate frame ID
                # Header timestamp should be acquisition time of image
                # Header frame_id should be optical frame of camera
                # origin of frame should be optical center of camera
                # +x should point to the right in the image
                # +y should point down in the image
                # +z should point into the plane of the image
              2. uint32 height
                # The image dimensions with which the camera was calibrated.
                # Normally this will be the full camera resolution in pixels.
              3. uint32 width
                # The image dimensions with which the camera was calibrated.
                # Normally this will be the full camera resolution in pixels.
              4. string distortion_model
                # The distortion model used. Supported models are listed in
                # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
                # simple model of radial and tangential distortion - is sufficent.
              5. float64[] d
                # The distortion parameters, size depending on the distortion model.
                # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
              6. float64[9] k
                # Intrinsic camera matrix for the raw (distorted) images.
                # [fx 0 cx]
                # K = [ 0 fy cy]
                # [ 0 0 1]
                # Projects 3D points in the camera coordinate frame to 2D pixel
                # coordinates using the focal lengths (fx, fy) and principal point
                # (cx, cy).
                # 3x3 row-major matrix
              7. float64[9] r
                # Rectification matrix (stereo cameras only)
                # A rotation matrix aligning the camera coordinate system to the ideal
                # stereo image plane so that epipolar lines in both stereo images are
                # parallel.
                # 3x3 row-major matrix
              8. float64[12] p
                # Projection/camera matrix
                # [fx' 0 cx' Tx]
                # P = [ 0 fy' cy' Ty]
                # [ 0 0 1 0]
                # By convention, this matrix specifies the intrinsic (camera) matrix
                # of the processed (rectified) image. That is, the left 3x3 portion
                # is the normal camera intrinsic matrix for the rectified image.
                # It projects 3D points in the camera coordinate frame to 2D pixel
                # coordinates using the focal lengths (fx', fy') and principal point
                # (cx', cy') - these may differ from the values in K.
                # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
                # also have R = the identity and P[1:3,1:3] = K.
                # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
                # position of the optical center of the second camera in the first
                # camera's frame. We assume Tz = 0 so both cameras are in the same
                # stereo image plane. The first camera always has Tx = Ty = 0. For
                # the right (second) camera of a horizontal stereo pair, Ty = 0 and
                # Tx = -fx' * B, where B is the baseline between the cameras.
                # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
                # the rectified image is given by:
                # [u v w]' = P * [X Y Z 1]'
                # x = u / w
                # y = v / w
                # This holds for both images of a stereo pair.
                # 3x4 row-major matrix
              9. uint32 binning_x
                # Binning refers here to any camera setting which combines rectangular
                # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                # resolution of the output image to
                # (width / binning_x) x (height / binning_y).
                # The default values binning_x = binning_y = 0 is considered the same
                # as binning_x = binning_y = 1 (no subsampling).
              10. uint32 binning_y
                # Binning refers here to any camera setting which combines rectangular
                # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                # resolution of the output image to
                # (width / binning_x) x (height / binning_y).
                # The default values binning_x = binning_y = 0 is considered the same
                # as binning_x = binning_y = 1 (no subsampling).
              11. RegionOfInterest roi
                # Region of interest (subwindow of full camera resolution), given in
                # full resolution (unbinned) image coordinates. A particular ROI
                # always denotes the same window of pixels on the camera sensor,
                # regardless of binning settings.
                # The default setting of roi (all values 0) is considered the same as
                # full resolution (roi.width = width, roi.height = height).

              Enums

                " - ], - "text/plain": [ - "" ->>>>>>> 40ef464 (feat: Make tree view draggable) - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ -<<<<<<< HEAD - "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", -======= - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/CameraInfo.msg\"))\n", ->>>>>>> 40ef464 (feat: Make tree view draggable) - "display(msgs)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "msg_name = \"DiagnosticStatus\"\n", - "msg_string = \"\"\"\n", - "# This message holds the status of an individual component of the robot.\n", - "\n", - "# Possible levels of operations.\n", - "byte OK=0\n", - "byte WARN=1\n", - "byte ERROR=2\n", - "byte STALE=3\n", - "\n", - "# Level of operation enumerated above.\n", - "byte level\n", - "# A description of the test/component reporting.\n", - "string name\n", - "# A description of the status.\n", - "string message\n", - "# A hardware unique string.\n", - "string hardware_id\n", - "# An array of values associated with the status.\n", - "KeyValue[] values\n", - "\"\"\"" - ] - }, - { - "cell_type": "code", -======= ->>>>>>> 40ef464 (feat: Make tree view draggable) - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ -<<<<<<< HEAD - "

                DiagnosticStatus

                # This message holds the status of an individual component of the robot.

                Fields

                1. byte level
                  # Level of operation enumerated above.
                2. string name
                  # A description of the test/component reporting.
                3. string message
                  # A description of the status.
                4. string hardware_id
                  # A hardware unique string.
                5. KeyValue[] values
                  # An array of values associated with the status.

                Enums

                1. DiagnosticStatus
                  # Possible levels of operations.
                  • byte OK = 0
                  • byte WARN = 1
                  • byte ERROR = 2
                  • byte STALE = 3
                " - ], - "text/plain": [ - "" -======= - "

                DiagnosticStatus

                # This message holds the status of an individual component of the robot.

                Fields

                1. DiagnosticStatusLevel level
                  # Level of operation enumerated above.
                2. string name
                  # A description of the test/component reporting.
                3. string message
                  # A description of the status.
                4. string hardware_id
                  # A hardware unique string.
                5. KeyValue[] values
                  # An array of values associated with the status.

                Enums

                1. DiagnosticStatusLevel
                  # Possible levels of operations.
                  • byte OK = 0
                  • byte WARN = 1
                  • byte ERROR = 2
                  • byte STALE = 3
                " - ], - "text/plain": [ - "" ->>>>>>> 40ef464 (feat: Make tree view draggable) - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ -<<<<<<< HEAD - "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", -======= - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/DiagnosticStatus.msg\"))\n", ->>>>>>> 40ef464 (feat: Make tree view draggable) - "display(msgs)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, -<<<<<<< HEAD - "outputs": [], - "source": [ - "msg_name = \"PointCloud2\"\n", - "msg_string = \"\"\"\n", - "# This message holds a collection of N-dimensional points, which may\n", - "# contain additional information such as normals, intensity, etc. The\n", - "# point data is stored as a binary blob, its layout described by the\n", - "# contents of the \"fields\" array.\n", - "#\n", - "# The point cloud data may be organized 2d (image-like) or 1d (unordered).\n", - "# Point clouds organized as 2d images may be produced by camera depth sensors\n", - "# such as stereo or time-of-flight.\n", - "\n", - "# Time of sensor data acquisition, and the coordinate frame ID (for 3d points).\n", - "std_msgs/Header header\n", - "\n", - "# 2D structure of the point cloud. If the cloud is unordered, height is\n", - "# 1 and width is the length of the point cloud.\n", - "uint32 height\n", - "uint32 width\n", - "\n", - "# Describes the channels and their layout in the binary data blob.\n", - "PointField[] fields\n", - "\n", - "bool is_bigendian # Is this data bigendian?\n", - "uint32 point_step # Length of a point in bytes\n", - "uint32 row_step # Length of a row in bytes\n", - "uint8[] data # Actual point data, size is (row_step*height)\n", - "\n", - "bool is_dense # True if there are no invalid points\n", - "\"\"\"" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, -======= ->>>>>>> 40ef464 (feat: Make tree view draggable) - "outputs": [ - { - "data": { - "text/html": [ - "

                PointCloud2

                # This message holds a collection of N-dimensional points, which may
                # contain additional information such as normals, intensity, etc. The
                # point data is stored as a binary blob, its layout described by the
                # contents of the \"fields\" array.
                #
                # The point cloud data may be organized 2d (image-like) or 1d (unordered).
                # Point clouds organized as 2d images may be produced by camera depth sensors
                # such as stereo or time-of-flight.

                Fields

                1. std_msgs/Header header
                  # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
                2. uint32 height
                  # 2D structure of the point cloud. If the cloud is unordered, height is
                  # 1 and width is the length of the point cloud.
                3. uint32 width
                  # 2D structure of the point cloud. If the cloud is unordered, height is
                  # 1 and width is the length of the point cloud.
                4. PointField[] fields
                  # Describes the channels and their layout in the binary data blob.
                5. bool is_bigendian
                  # Is this data bigendian?
                6. uint32 point_step
                  # Length of a point in bytes
                7. uint32 row_step
                  # Length of a row in bytes
                8. uint8[] data
                  # Actual point data, size is (row_step*height)
                9. bool is_dense
                  # True if there are no invalid points

                Enums

                  " - ], - "text/plain": [ -<<<<<<< HEAD - "" -======= - "" ->>>>>>> 40ef464 (feat: Make tree view draggable) - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ -<<<<<<< HEAD - "msgs = MessageDef.from_msg_string(msg_name, msg_string)\n", -======= - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/PointCloud2.msg\"))\n", ->>>>>>> 40ef464 (feat: Make tree view draggable) - "display(msgs)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parse Messages" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from capella_ros_tools.modules.messages.parser import MessageDef\n", + "from pathlib import Path\n", + "from IPython.display import display\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

                  CameraInfo

                  # Copyright DB InfraGO AG and contributors
                  # SPDX-License-Identifier: CC0-1.0
                  #
                  # This message defines meta information for a camera. It should be in a
                  # camera namespace on topic \"camera_info\" and accompanied by up to five
                  # image topics named:
                  #
                  # image_raw - raw data from the camera driver, possibly Bayer encoded
                  # image - monochrome, distorted
                  # image_color - color, distorted
                  # image_rect - monochrome, rectified
                  # image_rect_color - color, rectified
                  #
                  # The image_pipeline contains packages (image_proc, stereo_image_proc)
                  # for producing the four processed image topics from image_raw and
                  # camera_info. The meaning of the camera parameters are described in
                  # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
                  #
                  # The image_geometry package provides a user-friendly interface to
                  # common operations using this meta information. If you want to, e.g.,
                  # project a 3d point into image coordinates, we strongly recommend
                  # using image_geometry.
                  #
                  # If the camera is uncalibrated, the matrices D, K, R, P should be left
                  # zeroed out. In particular, clients may assume that K[0] == 0.0
                  # indicates an uncalibrated camera.
                  #######################################################################
                  # Image acquisition info #
                  #######################################################################
                  #######################################################################
                  # Calibration Parameters #
                  #######################################################################
                  # These are fixed during camera calibration. Their values will be the #
                  # same in all messages until the camera is recalibrated. Note that #
                  # self-calibrating systems may \"recalibrate\" frequently. #
                  # #
                  # The internal parameters can be used to warp a raw (distorted) image #
                  # to: #
                  # 1. An undistorted image (requires D and K) #
                  # 2. A rectified image (requires D, K, R) #
                  # The projection matrix P projects 3D points into the rectified image.#
                  #######################################################################
                  #######################################################################
                  # Operational Parameters #
                  #######################################################################
                  # These define the image region actually captured by the camera #
                  # driver. Although they affect the geometry of the output image, they #
                  # may be changed freely without recalibrating the camera. #
                  #######################################################################

                  Fields

                  1. std_msgs/Header header
                    # Time of image acquisition, camera coordinate frame ID
                    # Header timestamp should be acquisition time of image
                    # Header frame_id should be optical frame of camera
                    # origin of frame should be optical center of camera
                    # +x should point to the right in the image
                    # +y should point down in the image
                    # +z should point into the plane of the image
                  2. uint32 height
                    # The image dimensions with which the camera was calibrated.
                    # Normally this will be the full camera resolution in pixels.
                  3. uint32 width
                    # The image dimensions with which the camera was calibrated.
                    # Normally this will be the full camera resolution in pixels.
                  4. string distortion_model
                    # The distortion model used. Supported models are listed in
                    # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
                    # simple model of radial and tangential distortion - is sufficent.
                  5. float64[] d
                    # The distortion parameters, size depending on the distortion model.
                    # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
                  6. float64[9] k
                    # Intrinsic camera matrix for the raw (distorted) images.
                    # [fx 0 cx]
                    # K = [ 0 fy cy]
                    # [ 0 0 1]
                    # Projects 3D points in the camera coordinate frame to 2D pixel
                    # coordinates using the focal lengths (fx, fy) and principal point
                    # (cx, cy).
                    # 3x3 row-major matrix
                  7. float64[9] r
                    # Rectification matrix (stereo cameras only)
                    # A rotation matrix aligning the camera coordinate system to the ideal
                    # stereo image plane so that epipolar lines in both stereo images are
                    # parallel.
                    # 3x3 row-major matrix
                  8. float64[12] p
                    # Projection/camera matrix
                    # [fx' 0 cx' Tx]
                    # P = [ 0 fy' cy' Ty]
                    # [ 0 0 1 0]
                    # By convention, this matrix specifies the intrinsic (camera) matrix
                    # of the processed (rectified) image. That is, the left 3x3 portion
                    # is the normal camera intrinsic matrix for the rectified image.
                    # It projects 3D points in the camera coordinate frame to 2D pixel
                    # coordinates using the focal lengths (fx', fy') and principal point
                    # (cx', cy') - these may differ from the values in K.
                    # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
                    # also have R = the identity and P[1:3,1:3] = K.
                    # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
                    # position of the optical center of the second camera in the first
                    # camera's frame. We assume Tz = 0 so both cameras are in the same
                    # stereo image plane. The first camera always has Tx = Ty = 0. For
                    # the right (second) camera of a horizontal stereo pair, Ty = 0 and
                    # Tx = -fx' * B, where B is the baseline between the cameras.
                    # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
                    # the rectified image is given by:
                    # [u v w]' = P * [X Y Z 1]'
                    # x = u / w
                    # y = v / w
                    # This holds for both images of a stereo pair.
                    # 3x4 row-major matrix
                  9. uint32 binning_x
                    # Binning refers here to any camera setting which combines rectangular
                    # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                    # resolution of the output image to
                    # (width / binning_x) x (height / binning_y).
                    # The default values binning_x = binning_y = 0 is considered the same
                    # as binning_x = binning_y = 1 (no subsampling).
                  10. uint32 binning_y
                    # Binning refers here to any camera setting which combines rectangular
                    # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                    # resolution of the output image to
                    # (width / binning_x) x (height / binning_y).
                    # The default values binning_x = binning_y = 0 is considered the same
                    # as binning_x = binning_y = 1 (no subsampling).
                  11. RegionOfInterest roi
                    # Region of interest (subwindow of full camera resolution), given in
                    # full resolution (unbinned) image coordinates. A particular ROI
                    # always denotes the same window of pixels on the camera sensor,
                    # regardless of binning settings.
                    # The default setting of roi (all values 0) is considered the same as
                    # full resolution (roi.width = width, roi.height = height).

                  Enums

                    " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/msg/CameraInfo.msg\"))\n", + "display(msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

                    DiagnosticStatus

                    # Copyright DB InfraGO AG and contributors
                    # SPDX-License-Identifier: CC0-1.0
                    #
                    # This message holds the status of an individual component of the robot.

                    Fields

                    1. DiagnosticStatusLevel level
                      # Level of operation enumerated above.
                    2. string name
                      # A description of the test/component reporting.
                    3. string message
                      # A description of the status.
                    4. string hardware_id
                      # A hardware unique string.
                    5. KeyValue[] values
                      # An array of values associated with the status.

                    Enums

                    1. DiagnosticStatusLevel
                      # Possible levels of operations.
                      • byte OK = 0
                      • byte WARN = 1
                      • byte ERROR = 2
                      • byte STALE = 3
                    " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/msg/DiagnosticStatus.msg\"))\n", + "display(msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

                    CameraInfo

                    # This message defines meta information for a camera. It should be in a
                    # camera namespace on topic \"camera_info\" and accompanied by up to five
                    # image topics named:
                    #
                    # image_raw - raw data from the camera driver, possibly Bayer encoded
                    # image - monochrome, distorted
                    # image_color - color, distorted
                    # image_rect - monochrome, rectified
                    # image_rect_color - color, rectified
                    #
                    # The image_pipeline contains packages (image_proc, stereo_image_proc)
                    # for producing the four processed image topics from image_raw and
                    # camera_info. The meaning of the camera parameters are described in
                    # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
                    #
                    # The image_geometry package provides a user-friendly interface to
                    # common operations using this meta information. If you want to, e.g.,
                    # project a 3d point into image coordinates, we strongly recommend
                    # using image_geometry.
                    #
                    # If the camera is uncalibrated, the matrices D, K, R, P should be left
                    # zeroed out. In particular, clients may assume that K[0] == 0.0
                    # indicates an uncalibrated camera.
                    #######################################################################
                    # Image acquisition info #
                    #######################################################################
                    #######################################################################
                    # Calibration Parameters #
                    #######################################################################
                    # These are fixed during camera calibration. Their values will be the #
                    # same in all messages until the camera is recalibrated. Note that #
                    # self-calibrating systems may \"recalibrate\" frequently. #
                    # #
                    # The internal parameters can be used to warp a raw (distorted) image #
                    # to: #
                    # 1. An undistorted image (requires D and K) #
                    # 2. A rectified image (requires D, K, R) #
                    # The projection matrix P projects 3D points into the rectified image.#
                    #######################################################################
                    #######################################################################
                    # Operational Parameters #
                    #######################################################################
                    # These define the image region actually captured by the camera #
                    # driver. Although they affect the geometry of the output image, they #
                    # may be changed freely without recalibrating the camera. #
                    #######################################################################

                    Fields

                    1. std_msgs/Header header
                      # Time of image acquisition, camera coordinate frame ID
                      # Header timestamp should be acquisition time of image
                      # Header frame_id should be optical frame of camera
                      # origin of frame should be optical center of camera
                      # +x should point to the right in the image
                      # +y should point down in the image
                      # +z should point into the plane of the image
                    2. uint32 height
                      # The image dimensions with which the camera was calibrated.
                      # Normally this will be the full camera resolution in pixels.
                    3. uint32 width
                      # The image dimensions with which the camera was calibrated.
                      # Normally this will be the full camera resolution in pixels.
                    4. string distortion_model
                      # The distortion model used. Supported models are listed in
                      # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
                      # simple model of radial and tangential distortion - is sufficent.
                    5. float64[] d
                      # The distortion parameters, size depending on the distortion model.
                      # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
                    6. float64[9] k
                      # Intrinsic camera matrix for the raw (distorted) images.
                      # [fx 0 cx]
                      # K = [ 0 fy cy]
                      # [ 0 0 1]
                      # Projects 3D points in the camera coordinate frame to 2D pixel
                      # coordinates using the focal lengths (fx, fy) and principal point
                      # (cx, cy).
                      # 3x3 row-major matrix
                    7. float64[9] r
                      # Rectification matrix (stereo cameras only)
                      # A rotation matrix aligning the camera coordinate system to the ideal
                      # stereo image plane so that epipolar lines in both stereo images are
                      # parallel.
                      # 3x3 row-major matrix
                    8. float64[12] p
                      # Projection/camera matrix
                      # [fx' 0 cx' Tx]
                      # P = [ 0 fy' cy' Ty]
                      # [ 0 0 1 0]
                      # By convention, this matrix specifies the intrinsic (camera) matrix
                      # of the processed (rectified) image. That is, the left 3x3 portion
                      # is the normal camera intrinsic matrix for the rectified image.
                      # It projects 3D points in the camera coordinate frame to 2D pixel
                      # coordinates using the focal lengths (fx', fy') and principal point
                      # (cx', cy') - these may differ from the values in K.
                      # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
                      # also have R = the identity and P[1:3,1:3] = K.
                      # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
                      # position of the optical center of the second camera in the first
                      # camera's frame. We assume Tz = 0 so both cameras are in the same
                      # stereo image plane. The first camera always has Tx = Ty = 0. For
                      # the right (second) camera of a horizontal stereo pair, Ty = 0 and
                      # Tx = -fx' * B, where B is the baseline between the cameras.
                      # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
                      # the rectified image is given by:
                      # [u v w]' = P * [X Y Z 1]'
                      # x = u / w
                      # y = v / w
                      # This holds for both images of a stereo pair.
                      # 3x4 row-major matrix
                    9. uint32 binning_x
                      # Binning refers here to any camera setting which combines rectangular
                      # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                      # resolution of the output image to
                      # (width / binning_x) x (height / binning_y).
                      # The default values binning_x = binning_y = 0 is considered the same
                      # as binning_x = binning_y = 1 (no subsampling).
                    10. uint32 binning_y
                      # Binning refers here to any camera setting which combines rectangular
                      # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                      # resolution of the output image to
                      # (width / binning_x) x (height / binning_y).
                      # The default values binning_x = binning_y = 0 is considered the same
                      # as binning_x = binning_y = 1 (no subsampling).
                    11. RegionOfInterest roi
                      # Region of interest (subwindow of full camera resolution), given in
                      # full resolution (unbinned) image coordinates. A particular ROI
                      # always denotes the same window of pixels on the camera sensor,
                      # regardless of binning settings.
                      # The default setting of roi (all values 0) is considered the same as
                      # full resolution (roi.width = width, roi.height = height).

                    Enums

                      " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/CameraInfo.msg\"))\n", + "display(msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

                      DiagnosticStatus

                      # This message holds the status of an individual component of the robot.

                      Fields

                      1. DiagnosticStatusLevel level
                        # Level of operation enumerated above.
                      2. string name
                        # A description of the test/component reporting.
                      3. string message
                        # A description of the status.
                      4. string hardware_id
                        # A hardware unique string.
                      5. KeyValue[] values
                        # An array of values associated with the status.

                      Enums

                      1. DiagnosticStatusLevel
                        # Possible levels of operations.
                        • byte OK = 0
                        • byte WARN = 1
                        • byte ERROR = 2
                        • byte STALE = 3
                      " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/DiagnosticStatus.msg\"))\n", + "display(msgs)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

                      PointCloud2

                      # This message holds a collection of N-dimensional points, which may
                      # contain additional information such as normals, intensity, etc. The
                      # point data is stored as a binary blob, its layout described by the
                      # contents of the \"fields\" array.
                      #
                      # The point cloud data may be organized 2d (image-like) or 1d (unordered).
                      # Point clouds organized as 2d images may be produced by camera depth sensors
                      # such as stereo or time-of-flight.

                      Fields

                      1. std_msgs/Header header
                        # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
                      2. uint32 height
                        # 2D structure of the point cloud. If the cloud is unordered, height is
                        # 1 and width is the length of the point cloud.
                      3. uint32 width
                        # 2D structure of the point cloud. If the cloud is unordered, height is
                        # 1 and width is the length of the point cloud.
                      4. PointField[] fields
                        # Describes the channels and their layout in the binary data blob.
                      5. bool is_bigendian
                        # Is this data bigendian?
                      6. uint32 point_step
                        # Length of a point in bytes
                      7. uint32 row_step
                        # Length of a row in bytes
                      8. uint8[] data
                        # Actual point data, size is (row_step*height)
                      9. bool is_dense
                        # True if there are no invalid points

                      Enums

                        " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/msg/PointCloud2.msg\"))\n", + "display(msgs)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 } diff --git a/docs/source/examples/data/example_msgs/CameraInfo.msg b/docs/source/examples/data/example_msgs/msg/CameraInfo.msg similarity index 100% rename from docs/source/examples/data/example_msgs/CameraInfo.msg rename to docs/source/examples/data/example_msgs/msg/CameraInfo.msg diff --git a/docs/source/examples/data/example_msgs/DiagnosticStatus.msg b/docs/source/examples/data/example_msgs/msg/DiagnosticStatus.msg similarity index 100% rename from docs/source/examples/data/example_msgs/DiagnosticStatus.msg rename to docs/source/examples/data/example_msgs/msg/DiagnosticStatus.msg diff --git a/docs/source/examples/data/example_msgs/PointCloud2.msg b/docs/source/examples/data/example_msgs/msg/PointCloud2.msg similarity index 100% rename from docs/source/examples/data/example_msgs/PointCloud2.msg rename to docs/source/examples/data/example_msgs/msg/PointCloud2.msg diff --git a/docs/source/howtos/howtos.rst b/docs/source/howtos/howtos.rst index 74cbcc0..4d5e4ad 100644 --- a/docs/source/howtos/howtos.rst +++ b/docs/source/howtos/howtos.rst @@ -13,25 +13,25 @@ This section contains a collection of examples that demonstrate how to use the l Using the CLI ============= -Importing ROS2 Messages: +Import ROS2 Messages: ------------------------ .. code-block:: bash $ python -m capella_ros_tools -i messages docs/source/examples/data/example_msgs -o capella docs/source/examples/data/empty_project_52 -l la --port 5000 --exists-action=k --no-deps -Exporting Capella Models +Import ROS2 Messages from Git Repository: ------------------------ .. code-block:: bash - $ python -m capella_ros_tools -i capella docs/source/examples/data/melody_model_60 -l la -o messages docs/source/examples/data/example_msgs --port 5000 + $ python -m capella_ros_tools -i messages git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss -o capella docs/source/examples/data/empty_project_52 -l la --port 5000 --exists-action=k -Import ROS2 Messages from Git Repository: ------------------------- +Export Capella Model +--------------------- .. code-block:: bash - $ python -m capella_ros_tools -i messages git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss -o capella docs/source/examples/data/empty_project_52 -l la --port 5000 --exists-action=k --no-deps + $ python -m capella_ros_tools -i capella docs/source/examples/data/melody_model_60 -l la -o messages docs/source/examples/data/example_msgs --port 5000 -Export Capella Models from Git Repository: +Export Capella Model from Git Repository: ------------------------ .. code-block:: bash diff --git a/docs/source/usage/usage.rst b/docs/source/usage/usage.rst index 9a1d58a..1c980f3 100644 --- a/docs/source/usage/usage.rst +++ b/docs/source/usage/usage.rst @@ -10,14 +10,14 @@ Usage This section describes how to use the Capella ROS Tools CLI. -Importing ROS2 Messages: +Import ROS2 Messages: ------------------------ .. code-block:: bash $ python -m capella_ros_tools -i messages -o capella -l --port= --exists-action= --no-deps -Exporting Capella Models ------------------------- +Export Capella Model +--------------------- .. code-block:: bash $ python -m capella_ros_tools -i capella -l -o messages --port From 42678da2a096d076f21d8b8b350a142061070612 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 9 Jan 2024 23:08:34 +0100 Subject: [PATCH 14/47] feat: Export Capella --- capella_ros_tools/modules/capella/parser.py | 27 ++-- capella_ros_tools/scripts/capella2msg.py | 7 +- docs/source/examples/Export capella.ipynb | 13 +- docs/source/examples/Parse capella.ipynb | 122 ++++++++++++++++++ .../examples/Parse capella.ipynb.license | 2 + docs/source/examples/Parse messages.ipynb | 52 +------- pyproject.toml | 7 +- 7 files changed, 161 insertions(+), 69 deletions(-) create mode 100644 docs/source/examples/Parse capella.ipynb create mode 100644 docs/source/examples/Parse capella.ipynb.license diff --git a/capella_ros_tools/modules/capella/parser.py b/capella_ros_tools/modules/capella/parser.py index da98504..0091d8c 100644 --- a/capella_ros_tools/modules/capella/parser.py +++ b/capella_ros_tools/modules/capella/parser.py @@ -49,18 +49,27 @@ def get_enums(self, package: t.Any) -> list[EnumDef]: """Get enums in Capella model.""" enums = [] for enum in package.enumerations: + values = [] + for literal in enum.owned_literals: + try: + type_name = literal.value.type.name + literal_value = literal.value.value + except AttributeError: + type_name = "" + literal_value = "" + + values.append( + EnumValue( + type_name, + literal.name, + literal_value, + literal.description, + ) + ) enums.append( EnumDef( enum.name, - [ - EnumValue( - literal.value.type.name, - literal.name, - literal.value.value, - literal.description, - ) - for literal in enum.owned_literals - ], + values, enum.description, ) ) diff --git a/capella_ros_tools/scripts/capella2msg.py b/capella_ros_tools/scripts/capella2msg.py index 1655b87..5da434e 100644 --- a/capella_ros_tools/scripts/capella2msg.py +++ b/capella_ros_tools/scripts/capella2msg.py @@ -91,13 +91,14 @@ def _add_package(self, current_root: t.Any) -> MessagePkgDef: [ ConstantDef( BaseTypeDef( - CAPELLA_TYPE_TO_MSG[value.type] + CAPELLA_TYPE_TO_MSG.get(value.type) + or "uint8" ), value.name, - str(value.value), + value.value or str(i), value.description.split("\n"), ) - for value in enum.values + for i, value in enumerate(enum.values) ], [], ) diff --git a/docs/source/examples/Export capella.ipynb b/docs/source/examples/Export capella.ipynb index 8a5e4bb..7341e3f 100644 --- a/docs/source/examples/Export capella.ipynb +++ b/docs/source/examples/Export capella.ipynb @@ -9,29 +9,28 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "import capellambse\n", "from capella_ros_tools.scripts import capella2msg\n", "from pathlib import Path" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ - "msg_path = Path(\"data/coffee_msgs\")\n", - "capella_path = capellambse.filehandler.get_filehandler(\"git+https://github.com/DSD-DBS/coffee-machine\")\n", + "msg_path = Path(\"data/test\")\n", + "capella_path = Path(\"data/melody_model_60\")\n", "layer = \"la\"" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -49,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ diff --git a/docs/source/examples/Parse capella.ipynb b/docs/source/examples/Parse capella.ipynb new file mode 100644 index 0000000..4fc88f0 --- /dev/null +++ b/docs/source/examples/Parse capella.ipynb @@ -0,0 +1,122 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parse Capella" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from capella_ros_tools.modules.capella.parser import CapellaModel\n", + "from pathlib import Path" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", + "Property values are not available in this model\n" + ] + } + ], + "source": [ + "model = CapellaModel(Path(\"data/melody_model_60\"), \"la\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Wand Objects'}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.get_packages(model.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[ClassDef(name='Wand', properties=[ClassProperty(type_name='String', type_pkg_name=None, name='owner', min_card='1', max_card='1', description=''), ClassProperty(type_name='Wand Core', type_pkg_name=None, name='core', min_card='1', max_card='1', description=''), ClassProperty(type_name='Wand Wood', type_pkg_name=None, name='wood', min_card='1', max_card='1', description='')], description=''),\n", + " ClassDef(name='Class 2', properties=[], description='')]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.get_classes(model.data)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[EnumDef(name='Wand Core', values=[EnumValue(type='', name='Unicorn Hair', value='', description=''), EnumValue(type='', name='Dragon Heartstring', value='', description=''), EnumValue(type='', name='Pheonix Feather', value='', description=''), EnumValue(type='', name='Thestral Tail-Hair', value='', description='')], description=''),\n", + " EnumDef(name='Wand Wood', values=[EnumValue(type='', name='Apple', value='', description=''), EnumValue(type='', name='Cedar', value='', description=''), EnumValue(type='', name='Ebony', value='', description=''), EnumValue(type='', name='Elder', value='', description=''), EnumValue(type='', name='Holly', value='', description='')], description='')]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.get_enums(model.data)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".capella_venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/source/examples/Parse capella.ipynb.license b/docs/source/examples/Parse capella.ipynb.license new file mode 100644 index 0000000..f6f3181 --- /dev/null +++ b/docs/source/examples/Parse capella.ipynb.license @@ -0,0 +1,2 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/Parse messages.ipynb b/docs/source/examples/Parse messages.ipynb index 5ce665e..bec90e7 100644 --- a/docs/source/examples/Parse messages.ipynb +++ b/docs/source/examples/Parse messages.ipynb @@ -15,7 +15,7 @@ "source": [ "from capella_ros_tools.modules.messages.parser import MessageDef\n", "from pathlib import Path\n", - "from IPython.display import display\n" + "from IPython.display import display" ] }, { @@ -72,56 +72,10 @@ { "data": { "text/html": [ - "

                        CameraInfo

                        # This message defines meta information for a camera. It should be in a
                        # camera namespace on topic \"camera_info\" and accompanied by up to five
                        # image topics named:
                        #
                        # image_raw - raw data from the camera driver, possibly Bayer encoded
                        # image - monochrome, distorted
                        # image_color - color, distorted
                        # image_rect - monochrome, rectified
                        # image_rect_color - color, rectified
                        #
                        # The image_pipeline contains packages (image_proc, stereo_image_proc)
                        # for producing the four processed image topics from image_raw and
                        # camera_info. The meaning of the camera parameters are described in
                        # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
                        #
                        # The image_geometry package provides a user-friendly interface to
                        # common operations using this meta information. If you want to, e.g.,
                        # project a 3d point into image coordinates, we strongly recommend
                        # using image_geometry.
                        #
                        # If the camera is uncalibrated, the matrices D, K, R, P should be left
                        # zeroed out. In particular, clients may assume that K[0] == 0.0
                        # indicates an uncalibrated camera.
                        #######################################################################
                        # Image acquisition info #
                        #######################################################################
                        #######################################################################
                        # Calibration Parameters #
                        #######################################################################
                        # These are fixed during camera calibration. Their values will be the #
                        # same in all messages until the camera is recalibrated. Note that #
                        # self-calibrating systems may \"recalibrate\" frequently. #
                        # #
                        # The internal parameters can be used to warp a raw (distorted) image #
                        # to: #
                        # 1. An undistorted image (requires D and K) #
                        # 2. A rectified image (requires D, K, R) #
                        # The projection matrix P projects 3D points into the rectified image.#
                        #######################################################################
                        #######################################################################
                        # Operational Parameters #
                        #######################################################################
                        # These define the image region actually captured by the camera #
                        # driver. Although they affect the geometry of the output image, they #
                        # may be changed freely without recalibrating the camera. #
                        #######################################################################

                        Fields

                        1. std_msgs/Header header
                          # Time of image acquisition, camera coordinate frame ID
                          # Header timestamp should be acquisition time of image
                          # Header frame_id should be optical frame of camera
                          # origin of frame should be optical center of camera
                          # +x should point to the right in the image
                          # +y should point down in the image
                          # +z should point into the plane of the image
                        2. uint32 height
                          # The image dimensions with which the camera was calibrated.
                          # Normally this will be the full camera resolution in pixels.
                        3. uint32 width
                          # The image dimensions with which the camera was calibrated.
                          # Normally this will be the full camera resolution in pixels.
                        4. string distortion_model
                          # The distortion model used. Supported models are listed in
                          # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
                          # simple model of radial and tangential distortion - is sufficent.
                        5. float64[] d
                          # The distortion parameters, size depending on the distortion model.
                          # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
                        6. float64[9] k
                          # Intrinsic camera matrix for the raw (distorted) images.
                          # [fx 0 cx]
                          # K = [ 0 fy cy]
                          # [ 0 0 1]
                          # Projects 3D points in the camera coordinate frame to 2D pixel
                          # coordinates using the focal lengths (fx, fy) and principal point
                          # (cx, cy).
                          # 3x3 row-major matrix
                        7. float64[9] r
                          # Rectification matrix (stereo cameras only)
                          # A rotation matrix aligning the camera coordinate system to the ideal
                          # stereo image plane so that epipolar lines in both stereo images are
                          # parallel.
                          # 3x3 row-major matrix
                        8. float64[12] p
                          # Projection/camera matrix
                          # [fx' 0 cx' Tx]
                          # P = [ 0 fy' cy' Ty]
                          # [ 0 0 1 0]
                          # By convention, this matrix specifies the intrinsic (camera) matrix
                          # of the processed (rectified) image. That is, the left 3x3 portion
                          # is the normal camera intrinsic matrix for the rectified image.
                          # It projects 3D points in the camera coordinate frame to 2D pixel
                          # coordinates using the focal lengths (fx', fy') and principal point
                          # (cx', cy') - these may differ from the values in K.
                          # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
                          # also have R = the identity and P[1:3,1:3] = K.
                          # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
                          # position of the optical center of the second camera in the first
                          # camera's frame. We assume Tz = 0 so both cameras are in the same
                          # stereo image plane. The first camera always has Tx = Ty = 0. For
                          # the right (second) camera of a horizontal stereo pair, Ty = 0 and
                          # Tx = -fx' * B, where B is the baseline between the cameras.
                          # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
                          # the rectified image is given by:
                          # [u v w]' = P * [X Y Z 1]'
                          # x = u / w
                          # y = v / w
                          # This holds for both images of a stereo pair.
                          # 3x4 row-major matrix
                        9. uint32 binning_x
                          # Binning refers here to any camera setting which combines rectangular
                          # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                          # resolution of the output image to
                          # (width / binning_x) x (height / binning_y).
                          # The default values binning_x = binning_y = 0 is considered the same
                          # as binning_x = binning_y = 1 (no subsampling).
                        10. uint32 binning_y
                          # Binning refers here to any camera setting which combines rectangular
                          # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                          # resolution of the output image to
                          # (width / binning_x) x (height / binning_y).
                          # The default values binning_x = binning_y = 0 is considered the same
                          # as binning_x = binning_y = 1 (no subsampling).
                        11. RegionOfInterest roi
                          # Region of interest (subwindow of full camera resolution), given in
                          # full resolution (unbinned) image coordinates. A particular ROI
                          # always denotes the same window of pixels on the camera sensor,
                          # regardless of binning settings.
                          # The default setting of roi (all values 0) is considered the same as
                          # full resolution (roi.width = width, roi.height = height).

                        Enums

                          " + "

                          PointCloud2

                          # Copyright DB InfraGO AG and contributors
                          # SPDX-License-Identifier: CC0-1.0
                          #
                          # This message holds a collection of N-dimensional points, which may
                          # contain additional information such as normals, intensity, etc. The
                          # point data is stored as a binary blob, its layout described by the
                          # contents of the \"fields\" array.
                          #
                          # The point cloud data may be organized 2d (image-like) or 1d (unordered).
                          # Point clouds organized as 2d images may be produced by camera depth sensors
                          # such as stereo or time-of-flight.

                          Fields

                          1. std_msgs/Header header
                            # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
                          2. uint32 height
                            # 2D structure of the point cloud. If the cloud is unordered, height is
                            # 1 and width is the length of the point cloud.
                          3. uint32 width
                            # 2D structure of the point cloud. If the cloud is unordered, height is
                            # 1 and width is the length of the point cloud.
                          4. PointField[] fields
                            # Describes the channels and their layout in the binary data blob.
                          5. bool is_bigendian
                            # Is this data bigendian?
                          6. uint32 point_step
                            # Length of a point in bytes
                          7. uint32 row_step
                            # Length of a row in bytes
                          8. uint8[] data
                            # Actual point data, size is (row_step*height)
                          9. bool is_dense
                            # True if there are no invalid points

                          Enums

                            " ], "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/CameraInfo.msg\"))\n", - "display(msgs)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

                            DiagnosticStatus

                            # This message holds the status of an individual component of the robot.

                            Fields

                            1. DiagnosticStatusLevel level
                              # Level of operation enumerated above.
                            2. string name
                              # A description of the test/component reporting.
                            3. string message
                              # A description of the status.
                            4. string hardware_id
                              # A hardware unique string.
                            5. KeyValue[] values
                              # An array of values associated with the status.

                            Enums

                            1. DiagnosticStatusLevel
                              # Possible levels of operations.
                              • byte OK = 0
                              • byte WARN = 1
                              • byte ERROR = 2
                              • byte STALE = 3
                            " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/DiagnosticStatus.msg\"))\n", - "display(msgs)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

                            PointCloud2

                            # This message holds a collection of N-dimensional points, which may
                            # contain additional information such as normals, intensity, etc. The
                            # point data is stored as a binary blob, its layout described by the
                            # contents of the \"fields\" array.
                            #
                            # The point cloud data may be organized 2d (image-like) or 1d (unordered).
                            # Point clouds organized as 2d images may be produced by camera depth sensors
                            # such as stereo or time-of-flight.

                            Fields

                            1. std_msgs/Header header
                              # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
                            2. uint32 height
                              # 2D structure of the point cloud. If the cloud is unordered, height is
                              # 1 and width is the length of the point cloud.
                            3. uint32 width
                              # 2D structure of the point cloud. If the cloud is unordered, height is
                              # 1 and width is the length of the point cloud.
                            4. PointField[] fields
                              # Describes the channels and their layout in the binary data blob.
                            5. bool is_bigendian
                              # Is this data bigendian?
                            6. uint32 point_step
                              # Length of a point in bytes
                            7. uint32 row_step
                              # Length of a row in bytes
                            8. uint8[] data
                              # Actual point data, size is (row_step*height)
                            9. bool is_dense
                              # True if there are no invalid points

                            Enums

                              " - ], - "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/pyproject.toml b/pyproject.toml index 704b9af..a93c430 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,9 +41,14 @@ Documentation = "https://dsd-dbs.github.io/capella-ros-tools" [project.optional-dependencies] docs = [ "furo", - "sphinx", + "ipython", + "nbsphinx", "sphinx-copybutton", "tomli; python_version<'3.11'", + "jinja2", + "pyyaml>=6.0", + "sphinx!=7.2.0,!=7.2.1,!=7.2.2", + "sphinx-argparse-cli", ] test = [ From fc005b8261c9013d4032d9417a263fe18e99a400 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 10 Jan 2024 09:05:56 +0100 Subject: [PATCH 15/47] docs: Install pandoc github action --- .github/workflows/docs.yml | 34 +- .gitmodules | 9 - LICENSES/.license_header.txt | 4 - capella_ros_tools/capella2msg.py | 113 ----- capella_ros_tools/display/__init__.py | 3 - capella_ros_tools/display/app.py | 67 --- .../display/static/icons/favicon.ico | Bin 1150 -> 0 bytes .../display/static/icons/favicon.ico.license | 2 - capella_ros_tools/display/static/styles.css | 153 ------- .../display/templates/class.html | 191 -------- capella_ros_tools/display/templates/enum.html | 56 --- .../display/templates/package.html | 92 ---- capella_ros_tools/modules/parse_capella.py | 59 --- capella_ros_tools/modules/parse_message.py | 132 ------ .../modules/serialize_capella.py | 197 --------- .../modules/serialize_message.py | 51 --- capella_ros_tools/msg2capella.py | 165 ------- docs/examples/data/empty_model/.project | 12 - .../data/empty_model/.project.license | 2 - .../examples/data/empty_model/empty_model.afm | 4 - .../data/empty_model/empty_model.afm.license | 2 - .../data/empty_model/empty_model.aird | 26 -- .../data/empty_model/empty_model.aird.license | 2 - .../data/empty_model/empty_model.capella | 272 ------------ .../empty_model/empty_model.capella.license | 2 - docs/examples/data/model/.project | 12 - docs/examples/data/model/.project.license | 2 - docs/examples/data/model/model.afm | 4 - docs/examples/data/model/model.afm.license | 2 - docs/examples/data/model/model.aird | 26 -- docs/examples/data/model/model.aird.license | 2 - docs/examples/data/model/model.capella | 272 ------------ .../examples/data/model/model.capella.license | 2 - .../data/model_msgs/msg/MultiArrayLayout.msg | 29 -- .../data/model_msgs/msg/UInt64MultiArray.msg | 8 - .../msg/sub_msgs/MultiArrayDimension.msg | 6 - .../data/model_msgs/msg/types/ObjectTypes.msg | 14 - docs/examples/example_parse_capella.ipynb | 418 ------------------ .../example_parse_capella.ipynb.license | 2 - docs/examples/example_parse_message.ipynb | 155 ------- .../example_parse_message.ipynb.license | 2 - docs/examples/example_serialize_capella.ipynb | 382 ---------------- .../example_serialize_capella.ipynb.license | 2 - docs/examples/example_serialize_message.ipynb | 76 ---- .../example_serialize_message.ipynb.license | 2 - docs/source/examples/Convert messages.ipynb | 118 ----- .../examples/Convert messages.ipynb.license | 2 - docs/source/examples/Parse messages.ipynb | 6 +- .../empty_project_52.capella.license | 4 - docs/source/howtos/howtos.rst | 16 +- docs/source/index.rst | 9 +- docs/source/usage/usage.rst | 20 +- git-conventional-commits.json.license | 2 +- tests/test_rosidl2capella.py | 8 - 54 files changed, 54 insertions(+), 3199 deletions(-) delete mode 100644 .gitmodules delete mode 100644 capella_ros_tools/capella2msg.py delete mode 100644 capella_ros_tools/display/__init__.py delete mode 100644 capella_ros_tools/display/app.py delete mode 100644 capella_ros_tools/display/static/icons/favicon.ico delete mode 100644 capella_ros_tools/display/static/icons/favicon.ico.license delete mode 100644 capella_ros_tools/display/static/styles.css delete mode 100644 capella_ros_tools/display/templates/class.html delete mode 100644 capella_ros_tools/display/templates/enum.html delete mode 100644 capella_ros_tools/display/templates/package.html delete mode 100644 capella_ros_tools/modules/parse_capella.py delete mode 100644 capella_ros_tools/modules/parse_message.py delete mode 100644 capella_ros_tools/modules/serialize_capella.py delete mode 100644 capella_ros_tools/modules/serialize_message.py delete mode 100644 capella_ros_tools/msg2capella.py delete mode 100644 docs/examples/data/empty_model/.project delete mode 100644 docs/examples/data/empty_model/.project.license delete mode 100644 docs/examples/data/empty_model/empty_model.afm delete mode 100644 docs/examples/data/empty_model/empty_model.afm.license delete mode 100644 docs/examples/data/empty_model/empty_model.aird delete mode 100644 docs/examples/data/empty_model/empty_model.aird.license delete mode 100644 docs/examples/data/empty_model/empty_model.capella delete mode 100644 docs/examples/data/empty_model/empty_model.capella.license delete mode 100644 docs/examples/data/model/.project delete mode 100644 docs/examples/data/model/.project.license delete mode 100644 docs/examples/data/model/model.afm delete mode 100644 docs/examples/data/model/model.afm.license delete mode 100644 docs/examples/data/model/model.aird delete mode 100644 docs/examples/data/model/model.aird.license delete mode 100644 docs/examples/data/model/model.capella delete mode 100644 docs/examples/data/model/model.capella.license delete mode 100644 docs/examples/data/model_msgs/msg/MultiArrayLayout.msg delete mode 100644 docs/examples/data/model_msgs/msg/UInt64MultiArray.msg delete mode 100644 docs/examples/data/model_msgs/msg/sub_msgs/MultiArrayDimension.msg delete mode 100644 docs/examples/data/model_msgs/msg/types/ObjectTypes.msg delete mode 100644 docs/examples/example_parse_capella.ipynb delete mode 100644 docs/examples/example_parse_capella.ipynb.license delete mode 100644 docs/examples/example_parse_message.ipynb delete mode 100644 docs/examples/example_parse_message.ipynb.license delete mode 100644 docs/examples/example_serialize_capella.ipynb delete mode 100644 docs/examples/example_serialize_capella.ipynb.license delete mode 100644 docs/examples/example_serialize_message.ipynb delete mode 100644 docs/examples/example_serialize_message.ipynb.license delete mode 100644 docs/source/examples/Convert messages.ipynb delete mode 100644 docs/source/examples/Convert messages.ipynb.license delete mode 100644 tests/test_rosidl2capella.py diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 8307775..16913ff 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,11 +1,12 @@ -# Copyright DB InfraGO AG and contributors +# SPDX-FileCopyrightText: Copyright DB InfraGO AG # SPDX-License-Identifier: CC0-1.0 name: Docs on: + workflow_dispatch: push: - branches: ["master"] + branches: [master] jobs: sphinx: @@ -13,25 +14,36 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: fetch-depth: 0 - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: - python-version: "3.10" + cache: pip + cache-dependency-path: pyproject.toml + python-version: "3.12" - name: Upgrade pip - run: | - python -m pip install -U pip + run: python -m pip install -U pip - name: Install dependencies run: | + sudo apt-get install -y pandoc python -m pip install '.[docs]' - name: Auto-generate APIDOC sources - run: |- - sphinx-apidoc --output-dir docs/source/code --force . + run: make -C docs apidoc - name: Create docs - run: | - make -C docs html + run: make -C docs html + - name: Archive the docs + # https://github.com/actions/upload-artifact#too-many-uploads-resulting-in-429-responses + run: (cd docs/build/html && zip -Xr ../html.zip .) + - name: Upload built docs as artifact + uses: actions/upload-artifact@v3 + with: + name: Documentation + path: docs/build/html.zip + if-no-files-found: error + retention-days: 5 - name: Deploy + if: github.ref == 'refs/heads/master' uses: peaceiris/actions-gh-pages@v3 with: force_orphan: true diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index b2e01b9..0000000 --- a/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: CC0-1.0 - -[submodule "common_interfaces"] - path = capella_ros_tools/msg_to_capella/ros_interfaces/common_interfaces - url = https://github.com/ros2/common_interfaces.git -[submodule "rcl_interfaces"] - path = capella_ros_tools/msg_to_capella/ros_interfaces/rcl_interfaces - url = https://github.com/ros2/rcl_interfaces.git diff --git a/LICENSES/.license_header.txt b/LICENSES/.license_header.txt index dfb50dd..02c8c23 100644 --- a/LICENSES/.license_header.txt +++ b/LICENSES/.license_header.txt @@ -1,6 +1,2 @@ -<<<<<<< HEAD -Copyright DB Netz AG and contributors -======= Copyright DB InfraGO AG and contributors ->>>>>>> 40ef464 (feat: Make tree view draggable) SPDX-License-Identifier: Apache-2.0 diff --git a/capella_ros_tools/capella2msg.py b/capella_ros_tools/capella2msg.py deleted file mode 100644 index f176d9a..0000000 --- a/capella_ros_tools/capella2msg.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""CLI for importing .msg to capella model.""" -import sys -from pathlib import Path - -import click - -import capella_ros_tools -from capella_ros_tools.modules import BASIC_TYPES, ROS_INTERFACES -from capella_ros_tools.modules.parse_capella import ParseCapella -from capella_ros_tools.modules.serialize_message import ( - SerializeMessageDef, - SerializeMessagesPkg, -) - - -class Capella2Msg: - """Class for converting capella model to .msg files.""" - - def __init__(self, path_to_capella_model, layer, overlap) -> None: - self.parser = ParseCapella(path_to_capella_model, layer) - self.overlap = overlap - - def add_package(self, current_root): - """Add package to message package.""" - out = SerializeMessagesPkg({}, {}) - - messages = self.parser.get_classes(current_root) - types = self.parser.get_types(current_root) - - out.messages = { - msg_name: SerializeMessageDef(msg_name, desc, props) - for msg_name, (desc, props) in (messages | types).items() - } - out.packages = { - pkg_name: self.add_package(current_root.packages.by_name(pkg_name)) - for pkg_name in self.parser.get_packages(current_root) - } - return out - - -@click.command() -@click.version_option( - version=capella_ros_tools.__version__, - prog_name="capella-ros-tools", - message="%(prog)s %(version)s", -) -@click.argument( - "path-to-msgs-root", - type=click.Path( - file_okay=False, - readable=True, - resolve_path=True, - path_type=Path, - ), - required=True, -) -@click.argument( - "path-to-capella-model", - type=click.Path( - exists=True, - readable=True, - resolve_path=True, - path_type=str, - ), - required=True, -) -@click.argument( - "layer", - type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=False), - required=True, -) -@click.option( - "-o", - "--overlap", - type=click.Choice( - ["keep", "overwrite", "ask", "abort"], case_sensitive=False - ), - default="ask" if sys.stdin.isatty() else "abort", -) -@click.option("--debug", is_flag=True) -def capella2msg( - path_to_msgs_root, path_to_capella_model, layer, overlap, debug -): - """Convert capella model to .msg files.""" - converter = Capella2Msg(path_to_capella_model, layer, overlap) - current_root = converter.parser.data - - messages = converter.parser.get_classes(current_root) - types = converter.parser.get_types(current_root) - - packages = converter.parser.get_packages(current_root) - packages.discard(BASIC_TYPES) - packages.discard(ROS_INTERFACES) - - root = SerializeMessagesPkg({}, {}) - root.messages = { - msg_name: SerializeMessageDef(msg_name, desc, props) - for msg_name, (desc, props) in (messages | types).items() - } - - root.packages = { - pkg_name: converter.add_package( - current_root.packages.by_name(pkg_name) - ) - for pkg_name in packages - } - - if debug: - click.echo(root) - else: - root.to_msg_folder(path_to_msgs_root) diff --git a/capella_ros_tools/display/__init__.py b/capella_ros_tools/display/__init__.py deleted file mode 100644 index 317c020..0000000 --- a/capella_ros_tools/display/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Module for displaying data from the Capella ROS Tools.""" diff --git a/capella_ros_tools/display/app.py b/capella_ros_tools/display/app.py deleted file mode 100644 index c2ad343..0000000 --- a/capella_ros_tools/display/app.py +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""FastAPI app for displaying Capella model.""" -import typing as t -from pathlib import Path - -import uvicorn -from fastapi import FastAPI, Request -from fastapi.responses import HTMLResponse -from fastapi.staticfiles import StaticFiles -from fastapi.templating import Jinja2Templates - -PATH = Path(__file__).parent - - -app = FastAPI(title="Capella ROS Tools") -app.mount( - "/static", StaticFiles(directory=PATH.joinpath("static")), name="static" -) -templates = Jinja2Templates(directory=PATH.joinpath("templates")) - - -def get_type(xtype: str) -> str: - """Get type from xtype.""" - return xtype.rpartition(":")[2] - - -templates.env.globals.update(get_type=get_type) - - -@app.get("/", response_class=HTMLResponse) -def root(request: Request): - """Root page.""" - element = app.state.data_package - context = { - "request": request, - "element": element, - "get_type": get_type, - } - response = templates.TemplateResponse("package.html", context) - return response - - -@app.get("/{type}/{uuid}", response_class=HTMLResponse) -def view(request: Request, type: str, uuid: str): - """View page.""" - element = app.state.model.by_uuid(uuid) - template = type + ".html" - - context = { - "request": request, - "element": element, - "get_type": get_type, - } - response = templates.TemplateResponse(template, context) - return response - - -def start(model: t.Any, layer: str, port: int = 5000): - """Start the app.""" "" - app.state.model = model - app.state.data_package = getattr(model, layer).data_package - uvicorn.run( - app, - host="0.0.0.0", - port=port, - ) diff --git a/capella_ros_tools/display/static/icons/favicon.ico b/capella_ros_tools/display/static/icons/favicon.ico deleted file mode 100644 index a0c9c57790ad59936eb10aae1125145b7895a798..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmb7@KS;w+5XP@bS~^%M{#&h^f|K3cTwI+LoQpJRwNzaEGnj%X4kCh3oZY&(I#vo6 z#L3yE*u_OCh;}HR-`U)w4Heo~F4ya<~!wChc5VcmdvL$rE->7hgR$mne@3-^7tz)WA+Yt@G{-p`u) z@eb=+m;Z)4e4<=4p2f#{nuvGR$vx%XqCwxXa%jE+Z4-P`>Yl@=S|25&PeJ_1N2B<9 zvgQy|<`11WoH#aVc TT4zM1QkPZ1+cm^n5E-Ih_${+; diff --git a/capella_ros_tools/display/static/icons/favicon.ico.license b/capella_ros_tools/display/static/icons/favicon.ico.license deleted file mode 100644 index 95e8b6e..0000000 --- a/capella_ros_tools/display/static/icons/favicon.ico.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/capella_ros_tools/display/static/styles.css b/capella_ros_tools/display/static/styles.css deleted file mode 100644 index cfaca88..0000000 --- a/capella_ros_tools/display/static/styles.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright DB Netz AG and contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -/* color palette from */ -:root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --pink: #ffaccd; - --pink-dark: rgb(255, 0, 153); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --color-accent: var(--pink); - --color-accent-hover: var(--pink-dark); - - --section-gap: 160px; -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -html, -body { - width: 100vw; - height: 100vh; - margin: 0; - padding: 0; -} - -body { - display: flex; - flex-direction: row; - color: var(--color-text); - background: var(--color-background-soft); - line-height: 1.6; - font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - color: inherit; - text-decoration: none; - border-bottom: 3px solid var(--color-accent); -} - -a:hover { - border-bottom-color: var(--color-accent-hover); -} - -span { - white-space: pre-wrap; - display: inline-flex; - opacity: 0.75; -} - -strong { - font-weight: 500; -} - -main { - padding: 0.5rem 1rem; -} - -main, -aside { - max-height: 100%; - overflow-y: auto; - flex: 1; - display: flex; - flex-direction: column; -} - -aside { - background-color: white; -} - -aside > div { - height: 100%; - width: 100%; -} - -table { - border-spacing: 0 1.5rem; -} -tr > td:first-child { - font-weight: bold; - text-align: right; - padding-right: 2rem; - white-space: nowrap; - width: 1%; -} - -tr > td:last-child { - text-align: left; -} - -ol { - padding: 0; - counter-reset: list; -} -ol > li { - list-style: none; - display: flex; -} -ol > li:before { - content: "[" counter(list) "] "; - counter-increment: list; - margin-right: 0.5em; -} - -::-webkit-scrollbar { - display: none; -} - -/* Media query for landscape mode */ -@media screen and (orientation: portrait) { - body { - display: flex; - flex-direction: column; - } -} diff --git a/capella_ros_tools/display/templates/class.html b/capella_ros_tools/display/templates/class.html deleted file mode 100644 index f22e83b..0000000 --- a/capella_ros_tools/display/templates/class.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - {{ element.name }} - Overview - - - - -
                              -

                              - {{ element.name }} - ({{ element.xtype }}) -

                              - - - - - - - - - - - - - - - - - -
                              uuid{{ element.uuid }}
                              parent{{ element.parent._short_html_() }}
                              description - {{ element.description }} -
                              properties -
                                - {% for prop in element.properties %} -
                              1. -

                                - Property "{{ prop.name - }}": {{prop.type.name}} - {{ prop.description }} -

                                -
                              2. - {% endfor %} -
                              -
                              -
                              - - - diff --git a/capella_ros_tools/display/templates/enum.html b/capella_ros_tools/display/templates/enum.html deleted file mode 100644 index a3c218e..0000000 --- a/capella_ros_tools/display/templates/enum.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - {{ element.name }} - Overview - - - - -
                              -

                              - {{ element.name }} - ({{ element.xtype }}) -

                              - - - - - - - - - - - - - - - - - -
                              uuid{{ element.uuid }}
                              parent{{ element.parent._short_html_() }}
                              description - {{ element.description }} -
                              literals -
                                - {% for lit in element.literals %} -
                              1. - EnumerationLiteral "{{ - lit.name }}": {{lit.value.type.name}} = - {{lit.value.value}} -
                              2. - {% endfor %} -
                              -
                              -
                              - - diff --git a/capella_ros_tools/display/templates/package.html b/capella_ros_tools/display/templates/package.html deleted file mode 100644 index 9850811..0000000 --- a/capella_ros_tools/display/templates/package.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - {{ element.name }} - Overview - - - -
                              -

                              - {{ element.name }} - ({{ element.xtype }}) -

                              - - - - - - - - - - - - - - - - - - - - - - - - - -
                              uuid{{ element.uuid }}
                              parent{{ element.parent._short_html_() }}
                              classes -
                                - {% for cls in element.classes %} -
                              1. - {{ cls._short_html_() }} -
                              2. - {% endfor %} -
                              -
                              datatypes -
                                - {% for datatype in element.datatypes %} {% if - get_type(datatype.xtype) != 'Enumeration' %} -
                              1. - {{ datatype._short_html_() }} -
                              2. - {% endif %} {% endfor %} -
                              -
                              enumeration -
                                - {% for enum in element.enumerations %} -
                              1. - {{ enum._short_html_() }} -
                              2. - {% endfor %} -
                              -
                              packages -
                                - {% for pkg in element.packages %} -
                              1. - {{ pkg._short_html_() }} -
                              2. - {% endfor %} -
                              -
                              -
                              - - diff --git a/capella_ros_tools/modules/parse_capella.py b/capella_ros_tools/modules/parse_capella.py deleted file mode 100644 index ba24f27..0000000 --- a/capella_ros_tools/modules/parse_capella.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Class definition for Capella model parser.""" -import typing as t - -from . import ROS_INTERFACES, BaseCapella, EnumProp, MsgProp - - -class ParseCapella(BaseCapella): - """Parser for Capella model.""" - - def get_packages(self, package: t.Any) -> set[str]: - """Get packages in Capella model.""" - return {pkg.name for pkg in package.packages} - - def get_classes(self, package: t.Any) -> dict[str, t.Any]: - """Get classes in Capella model.""" - classes: dict = {} - for cls in package.classes: - props = [] - for prop in cls.owned_properties: - type = ( - prop.type.name - if prop.type.__class__.__name__ != "Enumeration" - else "uint8" - ) - typedir = ( - prop.type.parent.name - if prop.type.parent.parent.name == ROS_INTERFACES - else "" - ) - props.append( - MsgProp( - prop.name, - type, - typedir, - prop.min_card.value, - prop.max_card.value, - prop.description, - ) - ) - classes[cls.name] = (cls.description, props) - return classes - - def get_types(self, package: t.Any) -> dict[str, t.Any]: - """Get types in Capella model.""" - types: dict = {} - for type in package.datatypes: - props = [ - EnumProp( - prop.name, - prop.value.type.name if prop.value.type else "uint8", - prop.value.value, - prop.description, - ) - for prop in type.owned_literals - ] - types[type.name] = (type.description, props) - return types diff --git a/capella_ros_tools/modules/parse_message.py b/capella_ros_tools/modules/parse_message.py deleted file mode 100644 index 4cf607e..0000000 --- a/capella_ros_tools/modules/parse_message.py +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Parser for ROS messages.""" -import os -import re -from pathlib import Path - -from . import EnumProp, MessageDef, MessagesPkg, MsgProp - -RE_TNC = re.compile(r"^([A-Za-z0-9\[\]\/_]+)\s+(\w+)(?:\s+#\s*(.+))?$") -RE_ENUM = re.compile(r"^(\w+)\s+(\w+)\s*=\s*(\d+)\s*(?:#\s*(.+))?$") -RE_COMMENT = re.compile(r"cf.\s+(\w+)(?:,\s+(\w+))?") - - -class ParseMessageDef(MessageDef): - """Parser for message files.""" - - @property - def as_struct(self) -> tuple: - """Return message definition as struct.""" - return (self.description, self.props) - - @classmethod - def from_msg_file(cls, file: Path) -> list: - """Create message definition from message file.""" - raw_msg = file.read_text() - lines = raw_msg.split("\n") - for i, line in enumerate(lines): - if not line.startswith("#"): - break - else: - i = 0 - description = "\n".join(l.lstrip("#").strip() for l in lines[:i]) - props = [] - for line in lines[i:]: - for prop_type_raw, prop_name, comment in RE_TNC.findall(line): - p = prop_type_raw.split("[", 1) - min_card = "0" if len(p) > 1 else "1" - max_card = p[1].replace("]", "") if len(p) > 1 else "1" - match = RE_COMMENT.search(comment) - filename, commonprefix = ( - match.groups() if match else (None, None) - ) - type_path = list(p[0].split("/", 1)) - if commonprefix: - prop_type = re.sub("_XXX$", "", commonprefix) - else: - prop_type = filename if filename else type_path[-1] - type_pkg = type_path[0] if len(type_path) > 1 else "" - props.append( - MsgProp( - prop_name, - prop_type, - type_pkg, - min_card, - max_card, - comment, - ) - ) - - return [cls(file.stem, description, props)] - - @classmethod - def from_type_file(cls, file: Path) -> list: - """Create message definition from type file.""" - raw_msg = file.read_text() - lines = raw_msg.split("\n") - for i, line in enumerate(lines): - if not line.startswith("#"): - break - else: - i = 0 - description = "\n".join(l.lstrip("#").strip() for l in lines[:i]) - blocks = "\n".join(lines[i:]).split("\n\n") - out = [] - for block in blocks: - lines = block.split("\n") - props = [ - (n, t, v, c) - for line in lines - for (t, n, v, c) in RE_ENUM.findall(line) - ] - if not props: - continue - commonprefix = os.path.commonprefix([prop[0] for prop in props]) - name = commonprefix.rpartition("_")[0] - props = [ - EnumProp(prop[0].replace(commonprefix, ""), *prop[1:]) - for prop in props - ] - out.append(cls(name, description, props)) - return out - - -class ParseMessagesPkg(MessagesPkg): - """Parse messages package.""" - - @property - def as_structs(self) -> tuple: - """Return package as structs.""" - messages = {k: v.as_struct for k, v in self.messages.items()} - packages = {k: v.as_structs for k, v in self.packages.items()} - return (messages, packages) - - @classmethod - def from_msg_folder(cls, path_to_pkg_root: Path): - """Create package package from message folder.""" - out = cls({}, {}) - func = ( - ParseMessageDef.from_type_file - if "types" in path_to_pkg_root.parts - else ParseMessageDef.from_msg_file - ) - for f in path_to_pkg_root.iterdir(): - if f.name.endswith(".msg"): - msg = func(f) - for m in msg: - out.messages[m.name] = m - elif f.is_dir(): - out.packages[f.name] = cls.from_msg_folder(f) - - return out - - @classmethod - def from_pkg_folders(cls, path_to_root: Path): - """Create package from package folder.""" - out = cls({}, {}) - for dir in path_to_root.rglob("msg/"): - out.packages[dir.parent.name] = ParseMessagesPkg.from_msg_folder( - dir - ) - return out diff --git a/capella_ros_tools/modules/serialize_capella.py b/capella_ros_tools/modules/serialize_capella.py deleted file mode 100644 index 73d20ba..0000000 --- a/capella_ros_tools/modules/serialize_capella.py +++ /dev/null @@ -1,197 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Class definition for Capella model serializer.""" -import typing as t - -import capellambse - -from . import BASIC_TYPES, ROS_INTERFACES, BaseCapella, MsgProp - - -class SerializeCapella(BaseCapella): - """Serializer for Capella model.""" - - def __init__(self, path_to_capella_model: str, layer: str) -> None: - super().__init__(path_to_capella_model, layer) - self.create_packages({BASIC_TYPES}, self.data) - self.basic_types = self.data.packages.by_name(BASIC_TYPES) - - def create_packages(self, packages: set[str], package: t.Any) -> None: - """Create packages in Capella model.""" - for package_name in packages: - try: - package.packages.by_name(package_name) - except KeyError: - package.packages.create("DataPkg", name=package_name) - - def create_classes( - self, - classes: dict[str, tuple[str, list]], - package: t.Any, - ) -> list: - """Create classes in Capella model.""" - overlap = [] - for class_name, info in classes.items(): - try: - overlap.append(package.classes.by_name(class_name)) - except KeyError: - description, _ = info - package.classes.create( - name=class_name, description=description - ) - return overlap - - def delete_classes(self, classes: list, package: t.Any) -> None: - """Delete classes in Capella model.""" - for cls in classes: - try: - package.classes.remove(cls) - except KeyError: - pass - - def create_types( - self, types: dict[str, tuple[str, list]], package: t.Any - ) -> list: - """Create types in Capella model.""" - overlap = [] - for type_name, info in types.items(): - try: - overlap.append(package.datatypes.by_name(type_name)) - except KeyError: - description, properties = info - type = package.datatypes.create( - "Enumeration", name=type_name, description=description - ) - for prop in properties: - property = type.owned_literals.create( - "EnumerationLiteral", - name=prop.name, - description=prop.comment, - ) - self.create_basic_types({prop.type}) - property.value = capellambse.new_object( - "LiteralNumericValue", - value=float(prop.value), - type=self.basic_types.datatypes.by_name(prop.type), - ) - return overlap - - def delete_types(self, types: list, package: t.Any) -> None: - """Delete types in Capella model.""" - for type in types: - try: - package.datatypes.remove(type) - except KeyError: - pass - - def create_basic_types(self, basic_types: set[str]) -> list: - """Create basic types in Capella model.""" - overlap = [] - for basic_type in basic_types: - try: - overlap.append(self.basic_types.datatypes.by_name(basic_type)) - except KeyError: - if basic_type in ["string", "char"]: - type = "StringType" - elif basic_type == "bool": - type = "BooleanType" - else: - type = "NumericType" - self.basic_types.datatypes.create(type, name=basic_type) - return overlap - - def create_composition( - self, - class_name: str, - prop: MsgProp, - package: t.Any, - ) -> bool: - """Create composition in Capella model.""" - superclass = package.classes.by_name(class_name) - try: - partclass = ( - ( - self.data.packages.by_name(ROS_INTERFACES) - .packages.by_name(prop.typedir) - .classes.by_name(prop.type) - ) - if prop.typedir - else self.model.search("Class", below=package).by_name( - prop.type - ) - ) - except KeyError: - return False - try: - p = superclass.owned_properties.by_name(prop.name) - superclass.owned_properties.remove(p) - except KeyError: - pass - composition = superclass.owned_properties.create( - name=prop.name, - type=partclass, - kind="COMPOSITION", - description=prop.comment, - ) - association = package.owned_associations.create( - navigable_members=[composition] - ) - association.members.create( - "Property", - type=superclass, - kind="ASSOCIATION", - min_card=capellambse.new_object("LiteralNumericValue", value=1), - max_card=capellambse.new_object("LiteralNumericValue", value=1), - ) - composition.min_card = capellambse.new_object( - "LiteralNumericValue", value=float(prop.min) - ) - composition.max_card = capellambse.new_object( - "LiteralNumericValue", value=float(prop.max or "inf") - ) - return True - - def _find_type(self, type_name: str, package: t.Any) -> t.Any: - """Find type in Capella model.""" - try: - return self.model.search("Enumeration", below=package).by_name( - type_name - ) - except KeyError: - pass - try: - return self.basic_types.datatypes.by_name(type_name) - except KeyError: - self.create_basic_types({type_name}) - return self.basic_types.datatypes.by_name(type_name) - - def create_attribute( - self, - class_name: str, - prop: MsgProp, - package: t.Any, - ) -> None: - """Create attribute in Capella model.""" - superclass = package.classes.by_name(class_name) - property_type = self._find_type(prop.type, package) - try: - p = superclass.owned_properties.by_name(prop.name) - superclass.owned_properties.remove(p) - except KeyError: - pass - attribute = superclass.owned_properties.create( - name=prop.name, - type=property_type, - kind="COMPOSITION", - description=prop.comment, - ) - attribute.min_card = capellambse.new_object( - "LiteralNumericValue", value=float(prop.min) - ) - attribute.max_card = capellambse.new_object( - "LiteralNumericValue", value=float(prop.max or "inf") - ) - - def save_changes(self) -> None: - """Save changes to Capella model.""" - self.model.save() diff --git a/capella_ros_tools/modules/serialize_message.py b/capella_ros_tools/modules/serialize_message.py deleted file mode 100644 index 177106e..0000000 --- a/capella_ros_tools/modules/serialize_message.py +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Serializer for ROS messages.""" - -from pathlib import Path - -from . import MessageDef, MessagesPkg - - -class SerializeMessageDef(MessageDef): - """Serializer for message files.""" - - def to_msg_file(self, file: Path) -> None: - """Write message definition to message file.""" - description = "# " + self.description.replace("\n", "\n# ") + "\n" - props = "\n".join( - f"{p.typedir+'/' if p.typedir else ''}{p.type}" - f"{'[]' if p.min != p.max else ''} {p.name}\t" - f"{'# ' if p.comment else ''}{p.comment}" - for p in self.props - ) - file.write_text(description + "\n" + props) - - def to_type_file(self, file: Path) -> None: - """Write message definition to message file.""" - description = "# " + self.description.replace("\n", "\n# ") + "\n" - props = "\n".join( - f"{p.type} {file.stem + '_' + p.name}\t= {p.value}\t" - f"{'# ' if p.comment else ''}{p.comment}" - for p in self.props - ) - file.write_text(description + "\n" + props) - - -class SerializeMessagesPkg(MessagesPkg): - """Serializer for message packages.""" - - def to_msg_folder(self, path_to_pkg_root: Path) -> None: - """Write message package to message package.""" - path_to_pkg_root.mkdir(parents=True, exist_ok=True) - for msg_name, msg in self.messages.items(): - msg_file = path_to_pkg_root.joinpath(msg_name + ".msg") - if path_to_pkg_root.name == "types": - msg.to_type_file(msg_file) - else: - msg.to_msg_file(msg_file) - - for pkg_name, pkg in self.packages.items(): - new_path = path_to_pkg_root.joinpath(pkg_name) - new_path.mkdir(parents=True, exist_ok=True) - pkg.to_msg_folder(new_path) diff --git a/capella_ros_tools/msg2capella.py b/capella_ros_tools/msg2capella.py deleted file mode 100644 index 2d67ea9..0000000 --- a/capella_ros_tools/msg2capella.py +++ /dev/null @@ -1,165 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""CLI for importing .msg to capella model.""" -import sys -from pathlib import Path - -import click - -import capella_ros_tools -from capella_ros_tools.modules import ROS_INTERFACES -from capella_ros_tools.modules.parse_message import ParseMessagesPkg -from capella_ros_tools.modules.serialize_capella import SerializeCapella - -PATH = Path(__file__).parent - - -class Msg2Capella: - """Class for importing .msg to capella model.""" - - def __init__(self, path_to_capella_model, layer, overlap): - self.serializer = SerializeCapella(path_to_capella_model, layer) - self.overlap = overlap - - def add_objects(self, current_root_struct, current_root): - """Add objects to capella model.""" - messages = current_root_struct.messages - packages = current_root_struct.packages - - self.serializer.create_packages(set(packages.keys()), current_root) - - func = ( - (self.serializer.create_types, self.serializer.delete_types) - if current_root.name == "types" - else ( - self.serializer.create_classes, - self.serializer.delete_classes, - ) - ) - - overlap = func[0]( - {msg_name: msg.as_struct for msg_name, msg in messages.items()}, - current_root, - ) - - if overlap and self.overlap == "abort": - click.echo( - "Items already exist. Use --overlap=overwrite to overwrite." - ) - raise click.Abort() - for cls in overlap: - if self.overlap in ["ask", "overwrite"]: - if self.overlap == "ask": - confirm = click.prompt( - f"{cls.name} already exists. Do you want to overwrite?", - type=click.Choice( - ["y", "Y", "n", "N"], - case_sensitive=True, - ), - ) - match confirm: - case "n": - continue - case "N": - self.overlap = "keep" - case "Y": - self.overlap = "overwrite" - - func[1]([cls], current_root) - func[0]({cls.name: messages[cls.name].as_struct}, current_root) - - for pkg_name, pkg in packages.items(): - new_root = current_root.packages.by_name(pkg_name) - self.add_objects(pkg, new_root) - - def add_relations(self, current_root_struct, current_root): - """Add relations to capella model.""" - messages = current_root_struct.messages - packages = current_root_struct.packages - - if current_root.name == "types": - return - for class_name, cls in messages.items(): - for prop in cls.props: - if not self.serializer.create_composition( - class_name, prop, current_root - ): - self.serializer.create_attribute( - class_name, prop, current_root - ) - for pkg_name, pkg in packages.items(): - new_root = current_root.packages.by_name(pkg_name) - self.add_relations(pkg, new_root) - - -@click.command() -@click.version_option( - version=capella_ros_tools.__version__, - prog_name="capella-ros-tools", - message="%(prog)s %(version)s", -) -@click.argument( - "path-to-msgs-root", - type=click.Path( - exists=True, - file_okay=False, - readable=True, - resolve_path=True, - path_type=Path, - ), - required=True, -) -@click.argument( - "path-to-capella-model", - type=click.Path( - exists=True, - readable=True, - resolve_path=True, - path_type=str, - ), - required=True, -) -@click.argument( - "layer", - type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=False), - required=True, -) -@click.option( - "-o", - "--overlap", - type=click.Choice( - ["keep", "overwrite", "ask", "abort"], case_sensitive=False - ), - default="ask" if sys.stdin.isatty() else "abort", -) -@click.option("--debug", is_flag=True) -def msg2capella( - path_to_msgs_root: Path, - path_to_capella_model: str, - layer: str, - overlap: str, - debug: bool, -): - """Parse .msg files and import them to capella model.""" - - converter = Msg2Capella(path_to_capella_model, layer, "keep") - current_root = converter.serializer.data - - ros_interfaces = ParseMessagesPkg.from_pkg_folders( - PATH.joinpath("ros_interfaces") - ) - current_root_struct = ParseMessagesPkg( - {}, {ROS_INTERFACES: ros_interfaces} - ) - - converter.add_objects(current_root_struct, current_root) - - converter.overlap = overlap - current_root_struct = ParseMessagesPkg.from_pkg_folders(path_to_msgs_root) - converter.add_objects(current_root_struct, current_root) - converter.add_relations(current_root_struct, current_root) - - if debug: - click.echo(converter.serializer.data) - else: - converter.serializer.save_changes() diff --git a/docs/examples/data/empty_model/.project b/docs/examples/data/empty_model/.project deleted file mode 100644 index 6c740f9..0000000 --- a/docs/examples/data/empty_model/.project +++ /dev/null @@ -1,12 +0,0 @@ - - - empty_model - - - - - - - org.polarsys.capella.project.nature - - diff --git a/docs/examples/data/empty_model/.project.license b/docs/examples/data/empty_model/.project.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/empty_model/.project.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/empty_model/empty_model.afm b/docs/examples/data/empty_model/empty_model.afm deleted file mode 100644 index d019bfb..0000000 --- a/docs/examples/data/empty_model/empty_model.afm +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/examples/data/empty_model/empty_model.afm.license b/docs/examples/data/empty_model/empty_model.afm.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/empty_model/empty_model.afm.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/empty_model/empty_model.aird b/docs/examples/data/empty_model/empty_model.aird deleted file mode 100644 index 2fc68e9..0000000 --- a/docs/examples/data/empty_model/empty_model.aird +++ /dev/null @@ -1,26 +0,0 @@ - - - empty_model.afm - empty_model.capella - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/examples/data/empty_model/empty_model.aird.license b/docs/examples/data/empty_model/empty_model.aird.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/empty_model/empty_model.aird.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/empty_model/empty_model.capella b/docs/examples/data/empty_model/empty_model.capella deleted file mode 100644 index c1771c1..0000000 --- a/docs/examples/data/empty_model/empty_model.capella +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/examples/data/empty_model/empty_model.capella.license b/docs/examples/data/empty_model/empty_model.capella.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/empty_model/empty_model.capella.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/model/.project b/docs/examples/data/model/.project deleted file mode 100644 index 89f6904..0000000 --- a/docs/examples/data/model/.project +++ /dev/null @@ -1,12 +0,0 @@ - - - model - - - - - - - org.polarsys.capella.project.nature - - diff --git a/docs/examples/data/model/.project.license b/docs/examples/data/model/.project.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/model/.project.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/model/model.afm b/docs/examples/data/model/model.afm deleted file mode 100644 index 66ba63f..0000000 --- a/docs/examples/data/model/model.afm +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/examples/data/model/model.afm.license b/docs/examples/data/model/model.afm.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/model/model.afm.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/model/model.aird b/docs/examples/data/model/model.aird deleted file mode 100644 index 2ee1f82..0000000 --- a/docs/examples/data/model/model.aird +++ /dev/null @@ -1,26 +0,0 @@ - - - model.afm - model.capella - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/examples/data/model/model.aird.license b/docs/examples/data/model/model.aird.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/model/model.aird.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/model/model.capella b/docs/examples/data/model/model.capella deleted file mode 100644 index b2055e1..0000000 --- a/docs/examples/data/model/model.capella +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/examples/data/model/model.capella.license b/docs/examples/data/model/model.capella.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/data/model/model.capella.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/data/model_msgs/msg/MultiArrayLayout.msg b/docs/examples/data/model_msgs/msg/MultiArrayLayout.msg deleted file mode 100644 index c9aac7b..0000000 --- a/docs/examples/data/model_msgs/msg/MultiArrayLayout.msg +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -# -# The multiarray declares a generic multi-dimensional array of a -# particular data type. Dimensions are ordered from outer most -# to inner most. - -MultiArrayDimension[] dim # Array of dimension properties -uint8 data_offset # cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX - -# Accessors should ALWAYS be written in terms of dimension stride -# and specified outer-most dimension first. -# -# multiarray(i,j,k) = data[data_offset + dim_stride[1]*i + dim_stride[2]*j + k] -# -# A standard, 3-channel 640x480 image with interleaved color channels -# would be specified as: -# -# dim[0].label = "height" -# dim[0].size = 480 -# dim[0].stride = 3*640*480 = 921600 (note dim[0] stride is just size of image) -# dim[1].label = "width" -# dim[1].size = 640 -# dim[1].stride = 3*640 = 1920 -# dim[2].label = "channel" -# dim[2].size = 3 -# dim[2].stride = 3 -# -# multiarray(i,j,k) refers to the ith row, jth column, and kth channel. diff --git a/docs/examples/data/model_msgs/msg/UInt64MultiArray.msg b/docs/examples/data/model_msgs/msg/UInt64MultiArray.msg deleted file mode 100644 index 3f2aa22..0000000 --- a/docs/examples/data/model_msgs/msg/UInt64MultiArray.msg +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 -# -# Please look at the MultiArrayLayout message definition for -# documentation on all multiarrays. - -MultiArrayLayout layout # specification of data layout -uint64[] data # array of data diff --git a/docs/examples/data/model_msgs/msg/sub_msgs/MultiArrayDimension.msg b/docs/examples/data/model_msgs/msg/sub_msgs/MultiArrayDimension.msg deleted file mode 100644 index 0beece4..0000000 --- a/docs/examples/data/model_msgs/msg/sub_msgs/MultiArrayDimension.msg +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 - -string label # label of given dimension -uint32 size # size of given dimension (in type units) -uint32 stride # stride of given dimension diff --git a/docs/examples/data/model_msgs/msg/types/ObjectTypes.msg b/docs/examples/data/model_msgs/msg/types/ObjectTypes.msg deleted file mode 100644 index 52fb5cd..0000000 --- a/docs/examples/data/model_msgs/msg/types/ObjectTypes.msg +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-FileCopyrightText: Copyright DB Netz AG -# SPDX-License-Identifier: Apache-2.0 -# -# ObjectTypes -# -# Created: 2020-04-15 -# Modified: 2020-04-22 -# Version: 2.0 -# -# Description: List of object motion types, classes, types, and subtypes. - -uint8 OBJECT_MOTION_TYPE_UNDEFINED = 0 # undefined -uint8 OBJECT_MOTION_TYPE_STATIC = 1 -uint8 OBJECT_MOTION_TYPE_DYNAMIC = 2 diff --git a/docs/examples/example_parse_capella.ipynb b/docs/examples/example_parse_capella.ipynb deleted file mode 100644 index 2d039fe..0000000 --- a/docs/examples/example_parse_capella.ipynb +++ /dev/null @@ -1,418 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "Property values are not available in this model\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" - ] - } - ], - "source": [ - "! python -m capella_ros_tools --overlap=overwrite data/model_msgs data/model la" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.modules.parse_capella import ParseCapella" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "Property values are not available in this model\n" - ] - } - ], - "source": [ - "model = ParseCapella(\"data/model\", \"la\")" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'basic_types', 'model_msgs', 'ros_interfaces'}" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.get_packages(model.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sub_msgs', 'types'}" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model_msgs = model.data.packages.by_name(\"model_msgs\")\n", - "model.get_packages(model_msgs)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'UInt64MultiArray': (Markup('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nPlease look at the MultiArrayLayout message definition for\\ndocumentation on all multiarrays.'),\n", - " [MsgProp(name='layout', type='MultiArrayLayout', typedir='', min=1, max=1, comment=Markup('specification of data layout')),\n", - " MsgProp(name='data', type='uint64', typedir='', min=0, max=inf, comment=Markup('array of data'))]),\n", - " 'MultiArrayLayout': (Markup('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.'),\n", - " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min=0, max=inf, comment=Markup('Array of dimension properties')),\n", - " MsgProp(name='data_offset', type='uint8', typedir='', min=1, max=1, comment=Markup('cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX'))])}" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.get_classes(model_msgs)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'action_msgs',\n", - " 'actionlib_msgs',\n", - " 'builtin_interfaces',\n", - " 'diagnostic_msgs',\n", - " 'geometry_msgs',\n", - " 'lifecycle_msgs',\n", - " 'nav_msgs',\n", - " 'rcl_interfaces',\n", - " 'rosgraph_msgs',\n", - " 'sensor_msgs',\n", - " 'service_msgs',\n", - " 'shape_msgs',\n", - " 'statistics_msgs',\n", - " 'std_msgs',\n", - " 'stereo_msgs',\n", - " 'test_msgs',\n", - " 'trajectory_msgs',\n", - " 'type_description_interfaces',\n", - " 'visualization_msgs'}" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ros_interfaces = model.data.packages.by_name(\"ros_interfaces\")\n", - "model.get_packages(ros_interfaces)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'OBJECT_MOTION_TYPE': (Markup('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.'),\n", - " [EnumProp(name='UNDEFINED', type='uint8', value=0, comment=Markup('undefined')),\n", - " EnumProp(name='STATIC', type='uint8', value=1, comment=''),\n", - " EnumProp(name='DYNAMIC', type='uint8', value=2, comment='')])}" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model_types = model_msgs.packages.by_name(\"types\")\n", - "model.get_types(model_types)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/example_parse_capella.ipynb.license b/docs/examples/example_parse_capella.ipynb.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/example_parse_capella.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/example_parse_message.ipynb b/docs/examples/example_parse_message.ipynb deleted file mode 100644 index bd131c7..0000000 --- a/docs/examples/example_parse_message.ipynb +++ /dev/null @@ -1,155 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.modules.parse_message import ParseMessagesPkg, ParseMessageDef\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "({},\n", - " {'model_msgs': ({'UInt64MultiArray': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nPlease look at the MultiArrayLayout message definition for\\ndocumentation on all multiarrays.',\n", - " [MsgProp(name='layout', type='MultiArrayLayout', typedir='', min='1', max='1', comment='specification of data layout'),\n", - " MsgProp(name='data', type='uint64', typedir='', min='0', max='', comment='array of data')]),\n", - " 'MultiArrayLayout': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.',\n", - " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min='0', max='', comment='Array of dimension properties'),\n", - " MsgProp(name='data_offset', type='OBJECT_MOTION_TYPE', typedir='', min='1', max='1', comment='cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX')])},\n", - " {'sub_msgs': ({'MultiArrayDimension': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0',\n", - " [MsgProp(name='label', type='string', typedir='', min='1', max='1', comment='label of given dimension'),\n", - " MsgProp(name='size', type='uint32', typedir='', min='1', max='1', comment='size of given dimension (in type units)'),\n", - " MsgProp(name='stride', type='uint32', typedir='', min='1', max='1', comment='stride of given dimension')])},\n", - " {}),\n", - " 'types': ({'OBJECT_MOTION_TYPE': ('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.',\n", - " [EnumProp(name='UNDEFINED', type='uint8', value='0', comment='undefined'),\n", - " EnumProp(name='STATIC', type='uint8', value='1', comment=''),\n", - " EnumProp(name='DYNAMIC', type='uint8', value='2', comment='')])},\n", - " {})})})" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "folders = ParseMessagesPkg.from_pkg_folders(Path(\"data/model_msgs\"))\n", - "folders.as_structs" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "({'UInt64MultiArray': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nPlease look at the MultiArrayLayout message definition for\\ndocumentation on all multiarrays.',\n", - " [MsgProp(name='layout', type='MultiArrayLayout', typedir='', min='1', max='1', comment='specification of data layout'),\n", - " MsgProp(name='data', type='uint64', typedir='', min='0', max='', comment='array of data')]),\n", - " 'MultiArrayLayout': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.',\n", - " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min='0', max='', comment='Array of dimension properties'),\n", - " MsgProp(name='data_offset', type='OBJECT_MOTION_TYPE', typedir='', min='1', max='1', comment='cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX')])},\n", - " {'sub_msgs': ({'MultiArrayDimension': ('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0',\n", - " [MsgProp(name='label', type='string', typedir='', min='1', max='1', comment='label of given dimension'),\n", - " MsgProp(name='size', type='uint32', typedir='', min='1', max='1', comment='size of given dimension (in type units)'),\n", - " MsgProp(name='stride', type='uint32', typedir='', min='1', max='1', comment='stride of given dimension')])},\n", - " {}),\n", - " 'types': ({'OBJECT_MOTION_TYPE': ('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.',\n", - " [EnumProp(name='UNDEFINED', type='uint8', value='0', comment='undefined'),\n", - " EnumProp(name='STATIC', type='uint8', value='1', comment=''),\n", - " EnumProp(name='DYNAMIC', type='uint8', value='2', comment='')])},\n", - " {})})" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "folder = ParseMessagesPkg.from_msg_folder(Path(\"data/model_msgs/msg\"))\n", - "folder.as_structs" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('Copyright DB Netz AG and contributors\\nSPDX-License-Identifier: Apache-2.0\\n\\nThe multiarray declares a generic multi-dimensional array of a\\nparticular data type. Dimensions are ordered from outer most\\nto inner most.',\n", - " [MsgProp(name='dim', type='MultiArrayDimension', typedir='', min='0', max='', comment='Array of dimension properties'),\n", - " MsgProp(name='data_offset', type='OBJECT_MOTION_TYPE', typedir='', min='1', max='1', comment='cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX')])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "msg_file = ParseMessageDef.from_msg_file(Path(\"data/model_msgs/msg/MultiArrayLayout.msg\"))\n", - "msg_file[0].as_struct" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('SPDX-FileCopyrightText: Copyright DB Netz AG\\nSPDX-License-Identifier: Apache-2.0\\n\\nObjectTypes\\n\\nCreated: 2020-04-15\\nModified: 2020-04-22\\nVersion: 2.0\\n\\nDescription: List of object motion types, classes, types, and subtypes.',\n", - " [EnumProp(name='UNDEFINED', type='uint8', value='0', comment='undefined'),\n", - " EnumProp(name='STATIC', type='uint8', value='1', comment=''),\n", - " EnumProp(name='DYNAMIC', type='uint8', value='2', comment='')])" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type_file = ParseMessageDef.from_type_file(Path(\"data/model_msgs/msg/types/ObjectTypes.msg\"))\n", - "type_file[0].as_struct" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/example_parse_message.ipynb.license b/docs/examples/example_parse_message.ipynb.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/example_parse_message.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/example_serialize_capella.ipynb b/docs/examples/example_serialize_capella.ipynb deleted file mode 100644 index 70d5a26..0000000 --- a/docs/examples/example_serialize_capella.ipynb +++ /dev/null @@ -1,382 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.modules.serialize_capella import SerializeCapella\n", - "from capella_ros_tools.modules import MsgProp" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "Property values are not available in this model\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" - ] - } - ], - "source": [ - "model = SerializeCapella(\"data/empty_model\", \"la\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
                              1. DataPkg "basic_types" (9b3009e8-fad5-4b3b-9f8e-25d2da9d8709)
                              " - ], - "text/plain": [ - "[0] " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.data.packages" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" - ] - } - ], - "source": [ - "packages = {\"test\", \"test2\"}\n", - "model.create_packages(packages, model.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
                              1. DataPkg "basic_types" (9b3009e8-fad5-4b3b-9f8e-25d2da9d8709)
                              2. DataPkg "test2" (0bb61f0f-a3d2-42e4-85f2-6a3b8b7c74df)
                              3. DataPkg "test" (9a44dc40-b7be-479d-a5e7-3d7cb1537d1c)
                              " - ], - "text/plain": [ - "[0] \n", - "[1] \n", - "[2] " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.data.packages" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" - ] - }, - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "classes = {\n", - " \"class1\": (\"desc1\", []),\n", - " \"class2\": (\"desc2\", []),\n", - "}\n", - "model.create_classes(classes, model.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
                              1. Class "class1" (2ab1170f-981a-4758-bc1f-a4e9a0b7733d)
                              2. Class "class2" (c1629904-002a-47b7-8f33-935cbea6efb8)
                              " - ], - "text/plain": [ - "[0] \n", - "[1] " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.data.classes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If we try creating the same classes again, instead of creating duplicates we get a list of the overlapping classes." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "overlap = model.create_classes(classes, model.data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When we call delete_classes with the overlap, we can see that the classes are deleted." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

                              (Empty list)

                              " - ], - "text/plain": [ - "[]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.delete_classes(overlap, model.data)\n", - "model.data.classes" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "But let's create them again, because we still need them." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n" - ] - }, - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.create_classes(classes, model.data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Right now our classes don't have any properties. So let's create them.\\\n", - "For compositions use create_composition:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" - ] - }, - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.create_composition(\"class1\", MsgProp(\"prop1\", \"class2\", \"\", \"1\", \"1\", \"prop_desc1\"), model.data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For attributes use create_attribute:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Namespace 'org.polarsys.capella.core.data.information.datatype' already registered with URI 'http://www.polarsys.org/capella/core/information/datatype/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information' already registered with URI 'http://www.polarsys.org/capella/core/information/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n", - "Namespace 'org.polarsys.capella.core.data.information.datavalue' already registered with URI 'http://www.polarsys.org/capella/core/information/datavalue/6.0.0'\n" - ] - } - ], - "source": [ - "model.create_attribute(\"class2\", MsgProp(\"prop2\", \"uint8\", \"\", \"1\", \"1\", \"prop_desc2\"), model.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

                              prop1 (org.polarsys.capella.core.data.information:Property)

                              applied_property_value_groups

                              (Empty list)

                              applied_property_values

                              (Empty list)

                              associationBackreference to Association - omitted: can be slow to compute. Display this property directly to show.
                              constraints

                              (Empty list)

                              default_valueNone
                              descriptionprop_desc1
                              filtering_criteria

                              (Empty list)

                              is_abstractFalse
                              is_derivedFalse
                              is_orderedFalse
                              is_part_of_keyFalse
                              is_read_onlyFalse
                              is_staticFalse
                              is_uniqueFalse
                              kind<AggregationKind.COMPOSITION: 4>
                              maxNone
                              max_cardLiteralNumericValue "": 1 (a6d6b4a4-861f-4b77-9e03-46b99e45c9c3)
                              minNone
                              min_cardLiteralNumericValue "": 1 (265e184c-106b-4038-977b-95893741487d)
                              nameprop1
                              null_valueNone
                              parentClass "class1" (7950d11b-6012-4bee-96bf-539f1adf1815)
                              progress_statusNOT_SET
                              property_value_groups

                              (Empty list)

                              property_values

                              (Empty list)

                              requirements

                              (Empty list)

                              summaryNone
                              traces

                              (Empty list)

                              typeClass "class2" (7b4a44d0-2257-49a4-9d3c-39828d3589bb)
                              uuid7aacd84a-8f22-416b-ac88-d21ed8dc1abf
                              visibility<VisibilityKind.UNSET: 1>
                              xtypeorg.polarsys.capella.core.data.information:Property
                              " - ], - "text/plain": [ - "\n", - ".applied_property_value_groups = []\n", - ".applied_property_values = []\n", - ".association = ... # backreference to Association - omitted: can be slow to compute\n", - ".constraints = []\n", - ".default_value = None\n", - ".description = Markup('prop_desc1')\n", - ".filtering_criteria = []\n", - ".is_abstract = False\n", - ".is_derived = False\n", - ".is_ordered = False\n", - ".is_part_of_key = False\n", - ".is_read_only = False\n", - ".is_static = False\n", - ".is_unique = False\n", - ".kind = \n", - ".max = None\n", - ".max_card = \n", - ".min = None\n", - ".min_card = \n", - ".name = 'prop1'\n", - ".null_value = None\n", - ".parent = \n", - ".progress_status = 'NOT_SET'\n", - ".property_value_groups = []\n", - ".property_values = []\n", - ".requirements = []\n", - ".summary = None\n", - ".traces = []\n", - ".type = \n", - ".uuid = '7aacd84a-8f22-416b-ac88-d21ed8dc1abf'\n", - ".visibility = \n", - ".xtype = 'org.polarsys.capella.core.data.information:Property'" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.data.classes[0].owned_properties[0]" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/example_serialize_capella.ipynb.license b/docs/examples/example_serialize_capella.ipynb.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/example_serialize_capella.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/examples/example_serialize_message.ipynb b/docs/examples/example_serialize_message.ipynb deleted file mode 100644 index 8a49d86..0000000 --- a/docs/examples/example_serialize_message.ipynb +++ /dev/null @@ -1,76 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.modules.serialize_message import SerializeMessagesPkg, SerializeMessageDef\n", - "from capella_ros_tools.modules import MsgProp, EnumProp\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "messages = {\n", - " \"class1\": SerializeMessageDef(\n", - " \"class1\", \"desc1\", [MsgProp(\"prop1\", \"class2\", \"\", \"1\", \"1\", \"prop_desc1\")]\n", - " ),\n", - " \"class2\": SerializeMessageDef(\n", - " \"class2\", \"desc2\", [MsgProp(\"prop2\", \"uint8\", \"\", \"1\", \"1\", \"prop_desc2\")]\n", - " ),\n", - "}\n", - "types = {\n", - " \"type1\": SerializeMessageDef(\"type1\", \"type_desc1\", [EnumProp(\"value1\", \"uint8\", \"12\", \"enum value desc\")]),\n", - "}\n", - "packages = {\n", - " \"types\": SerializeMessagesPkg(types, {}),\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "folder = SerializeMessagesPkg(messages, packages)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "folder.to_msg_folder(Path(\"data/test\"))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/examples/example_serialize_message.ipynb.license b/docs/examples/example_serialize_message.ipynb.license deleted file mode 100644 index 95e8b6e..0000000 --- a/docs/examples/example_serialize_message.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB Netz AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/Convert messages.ipynb b/docs/source/examples/Convert messages.ipynb deleted file mode 100644 index b3a19dd..0000000 --- a/docs/source/examples/Convert messages.ipynb +++ /dev/null @@ -1,118 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import capellambse\n", - "from capella_ros_tools.scripts import msg2capella\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "msg_path = capellambse.filehandler.get_filehandler(\"git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss\").rootdir\n", - "capella_path = Path(\"data/empty_project_52\")\n", - "layer = \"la\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[3], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m converter \u001b[38;5;241m=\u001b[39m \u001b[43mmsg2capella\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mConverter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcapella_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlayer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mo\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/scripts/msg2capella.py:55\u001b[0m, in \u001b[0;36mConverter.__init__\u001b[0;34m(self, msg_path, capella_path, layer, action, no_deps)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 49\u001b[0m msg_path: t\u001b[38;5;241m.\u001b[39mAny,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 53\u001b[0m no_deps: \u001b[38;5;28mbool\u001b[39m,\n\u001b[1;32m 54\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 55\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmsgs \u001b[38;5;241m=\u001b[39m \u001b[43mMessagePkgDef\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_pkg_folder\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;241m=\u001b[39m CapellaModel(capella_path, layer)\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maction \u001b[38;5;241m=\u001b[39m action\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:326\u001b[0m, in \u001b[0;36mMessagePkgDef.from_pkg_folder\u001b[0;34m(cls, root_dir, root_dir_name)\u001b[0m\n\u001b[1;32m 323\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mcls\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, [], [])\n\u001b[1;32m 324\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m \u001b[38;5;28mdir\u001b[39m \u001b[38;5;129;01min\u001b[39;00m root_dir\u001b[38;5;241m.\u001b[39mrglob(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmsg\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m 325\u001b[0m out\u001b[38;5;241m.\u001b[39mpackages\u001b[38;5;241m.\u001b[39mappend(\n\u001b[0;32m--> 326\u001b[0m \u001b[43mMessagePkgDef\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_folder\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 327\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mdir\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparent\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mroot_dir_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mdir\u001b[39;49m\n\u001b[1;32m 328\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 329\u001b[0m )\n\u001b[1;32m 330\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m out\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:316\u001b[0m, in \u001b[0;36mMessagePkgDef.from_msg_folder\u001b[0;34m(cls, package_name, msg_pkg_dir)\u001b[0m\n\u001b[1;32m 313\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mmessages\u001b[38;5;241m.\u001b[39mappend(MessageDef\u001b[38;5;241m.\u001b[39mfrom_msg_file(msg_file))\n\u001b[1;32m 314\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m msg_file\u001b[38;5;241m.\u001b[39mis_dir():\n\u001b[1;32m 315\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mpackages\u001b[38;5;241m.\u001b[39mappend(\n\u001b[0;32m--> 316\u001b[0m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_folder\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_file\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmsg_file\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 317\u001b[0m )\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg_pkg\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:313\u001b[0m, in \u001b[0;36mMessagePkgDef.from_msg_folder\u001b[0;34m(cls, package_name, msg_pkg_dir)\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m msg_file \u001b[38;5;129;01min\u001b[39;00m msg_pkg_dir\u001b[38;5;241m.\u001b[39miterdir():\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m msg_file\u001b[38;5;241m.\u001b[39msuffix \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.msg\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m--> 313\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mmessages\u001b[38;5;241m.\u001b[39mappend(\u001b[43mMessageDef\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_file\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_file\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 314\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m msg_file\u001b[38;5;241m.\u001b[39mis_dir():\n\u001b[1;32m 315\u001b[0m msg_pkg\u001b[38;5;241m.\u001b[39mpackages\u001b[38;5;241m.\u001b[39mappend(\n\u001b[1;32m 316\u001b[0m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39mfrom_msg_folder(msg_file\u001b[38;5;241m.\u001b[39mname, msg_file)\n\u001b[1;32m 317\u001b[0m )\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:110\u001b[0m, in \u001b[0;36mMessageDef.from_msg_file\u001b[0;34m(cls, msg_file)\u001b[0m\n\u001b[1;32m 108\u001b[0m msg_name \u001b[38;5;241m=\u001b[39m msg_file\u001b[38;5;241m.\u001b[39mstem\n\u001b[1;32m 109\u001b[0m message_string \u001b[38;5;241m=\u001b[39m msg_file\u001b[38;5;241m.\u001b[39mread_text()\n\u001b[0;32m--> 110\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_msg_string\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmessage_string\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:184\u001b[0m, in \u001b[0;36mMessageDef.from_msg_string\u001b[0;34m(cls, msg_name, message_string)\u001b[0m\n\u001b[1;32m 181\u001b[0m last_element \u001b[38;5;241m=\u001b[39m msg\u001b[38;5;241m.\u001b[39mfields[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n\u001b[1;32m 183\u001b[0m \u001b[38;5;66;03m# condense and rename enums\u001b[39;00m\n\u001b[0;32m--> 184\u001b[0m \u001b[43m_process_enums\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 186\u001b[0m \u001b[38;5;66;03m# condense comment lines, extract special annotations\u001b[39;00m\n\u001b[1;32m 187\u001b[0m _process_comments(msg)\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:227\u001b[0m, in \u001b[0;36m_process_enums\u001b[0;34m(msg)\u001b[0m\n\u001b[1;32m 225\u001b[0m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m=\u001b[39m enum\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m+\u001b[39m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues\n\u001b[1;32m 226\u001b[0m to_delete\u001b[38;5;241m.\u001b[39madd(i)\n\u001b[0;32m--> 227\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[1;32m 228\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mIndexError\u001b[39;00m:\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/capella_ros_tools/modules/messages/parser.py:227\u001b[0m, in \u001b[0;36m_process_enums\u001b[0;34m(msg)\u001b[0m\n\u001b[1;32m 225\u001b[0m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m=\u001b[39m enum\u001b[38;5;241m.\u001b[39mvalues \u001b[38;5;241m+\u001b[39m msg\u001b[38;5;241m.\u001b[39menums[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mvalues\n\u001b[1;32m 226\u001b[0m to_delete\u001b[38;5;241m.\u001b[39madd(i)\n\u001b[0;32m--> 227\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[1;32m 228\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mIndexError\u001b[39;00m:\n\u001b[1;32m 229\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1395\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1344\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", - "File \u001b[0;32m~/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "converter = msg2capella.Converter(msg_path, capella_path, layer, \"o\", False)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Traceback (most recent call last):\n", - " File \"_pydevd_bundle/pydevd_cython.pyx\", line 577, in _pydevd_bundle.pydevd_cython.PyDBFrame._handle_exception\n", - " File \"_pydevd_bundle/pydevd_cython.pyx\", line 312, in _pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\n", - " File \"/home/huyenngn/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py\", line 2070, in do_wait_suspend\n", - " keep_suspended = self._do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\n", - " File \"/home/huyenngn/Documents/capella-ros-tools/.venv/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py\", line 2106, in _do_wait_suspend\n", - " time.sleep(0.01)\n", - "KeyboardInterrupt\n" - ] - }, - { - "ename": "NameError", - "evalue": "name 'converter' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[3], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mconverter\u001b[49m\u001b[38;5;241m.\u001b[39mconvert()\n", - "\u001b[0;31mNameError\u001b[0m: name 'converter' is not defined" - ] - } - ], - "source": [ - "converter.convert()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/examples/Convert messages.ipynb.license b/docs/source/examples/Convert messages.ipynb.license deleted file mode 100644 index 6605644..0000000 --- a/docs/source/examples/Convert messages.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/examples/Parse messages.ipynb b/docs/source/examples/Parse messages.ipynb index bec90e7..8a15a66 100644 --- a/docs/source/examples/Parse messages.ipynb +++ b/docs/source/examples/Parse messages.ipynb @@ -29,7 +29,7 @@ "

                              CameraInfo

                              # Copyright DB InfraGO AG and contributors
                              # SPDX-License-Identifier: CC0-1.0
                              #
                              # This message defines meta information for a camera. It should be in a
                              # camera namespace on topic \"camera_info\" and accompanied by up to five
                              # image topics named:
                              #
                              # image_raw - raw data from the camera driver, possibly Bayer encoded
                              # image - monochrome, distorted
                              # image_color - color, distorted
                              # image_rect - monochrome, rectified
                              # image_rect_color - color, rectified
                              #
                              # The image_pipeline contains packages (image_proc, stereo_image_proc)
                              # for producing the four processed image topics from image_raw and
                              # camera_info. The meaning of the camera parameters are described in
                              # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
                              #
                              # The image_geometry package provides a user-friendly interface to
                              # common operations using this meta information. If you want to, e.g.,
                              # project a 3d point into image coordinates, we strongly recommend
                              # using image_geometry.
                              #
                              # If the camera is uncalibrated, the matrices D, K, R, P should be left
                              # zeroed out. In particular, clients may assume that K[0] == 0.0
                              # indicates an uncalibrated camera.
                              #######################################################################
                              # Image acquisition info #
                              #######################################################################
                              #######################################################################
                              # Calibration Parameters #
                              #######################################################################
                              # These are fixed during camera calibration. Their values will be the #
                              # same in all messages until the camera is recalibrated. Note that #
                              # self-calibrating systems may \"recalibrate\" frequently. #
                              # #
                              # The internal parameters can be used to warp a raw (distorted) image #
                              # to: #
                              # 1. An undistorted image (requires D and K) #
                              # 2. A rectified image (requires D, K, R) #
                              # The projection matrix P projects 3D points into the rectified image.#
                              #######################################################################
                              #######################################################################
                              # Operational Parameters #
                              #######################################################################
                              # These define the image region actually captured by the camera #
                              # driver. Although they affect the geometry of the output image, they #
                              # may be changed freely without recalibrating the camera. #
                              #######################################################################

                              Fields

                              1. std_msgs/Header header
                                # Time of image acquisition, camera coordinate frame ID
                                # Header timestamp should be acquisition time of image
                                # Header frame_id should be optical frame of camera
                                # origin of frame should be optical center of camera
                                # +x should point to the right in the image
                                # +y should point down in the image
                                # +z should point into the plane of the image
                              2. uint32 height
                                # The image dimensions with which the camera was calibrated.
                                # Normally this will be the full camera resolution in pixels.
                              3. uint32 width
                                # The image dimensions with which the camera was calibrated.
                                # Normally this will be the full camera resolution in pixels.
                              4. string distortion_model
                                # The distortion model used. Supported models are listed in
                                # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
                                # simple model of radial and tangential distortion - is sufficent.
                              5. float64[] d
                                # The distortion parameters, size depending on the distortion model.
                                # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
                              6. float64[9] k
                                # Intrinsic camera matrix for the raw (distorted) images.
                                # [fx 0 cx]
                                # K = [ 0 fy cy]
                                # [ 0 0 1]
                                # Projects 3D points in the camera coordinate frame to 2D pixel
                                # coordinates using the focal lengths (fx, fy) and principal point
                                # (cx, cy).
                                # 3x3 row-major matrix
                              7. float64[9] r
                                # Rectification matrix (stereo cameras only)
                                # A rotation matrix aligning the camera coordinate system to the ideal
                                # stereo image plane so that epipolar lines in both stereo images are
                                # parallel.
                                # 3x3 row-major matrix
                              8. float64[12] p
                                # Projection/camera matrix
                                # [fx' 0 cx' Tx]
                                # P = [ 0 fy' cy' Ty]
                                # [ 0 0 1 0]
                                # By convention, this matrix specifies the intrinsic (camera) matrix
                                # of the processed (rectified) image. That is, the left 3x3 portion
                                # is the normal camera intrinsic matrix for the rectified image.
                                # It projects 3D points in the camera coordinate frame to 2D pixel
                                # coordinates using the focal lengths (fx', fy') and principal point
                                # (cx', cy') - these may differ from the values in K.
                                # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
                                # also have R = the identity and P[1:3,1:3] = K.
                                # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
                                # position of the optical center of the second camera in the first
                                # camera's frame. We assume Tz = 0 so both cameras are in the same
                                # stereo image plane. The first camera always has Tx = Ty = 0. For
                                # the right (second) camera of a horizontal stereo pair, Ty = 0 and
                                # Tx = -fx' * B, where B is the baseline between the cameras.
                                # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
                                # the rectified image is given by:
                                # [u v w]' = P * [X Y Z 1]'
                                # x = u / w
                                # y = v / w
                                # This holds for both images of a stereo pair.
                                # 3x4 row-major matrix
                              9. uint32 binning_x
                                # Binning refers here to any camera setting which combines rectangular
                                # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                                # resolution of the output image to
                                # (width / binning_x) x (height / binning_y).
                                # The default values binning_x = binning_y = 0 is considered the same
                                # as binning_x = binning_y = 1 (no subsampling).
                              10. uint32 binning_y
                                # Binning refers here to any camera setting which combines rectangular
                                # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                                # resolution of the output image to
                                # (width / binning_x) x (height / binning_y).
                                # The default values binning_x = binning_y = 0 is considered the same
                                # as binning_x = binning_y = 1 (no subsampling).
                              11. RegionOfInterest roi
                                # Region of interest (subwindow of full camera resolution), given in
                                # full resolution (unbinned) image coordinates. A particular ROI
                                # always denotes the same window of pixels on the camera sensor,
                                # regardless of binning settings.
                                # The default setting of roi (all values 0) is considered the same as
                                # full resolution (roi.width = width, roi.height = height).

                              Enums

                                " ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -52,7 +52,7 @@ "

                                DiagnosticStatus

                                # Copyright DB InfraGO AG and contributors
                                # SPDX-License-Identifier: CC0-1.0
                                #
                                # This message holds the status of an individual component of the robot.

                                Fields

                                1. DiagnosticStatusLevel level
                                  # Level of operation enumerated above.
                                2. string name
                                  # A description of the test/component reporting.
                                3. string message
                                  # A description of the status.
                                4. string hardware_id
                                  # A hardware unique string.
                                5. KeyValue[] values
                                  # An array of values associated with the status.

                                Enums

                                1. DiagnosticStatusLevel
                                  # Possible levels of operations.
                                  • byte OK = 0
                                  • byte WARN = 1
                                  • byte ERROR = 2
                                  • byte STALE = 3
                                " ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -75,7 +75,7 @@ "

                                PointCloud2

                                # Copyright DB InfraGO AG and contributors
                                # SPDX-License-Identifier: CC0-1.0
                                #
                                # This message holds a collection of N-dimensional points, which may
                                # contain additional information such as normals, intensity, etc. The
                                # point data is stored as a binary blob, its layout described by the
                                # contents of the \"fields\" array.
                                #
                                # The point cloud data may be organized 2d (image-like) or 1d (unordered).
                                # Point clouds organized as 2d images may be produced by camera depth sensors
                                # such as stereo or time-of-flight.

                                Fields

                                1. std_msgs/Header header
                                  # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
                                2. uint32 height
                                  # 2D structure of the point cloud. If the cloud is unordered, height is
                                  # 1 and width is the length of the point cloud.
                                3. uint32 width
                                  # 2D structure of the point cloud. If the cloud is unordered, height is
                                  # 1 and width is the length of the point cloud.
                                4. PointField[] fields
                                  # Describes the channels and their layout in the binary data blob.
                                5. bool is_bigendian
                                  # Is this data bigendian?
                                6. uint32 point_step
                                  # Length of a point in bytes
                                7. uint32 row_step
                                  # Length of a row in bytes
                                8. uint8[] data
                                  # Actual point data, size is (row_step*height)
                                9. bool is_dense
                                  # True if there are no invalid points

                                Enums

                                  " ], "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.capella.license b/docs/source/examples/data/empty_project_52/empty_project_52.capella.license index 1efec84..02c8c23 100644 --- a/docs/source/examples/data/empty_project_52/empty_project_52.capella.license +++ b/docs/source/examples/data/empty_project_52/empty_project_52.capella.license @@ -1,6 +1,2 @@ -<<<<<<< HEAD -SPDX-FileCopyrightText: Copyright DB Netz AG and the capellambse contributors -======= Copyright DB InfraGO AG and contributors ->>>>>>> 40ef464 (feat: Make tree view draggable) SPDX-License-Identifier: Apache-2.0 diff --git a/docs/source/howtos/howtos.rst b/docs/source/howtos/howtos.rst index 4d5e4ad..0d82cd1 100644 --- a/docs/source/howtos/howtos.rst +++ b/docs/source/howtos/howtos.rst @@ -4,9 +4,9 @@ .. _howtos: -******* +******** Examples -******* +******** This section contains a collection of examples that demonstrate how to use the library. @@ -14,25 +14,25 @@ Using the CLI ============= Import ROS2 Messages: ------------------------- +--------------------- .. code-block:: bash $ python -m capella_ros_tools -i messages docs/source/examples/data/example_msgs -o capella docs/source/examples/data/empty_project_52 -l la --port 5000 --exists-action=k --no-deps Import ROS2 Messages from Git Repository: ------------------------- +----------------------------------------- .. code-block:: bash $ python -m capella_ros_tools -i messages git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss -o capella docs/source/examples/data/empty_project_52 -l la --port 5000 --exists-action=k -Export Capella Model ---------------------- +Export Capella Model (experimental): +------------------------------------ .. code-block:: bash $ python -m capella_ros_tools -i capella docs/source/examples/data/melody_model_60 -l la -o messages docs/source/examples/data/example_msgs --port 5000 -Export Capella Model from Git Repository: ------------------------- +Export Capella Model from Git Repository (experimental): +-------------------------------------------------------- .. code-block:: bash $ python -m capella_ros_tools -i capella git+https://github.com/DSD-DBS/coffee-machine -l la -o messages docs/source/examples/data/coffee_msgs --port 5000 diff --git a/docs/source/index.rst b/docs/source/index.rst index 52eade7..ccdd1eb 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -3,16 +3,13 @@ SPDX-License-Identifier: Apache-2.0 -***************************** +*********************************************** Welcome to the Capella ROS Tools documentation! -***************************** +*********************************************** Overview ======== -.. image:: https://img.shields.io/badge/license-Apache%202-blue.svg - :target: - .. image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: Black @@ -42,8 +39,8 @@ If you want a quickstart at how to use this tool, head right into the .. toctree:: + :maxdepth: 3 :caption: Examples - :titlesonly: howtos/howtos diff --git a/docs/source/usage/usage.rst b/docs/source/usage/usage.rst index 1c980f3..7568906 100644 --- a/docs/source/usage/usage.rst +++ b/docs/source/usage/usage.rst @@ -2,7 +2,7 @@ Copyright DB InfraGO AG and contributors SPDX-License-Identifier: Apache-2.0 -.. _howtos: +.. _usage: ***** Usage @@ -11,13 +11,25 @@ Usage This section describes how to use the Capella ROS Tools CLI. Import ROS2 Messages: ------------------------- +---------------------- .. code-block:: bash $ python -m capella_ros_tools -i messages -o capella -l --port= --exists-action= --no-deps -Export Capella Model ---------------------- +* "-i messages ", import ROS2 messages from +* "-o capella ", export to Capella model +* "-l ", use Capella model layer +* "--port=", start Capella model server at +* "--exists-action=", action to take if a Capella element already exists +* "--no-deps", do not import ROS2 dependencies (e.g. std_msgs) + +Export Capella Model (experimental): +------------------------------------ .. code-block:: bash $ python -m capella_ros_tools -i capella -l -o messages --port + +* "-i capella ", import Capella model from +* "-l ", use Capella model layer +* "-o messages ", export ROS2 messages to +* "--port=", start Capella model server at diff --git a/git-conventional-commits.json.license b/git-conventional-commits.json.license index 95e8b6e..b689e74 100644 --- a/git-conventional-commits.json.license +++ b/git-conventional-commits.json.license @@ -1,2 +1,2 @@ -Copyright DB Netz AG and contributors +Copyright DB InfraGO AG and contributors SPDX-License-Identifier: CC0-1.0 diff --git a/tests/test_rosidl2capella.py b/tests/test_rosidl2capella.py deleted file mode 100644 index 17bcb5d..0000000 --- a/tests/test_rosidl2capella.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright DB Netz AG and contributors -# SPDX-License-Identifier: Apache-2.0 - -import capella_ros_tools - - -def test_add_some_tests_here(): - ... From eded719fed85e268f91a7056cf5bd4aed1c919e7 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 16 Jan 2024 13:57:03 +0100 Subject: [PATCH 16/47] refactor: Rework CLI and adjust docs --- .gitignore | 3 + CONTRIBUTING.md | 70 - capella_ros_tools/__main__.py | 127 +- capella_ros_tools/modules/capella/__init__.py | 2 +- .../modules/capella/serializer.py | 42 +- capella_ros_tools/modules/messages/parser.py | 33 +- capella_ros_tools/scripts/capella2msg.py | 104 +- capella_ros_tools/scripts/msg2capella.py | 120 +- .../empty_project_52/empty_project_52.capella | 10770 +++++++++++++++- docs/source/howtos/howtos.rst | 8 +- docs/source/index.rst | 6 + docs/source/messages/messages.rst | 137 + docs/source/usage/usage.rst | 27 +- git-conventional-commits.json | 18 - git-conventional-commits.json.license | 2 - pyproject.toml | 7 +- 16 files changed, 11141 insertions(+), 335 deletions(-) create mode 100644 docs/source/messages/messages.rst delete mode 100644 git-conventional-commits.json delete mode 100644 git-conventional-commits.json.license diff --git a/.gitignore b/.gitignore index 6dddc2e..fe48896 100644 --- a/.gitignore +++ b/.gitignore @@ -137,6 +137,9 @@ venv.bak/ .spyderproject .spyproject +# VSCode settings +.vscode/ + # Rope project settings .ropeproject diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fa1edc1..84a7376 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,14 +32,10 @@ pytest We additionally recommend that you set up your editor / IDE as follows. -- Indent with 4 spaces per level of indentation - Indent with 4 spaces per level of indentation -- Maximum line length of 79 (add a ruler / thin line / highlighting / ...) - Maximum line length of 79 (add a ruler / thin line / highlighting / ...) -- _If you use Visual Studio Code_: Consider using a platform which supports - third-party language servers more easily, and continue with the next point. - _If you use Visual Studio Code_: Consider using a platform which supports third-party language servers more easily, and continue with the next point. @@ -55,40 +51,19 @@ We additionally recommend that you set up your editor / IDE as follows. } ``` - ```json - "[python]": { - "editor.codeActionsOnSave": { - "source.organizeImports": true - } - } - ``` - - Note that the Pylance language server is not recommended, as it occasionally - causes false-positive errors for perfectly valid code. Note that the Pylance language server is not recommended, as it occasionally causes false-positive errors for perfectly valid code. -- _If you do not use VSC_: Set up your editor to use the [python-lsp-server], - and make sure that the relevant plugins are installed. You can install - everything that's needed into the virtualenv with pip: - _If you do not use VSC_: Set up your editor to use the [python-lsp-server], and make sure that the relevant plugins are installed. You can install everything that's needed into the virtualenv with pip: - [python-lsp-server]: https://github.com/python-lsp/python-lsp-server [python-lsp-server]: https://github.com/python-lsp/python-lsp-server ```sh pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy ``` - ```sh - pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy - ``` - - This will provide as-you-type linting as well as automatic formatting on - save. Language server clients are available for a wide range of editors, from - Vim/Emacs to PyCharm/IDEA. This will provide as-you-type linting as well as automatic formatting on save. Language server clients are available for a wide range of editors, from Vim/Emacs to PyCharm/IDEA. @@ -99,47 +74,27 @@ We base our code style on a modified version of the [Google style guide for Python code](https://google.github.io/styleguide/pyguide.html). The key differences are: -- **Docstrings**: The [Numpy style guide] applies here. - **Docstrings**: The [Numpy style guide] applies here. [numpy style guide]: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard - [numpy style guide]: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard - When writing docstrings for functions, use the imperative style, as per - [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". When writing docstrings for functions, use the imperative style, as per [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". [pep-257]: https://peps.python.org/pep-0257/ - [pep-257]: https://peps.python.org/pep-0257/ -- **Overridden methods**: If the documentation did not change from the base - class (i.e. the base class' method's docstring still applies without - modification), do not add a short docstring á la "See base class". This lets - automated tools pick up the full base class docstring instead, and is - therefore more useful in IDEs etc. - **Overridden methods**: If the documentation did not change from the base class (i.e. the base class' method's docstring still applies without modification), do not add a short docstring á la "See base class". This lets automated tools pick up the full base class docstring instead, and is therefore more useful in IDEs etc. -- **Linting**: Use [pylint] for static code analysis, and [mypy] for static - type checking. - **Linting**: Use [pylint] for static code analysis, and [mypy] for static type checking. [pylint]: https://github.com/PyCQA/pylint [mypy]: https://github.com/python/mypy - [pylint]: https://github.com/PyCQA/pylint - [mypy]: https://github.com/python/mypy -- **Formatting**: Use [black] as code auto-formatter. The maximum line length - is 79, as per [PEP-8]. This setting should be automatically picked up from - the `pyproject.toml` file. The reason for the shorter line length is that it - avoids wrapping and overflows in side-by-side split views (e.g. diffs) if - there's also information displayed to the side of it (e.g. a tree view of the - modified files). - **Formatting**: Use [black] as code auto-formatter. The maximum line length is 79, as per [PEP-8]. This setting should be automatically picked up from the `pyproject.toml` file. The reason for the shorter line length is that it @@ -147,36 +102,22 @@ The key differences are: there's also information displayed to the side of it (e.g. a tree view of the modified files). - [black]: https://github.com/psf/black - [pep-8]: https://www.python.org/dev/peps/pep-0008/ [black]: https://github.com/psf/black [pep-8]: https://www.python.org/dev/peps/pep-0008/ - Be aware of the different line length of 72 for docstrings. We currently do - not have a satisfactory solution to automatically apply or enforce this. Be aware of the different line length of 72 for docstrings. We currently do not have a satisfactory solution to automatically apply or enforce this. - Note that, while you're encouraged to do so in general, it is not a hard - requirement to break up long strings into smaller parts. Additionally, never - break up strings that are presented to the user in e.g. log messages, as that - makes it significantly harder to grep for them. Note that, while you're encouraged to do so in general, it is not a hard requirement to break up long strings into smaller parts. Additionally, never break up strings that are presented to the user in e.g. log messages, as that makes it significantly harder to grep for them. - Use [isort] for automatic sorting of imports. Its settings should - automatically be picked up from the `pyproject.toml` file as well. Use [isort] for automatic sorting of imports. Its settings should automatically be picked up from the `pyproject.toml` file as well. [isort]: https://github.com/PyCQA/isort - [isort]: https://github.com/PyCQA/isort -- **Typing**: We do not make an exception for `typing` imports. Instead of - writing `from typing import SomeName`, use `import typing as t` and access - typing related classes like `t.TypedDict`. - **Typing**: We do not make an exception for `typing` imports. Instead of writing `from typing import SomeName`, use `import typing as t` and access typing related classes like `t.TypedDict`. @@ -194,22 +135,13 @@ The key differences are: `t.Optional[...]` and always explicitly annotate where `None` is possible. [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ - [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ -- **Python style rules**: For conflicting parts, the [Black code style] wins. - If you have set up black correctly, you don't need to worry about this though - :) - **Python style rules**: For conflicting parts, the [Black code style] wins. If you have set up black correctly, you don't need to worry about this though :) [black code style]: https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html - [black code style]: https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html -- When working with `dict`s, consider using `t.TypedDict` instead of a more - generic `dict[str, float|int|str]`-like annotation where possible, as the - latter is much less precise (often requiring additional `assert`s or - `isinstance` checks to pass) and can grow unwieldy very quickly. - When working with `dict`s, consider using `t.TypedDict` instead of a more generic `dict[str, float|int|str]`-like annotation where possible, as the latter is much less precise (often requiring additional `assert`s or @@ -217,5 +149,3 @@ The key differences are: - Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses a more convenient `class ...:` syntax and also supports type annotations. -- Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses - a more convenient `class ...:` syntax and also supports type annotations. diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index e328959..be47277 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -14,18 +14,40 @@ from capella_ros_tools.snapshot import app -@click.command() +@click.group(context_settings={"default_map": {}}) @click.version_option( version=capella_ros_tools.__version__, prog_name="capella-ros-tools", message="%(prog)s %(version)s", ) +def cli(): + """CLI for capella-ros-tools.""" + + +@cli.command("import") +@click.argument( + "msg_path", type=str, required=True, help="Path to ROS messages." +) +@click.argument( + "capella_path", + type=click.Path(path_type=Path), + required=True, + help="Path to Capella model.", +) +@click.argument( + "layer", + type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), + required=True, + help="Layer of Capella data package.", +) @click.option( "--exists-action", "action", - type=click.Choice(["k", "o", "a", "c"], case_sensitive=False), - default="c" if sys.stdin.isatty() else "a", - help="Default action when an element already exists: (c)heck, (k)eep, (o)verwrite, (a)bort.", + type=click.Choice( + ["skip", "replace", "abort", "ask"], case_sensitive=False + ), + default="ask" if sys.stdin.isatty() else "abort", + help="Default action when an element already exists.", ) @click.option( "--no-deps", @@ -34,71 +56,20 @@ help="Don’t install message dependencies.", ) @click.option("--port", type=int, help="Port for HTML display.") -@click.option( - "-i", - "in_", - nargs=2, - type=(click.Choice(["capella", "messages"]), str), - required=True, - help="Input file type and path.", -) -@click.option( - "-o", - "out", - nargs=2, - type=( - click.Choice(["capella", "messages"]), - click.Path(path_type=Path), - ), - required=True, - help="Output file type and path.", -) -@click.option( - "-l", - "layer", - type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=True), - required=True, - help="Layer to use.", -) -def cli( - in_: tuple[str, str], - out: tuple[str, str], +def import_msg( + msg_path: t.Any, + capella_path: Path, layer: str, action: str, - port: int, no_deps: bool, + port: int, ): - """Convert between Capella and ROS message definitions.""" - input_type, input_path = in_ - output_type, output = out - - if input_type == output_type: - raise click.UsageError( - "Input and output must be different file types." - ) - if "capella" not in (input_type, output_type): - raise click.UsageError( - "Either input or output must be a capella file." - ) - if "messages" not in (input_type, output_type): - raise click.UsageError( - "Either input or output must be a messages file." - ) - - input: t.Any = Path(input_path) - - if not input.exists() and input_type == "messages": - input = capellambse.filehandler.get_filehandler(input_path).rootdir - elif not input.exists() and input_type == "capella": - input = capellambse.filehandler.get_filehandler(input_path) + """Import ROS messages into Capella data package.""" - msg_path, capella_path, convert_class = ( - (input, output, msg2capella.Converter) - if input_type == "messages" - else (output, input, capella2msg.Converter) - ) + if not Path(msg_path).exists(): + msg_path = capellambse.filehandler.get_filehandler(msg_path).rootdir - converter: t.Any = convert_class( + converter: t.Any = msg2capella.Converter( msg_path, capella_path, layer, action, no_deps ) converter.convert() @@ -107,5 +78,35 @@ def cli( app.start(converter.model.model, layer, port) +@cli.command("export") +@click.argument("capella_path", type=str, required=True) +@click.argument( + "layer", + type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), + required=True, +) +@click.argument("msg_path", type=click.Path(path_type=Path), required=True) +@click.option( + "--exists-action", + "action", + type=click.Choice( + ["keep", "overwrite", "abort", "ask"], case_sensitive=False + ), + default="ask" if sys.stdin.isatty() else "abort", + help="Default action when an element already exists.", +) +def export_capella( + capella_path: t.Any, + msg_path: Path, + layer: str, +): + """Export Capella data package to ROS messages.""" + if not Path(capella_path).exists(): + capella_path = capellambse.filehandler.get_filehandler(capella_path) + + converter: t.Any = capella2msg.Converter(capella_path, msg_path, layer) + converter.convert() + + if __name__ == "__main__": cli() diff --git a/capella_ros_tools/modules/capella/__init__.py b/capella_ros_tools/modules/capella/__init__.py index 2449cb0..1337ae5 100644 --- a/capella_ros_tools/modules/capella/__init__.py +++ b/capella_ros_tools/modules/capella/__init__.py @@ -48,7 +48,7 @@ class BaseCapellaModel: def __init__( self, - path_to_capella_model: str, + path_to_capella_model: t.Any, layer: str, ) -> None: self.model = capellambse.MelodyModel(path_to_capella_model) diff --git a/capella_ros_tools/modules/capella/serializer.py b/capella_ros_tools/modules/capella/serializer.py index ff94cc2..46d4b6c 100644 --- a/capella_ros_tools/modules/capella/serializer.py +++ b/capella_ros_tools/modules/capella/serializer.py @@ -65,12 +65,23 @@ def delete_classes(self, classes: list, package: t.Any = None) -> None: except ValueError: pass - def _find_type(self, type_name: str, package: t.Any) -> t.Any: + def _find_or_create_type(self, type_name: str, package: t.Any) -> t.Any: """Find type in Capella model.""" try: return self.predef_types.by_name(type_name) except KeyError: - self.create_basic_types([type_name], package) + pass + try: + return package.datatypes.by_name(type_name) + except KeyError: + type_name_lower = type_name.lower() + if "char" in type_name_lower or "string" in type_name_lower: + type = "StringType" + elif "bool" in type_name_lower or "boolean" in type_name_lower: + type = "BooleanType" + else: + type = "NumericType" + package.datatypes.create(type, name=type_name) return package.datatypes.by_name(type_name) def create_enums( @@ -102,7 +113,7 @@ def create_enums( property.value = capellambse.new_object( "LiteralNumericValue", value=prop.value, - type=self._find_type(prop.type, package), + type=self._find_or_create_type(prop.type, package), ) logger.info("Created enum %s.", enum.name) @@ -120,27 +131,6 @@ def delete_enums(self, enums: list, package: t.Any = None) -> None: except ValueError: pass - def create_basic_types( - self, basic_types: list[str], package: t.Any = None - ) -> list: - """Create basic types in Capella model.""" - if package is None: - package = self.data - - overlap = [] - for basic_type in basic_types: - try: - overlap.append(package.datatypes.by_name(basic_type)) - except KeyError: - if "char" in basic_type or "string" in basic_type: - type = "StringType" - elif "bool" in basic_type or "boolean" in basic_type: - type = "BooleanType" - else: - type = "NumericType" - package.datatypes.create(type, name=basic_type) - return overlap - def create_properties(self, cls: ClassDef, package: t.Any): """Create properties for class in Capella model.""" if package is None: @@ -191,7 +181,9 @@ def create_properties(self, cls: ClassDef, package: t.Any): "Enumeration", below=type_package ).by_name(prop.type_name) except KeyError: - property_type = self._find_type(prop.type_name, package) + property_type = self._find_or_create_type( + prop.type_name, package + ) attribute = self._create_composition( superclass, prop, property_type diff --git a/capella_ros_tools/modules/messages/parser.py b/capella_ros_tools/modules/messages/parser.py index c71136a..01baea0 100644 --- a/capella_ros_tools/modules/messages/parser.py +++ b/capella_ros_tools/modules/messages/parser.py @@ -41,7 +41,7 @@ VALID_MESSAGE_NAME_PATTERN = "[A-Z][A-Za-z0-9]*" -VALID_CONSTANT_NAME_PATTERN = "[A-Z][A-Z0-9_]*[A-Z0-9]*" +VALID_CONSTANT_NAME_PATTERN = "[A-Z](?:[A-Z0-9_]*[A-Z0-9])?" VALID_REF_COMMENT_PATTERN = re.compile( r"cf\.\s*" rf"({VALID_MESSAGE_NAME_PATTERN})" @@ -248,23 +248,20 @@ def _process_enums(msg): msg.enums.remove(enum) for enum in msg.enums: - match_name = [ - i - for i, field in enumerate(msg.fields) - if _get_enum_identifier(field.name) == enum.name - ] - match_type = [ - i - for i, field in enumerate(msg.fields) - if field.type.name == enum.values[0].type.name - ] - if match_name: - msg.fields[match_name[0]].type.name = enum.name - elif match_type: - field = msg.fields[match_type[0]] - field.type.name = msg.name + _get_enum_identifier(field.name) - enum.name = field.type.name - elif not enum.name or len(msg.enums) == 1: + for field in msg.fields: + if enum.name == _get_enum_identifier(field.name): + # enum name is the same as the field name + field.type.name = enum.name + return + + for field in msg.fields: + if field.type.name == enum.values[0].type.name: + # enum type is the same as the field type + field.type.name = msg.name + _get_enum_identifier(field.name) + enum.name = field.type.name + return + + if not enum.name or len(msg.enums) == 1: enum.name = msg.name + "Type" if msg.fields else msg.name diff --git a/capella_ros_tools/scripts/capella2msg.py b/capella_ros_tools/scripts/capella2msg.py index 5da434e..8406719 100644 --- a/capella_ros_tools/scripts/capella2msg.py +++ b/capella_ros_tools/scripts/capella2msg.py @@ -19,16 +19,17 @@ "Boolean": "bool", "Byte": "byte", "Char": "char", - "Short": "int8", - "UnsignedShort": "uint8", - "Integer": "int16", - "UnsignedInteger": "uint16", - "Long": "int32", - "UnsignedLong": "uint32", - "LongLong": "int64", - "UnsignedLongLong": "uint64", + "Short": "int16", + "UnsignedShort": "uint16", + "Integer": "int32", + "UnsignedInteger": "uint32", + "Long": "int64", + "UnsignedLong": "uint64", + "LongLong": "int128", + "UnsignedLongLong": "uint128", "Float": "float32", "Double": "float64", + "LongDouble": "float128", "String": "string", } @@ -38,74 +39,55 @@ class Converter: def __init__( self, - msg_path: t.Any, capella_path: t.Any, + msg_path: t.Any, layer: str, - action: str, - no_deps: bool, ) -> None: self.msg_path = msg_path self.msgs = MessagePkgDef(msg_path.stem, [], []) self.model = CapellaModel(capella_path, layer) - self.action = action - self.no_deps = no_deps def _add_package(self, current_root: t.Any) -> MessagePkgDef: current_pkg_def = MessagePkgDef(current_root.name, [], []) for cls in self.model.get_classes(current_root): - current_pkg_def.messages.append( - MessageDef( - cls.name, - [ - FieldDef( - BaseTypeDef( - CAPELLA_TYPE_TO_MSG[prop.type_name] - if prop.type_name in CAPELLA_TYPE_TO_MSG - else prop.type_name, - None - if prop.max_card == "1" - else prop.max_card, - None - if prop.type_pkg_name == current_pkg_def.name - else prop.type_pkg_name, - ), - prop.name, - prop.description.split("\n"), - ) - for prop in cls.properties - ], - [], - cls.description.split("\n"), + fields = [] + for prop in cls.properties: + bt_name = CAPELLA_TYPE_TO_MSG.get( + prop.type_name, prop.type_name + ) + bt_size = None if prop.max_card == "1" else prop.max_card + if prop.type_pkg_name != current_pkg_def.name: + bt_pkg = prop.type_pkg_name + else: + bt_pkg = None + fields.append( + FieldDef( + BaseTypeDef(bt_name, bt_size, bt_pkg), + prop.name, + prop.description.split("\n"), + ) ) - ) + annotations = cls.description.split("\n") + msg_def = MessageDef(cls.name, fields, [], annotations) + current_pkg_def.messages.append(msg_def) for enum in self.model.get_enums(current_root): - current_pkg_def.messages.append( - MessageDef( - enum.name, - [], - [ - EnumDef( - enum.name, - [ - ConstantDef( - BaseTypeDef( - CAPELLA_TYPE_TO_MSG.get(value.type) - or "uint8" - ), - value.name, - value.value or str(i), - value.description.split("\n"), - ) - for i, value in enumerate(enum.values) - ], - [], - ) - ], - enum.description.split("\n"), + values = [] + for i, value in enumerate(enum.values): + bt_name = CAPELLA_TYPE_TO_MSG.get(value.type, "uint8") + values.append( + ConstantDef( + BaseTypeDef(bt_name), + value.name, + value.value or str(i), + value.description.split("\n"), + ) ) - ) + enum_def = EnumDef(enum.name, values, []) + annotations = enum.description.split("\n") + msg_def = MessageDef(enum.name, [], [enum_def], annotations) + current_pkg_def.messages.append(msg_def) for pkg_name in self.model.get_packages(current_root): new_root = current_root.packages.by_name(pkg_name) diff --git a/capella_ros_tools/scripts/msg2capella.py b/capella_ros_tools/scripts/msg2capella.py index 5676ed1..7792b01 100644 --- a/capella_ros_tools/scripts/msg2capella.py +++ b/capella_ros_tools/scripts/msg2capella.py @@ -26,18 +26,7 @@ "bool": "Boolean", "byte": "Byte", "char": "Char", - "int8": "Short", - "uint8": "UnsignedShort", - "int16": "Integer", - "uint16": "UnsignedInteger", - "int32": "Long", - "uint32": "UnsignedLong", - "int64": "LongLong", - "uint64": "UnsignedLongLong", - "float32": "Float", - "float64": "Double", "string": "String", - "wstring": "Char", } @@ -58,20 +47,20 @@ def __init__( self.no_deps = no_deps def _resolve_overlap(self, overlap, deletion_func, current_root): - if not overlap or self.action == "k": + if not overlap or self.action == "skip": return - if self.action == "a": + if self.action == "abort": click.echo( f"{len(overlap)} elements already exist." - " Use --exists-action=o to overwrite." + " Use --exists-action=replace to replace." ) raise click.Abort() - elif self.action == "o": + elif self.action == "replace": deletion_func(overlap, current_root) - elif self.action == "c": + elif self.action == "ask": for i, cls in enumerate(overlap): confirm = click.prompt( - f"{cls.name} already exists. " "Do you want to overwrite?", + f"{cls.name} already exists. Overwrite? [y]es / [Y]es to all / [n]o / [N]o to all", type=click.Choice( ["y", "Y", "n", "N"], case_sensitive=True, @@ -95,33 +84,46 @@ def _add_objects( packages = [p.name for p in current_pkg_def.packages] self.model.create_packages(packages, current_root) - enums = [ - EnumDef( - e.name, - [ - EnumValue( - MSG_TYPE_TO_CAPELLA.get(v.type.name) or v.type.name, - v.name, - v.value, - "\n".join(v.annotations), + classes = [] + enums = [] + for msg in current_pkg_def.messages: + if msg.fields: + class_description = "\n".join(msg.annotations) + class_def = ClassDef( + msg.name, + [], + class_description, + ) + classes.append(class_def) + + for enum in msg.enums: + if not enum.values: + continue + values = [] + for value in enum.values: + value_type = MSG_TYPE_TO_CAPELLA.get( + value.type.name, value.type.name ) - for v in e.values - ], - "\n".join(e.annotations), - ) - for msg in current_pkg_def.messages - for e in msg.enums - if e.values - ] + value_description = "\n".join(value.annotations) + value_def = EnumValue( + value_type, + value.name, + value.value, + value_description, + ) + values.append(value_def) + enum_description = "\n".join(enum.annotations) + enum_def = EnumDef( + enum.name, + values, + enum_description, + ) + enums.append(enum_def) + overlap = self.model.create_enums(enums, current_root) self._resolve_overlap(overlap, self.model.delete_enums, current_root) self.model.create_enums(enums, current_root) - classes = [ - ClassDef(c.name, [], "\n".join(c.annotations)) - for c in current_pkg_def.messages - if c.fields - ] overlap = self.model.create_classes(classes, current_root) self._resolve_overlap(overlap, self.model.delete_classes, current_root) self.model.create_classes(classes, current_root) @@ -134,25 +136,29 @@ def _add_relations(self, current_pkg_def, current_root): for msg in current_pkg_def.messages: if not msg.fields: continue - self.model.create_properties( - ClassDef( - name=msg.name, - properties=[ - ClassProperty( - MSG_TYPE_TO_CAPELLA.get(f.type.name) - or f.type.name, - f.type.pkg_name, - f.name, - min_card="0" if f.type.array_size else "1", - max_card=f.type.array_size or "1", - description="\n".join(f.annotations), - ) - for f in msg.fields - ], - description="\n".join(msg.annotations), - ), - current_root, + properties = [] + for field in msg.fields: + field_type = MSG_TYPE_TO_CAPELLA.get( + field.type.name, field.type.name + ) + field_min = "0" if field.type.array_size else "1" + field_max = field.type.array_size or "1" + field_description = "\n".join(field.annotations) + property_def = ClassProperty( + field_type, + field.type.pkg_name, + field.name, + field_min, + field_max, + field_description, + ) + properties.append(property_def) + class_def = ClassDef( + msg.name, + properties, + "", ) + self.model.create_properties(class_def, current_root) for new_pkg_def in current_pkg_def.packages: new_root = current_root.packages.by_name(new_pkg_def.name) diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.capella b/docs/source/examples/data/empty_project_52/empty_project_52.capella index 836b9e3..1db3bd1 100644 --- a/docs/source/examples/data/empty_project_52/empty_project_52.capella +++ b/docs/source/examples/data/empty_project_52/empty_project_52.capella @@ -201,7 +201,10775 @@ + id="d755d151-7b1f-4df3-b4b8-329953b177dc" name="Data"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -o capella -l --port= --exists-action= --no-deps - -* "-i messages ", import ROS2 messages from -* "-o capella ", export to Capella model -* "-l ", use Capella model layer -* "--port=", start Capella model server at -* "--exists-action=", action to take if a Capella element already exists + $ python -m capella_ros_tools import --port= --exists-action= --no-deps + +* "", import ROS2 messages from +* "", export to Capella model +* "", use Capella model layer +* "--port=", start Capella model server at (optional) +* "--exists-action=", action to take if a Capella element already exists (optional) + * "skip", skip elements + * "replace", replace elements + * "abort", abort import + * "ask", ask the user (default) * "--no-deps", do not import ROS2 dependencies (e.g. std_msgs) Export Capella Model (experimental): ------------------------------------ .. code-block:: bash - $ python -m capella_ros_tools -i capella -l -o messages --port + $ python -m capella_ros_tools export -* "-i capella ", import Capella model from -* "-l ", use Capella model layer -* "-o messages ", export ROS2 messages to -* "--port=", start Capella model server at +* "", import Capella model from +* "", use Capella model layer +* "", export ROS2 messages to diff --git a/git-conventional-commits.json b/git-conventional-commits.json deleted file mode 100644 index 525cbf0..0000000 --- a/git-conventional-commits.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "convention" : { - "commitTypes": [ - "build", - "chore", - "ci", - "docs", - "feat", - "fix", - "merge", - "perf", - "refactor", - "revert", - "test" - ], - "commitScopes": [] - } -} diff --git a/git-conventional-commits.json.license b/git-conventional-commits.json.license deleted file mode 100644 index b689e74..0000000 --- a/git-conventional-commits.json.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB InfraGO AG and contributors -SPDX-License-Identifier: CC0-1.0 diff --git a/pyproject.toml b/pyproject.toml index a93c430..3e6909a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ classifiers = [ dependencies = [ "click", "capellambse @ git+https://github.com/DSD-DBS/py-capellambse.git@more-filepath-props", + "capellambse_context_diagrams @ git+https://github.com/DSD-DBS/capellambse-context-diagrams.git@add-context-to-tree", "fastapi", "uvicorn[standard]", ] @@ -44,10 +45,10 @@ docs = [ "ipython", "nbsphinx", "sphinx-copybutton", - "tomli; python_version<'3.11'", + "tomli", "jinja2", - "pyyaml>=6.0", - "sphinx!=7.2.0,!=7.2.1,!=7.2.2", + "pyyaml", + "sphinx", "sphinx-argparse-cli", ] From 26093fde468ae9b701b497a70f3f9758a8d5547e Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 17 Jan 2024 23:51:50 +0100 Subject: [PATCH 17/47] docs: Update Message Layout docs --- capella_ros_tools/__main__.py | 21 +- capella_ros_tools/modules/messages/parser.py | 4 +- capella_ros_tools/scripts/capella2msg.py | 2 +- docs/source/examples/Export capella.ipynb | 2 +- docs/source/examples/Import messages.ipynb | 950 ++++++++++++------- docs/source/howtos/howtos.rst | 2 +- docs/source/messages/messages.rst | 97 +- docs/source/usage/usage.rst | 28 +- 8 files changed, 703 insertions(+), 403 deletions(-) diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index be47277..a3f0a81 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -14,7 +14,7 @@ from capella_ros_tools.snapshot import app -@click.group(context_settings={"default_map": {}}) +@click.group() @click.version_option( version=capella_ros_tools.__version__, prog_name="capella-ros-tools", @@ -25,20 +25,16 @@ def cli(): @cli.command("import") -@click.argument( - "msg_path", type=str, required=True, help="Path to ROS messages." -) +@click.argument("msg_path", type=str, required=True) @click.argument( "capella_path", type=click.Path(path_type=Path), required=True, - help="Path to Capella model.", ) @click.argument( "layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, - help="Layer of Capella data package.", ) @click.option( "--exists-action", @@ -86,25 +82,16 @@ def import_msg( required=True, ) @click.argument("msg_path", type=click.Path(path_type=Path), required=True) -@click.option( - "--exists-action", - "action", - type=click.Choice( - ["keep", "overwrite", "abort", "ask"], case_sensitive=False - ), - default="ask" if sys.stdin.isatty() else "abort", - help="Default action when an element already exists.", -) def export_capella( capella_path: t.Any, - msg_path: Path, layer: str, + msg_path: Path, ): """Export Capella data package to ROS messages.""" if not Path(capella_path).exists(): capella_path = capellambse.filehandler.get_filehandler(capella_path) - converter: t.Any = capella2msg.Converter(capella_path, msg_path, layer) + converter: t.Any = capella2msg.Converter(msg_path, capella_path, layer) converter.convert() diff --git a/capella_ros_tools/modules/messages/parser.py b/capella_ros_tools/modules/messages/parser.py index 01baea0..12764ae 100644 --- a/capella_ros_tools/modules/messages/parser.py +++ b/capella_ros_tools/modules/messages/parser.py @@ -163,11 +163,12 @@ def from_msg_string(cls, msg_name: str, message_string: str): # line contains a constant value = value.lstrip() if not isinstance(last_element, ConstantDef): - msg.enums.append(EnumDef("", [], current_comments)) + msg.enums.append(EnumDef("", [], [])) msg.enums[-1].values.append( ConstantDef(TypeDef(type_string), name, value, [comment]) ) last_element = msg.enums[-1].values[-1] + msg.enums[-1].annotations += current_comments else: # line contains a field msg.fields.append( @@ -254,7 +255,6 @@ def _process_enums(msg): field.type.name = enum.name return - for field in msg.fields: if field.type.name == enum.values[0].type.name: # enum type is the same as the field type field.type.name = msg.name + _get_enum_identifier(field.name) diff --git a/capella_ros_tools/scripts/capella2msg.py b/capella_ros_tools/scripts/capella2msg.py index 8406719..6cfeed4 100644 --- a/capella_ros_tools/scripts/capella2msg.py +++ b/capella_ros_tools/scripts/capella2msg.py @@ -39,8 +39,8 @@ class Converter: def __init__( self, - capella_path: t.Any, msg_path: t.Any, + capella_path: t.Any, layer: str, ) -> None: self.msg_path = msg_path diff --git a/docs/source/examples/Export capella.ipynb b/docs/source/examples/Export capella.ipynb index 7341e3f..fce0818 100644 --- a/docs/source/examples/Export capella.ipynb +++ b/docs/source/examples/Export capella.ipynb @@ -43,7 +43,7 @@ } ], "source": [ - "converter = capella2msg.Converter(msg_path, capella_path, layer, \"o\", False)" + "converter = capella2msg.Converter(msg_path, capella_path, layer)" ] }, { diff --git a/docs/source/examples/Import messages.ipynb b/docs/source/examples/Import messages.ipynb index 163435a..a23069c 100644 --- a/docs/source/examples/Import messages.ipynb +++ b/docs/source/examples/Import messages.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -31,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -44,73 +44,42 @@ } ], "source": [ - "converter = msg2capella.Converter(msg_path, capella_path, layer, \"o\", False)" + "converter = msg2capella.Converter(msg_path, capella_path, layer, \"replace\", False)" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "INFO:capella_ros_tools.modules.capella.serializer:Created package actionlib_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package diagnostic_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package geometry_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package nav_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package sensor_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package shape_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package std_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package stereo_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package trajectory_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package visualization_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class GoalID already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum DiagnosticStatusLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum DiagnosticStatusLevel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatusLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum DiagnosticStatusLevel.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticArray already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticStatus already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Accel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Inertia.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InertiaStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Point.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Point32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Polygon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PolygonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose2D.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Quaternion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class QuaternionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Transform.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransformStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Twist.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3Stamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Wrench.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class WrenchStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Accel already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class AccelStamped already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovariance already exists.\n", @@ -140,25 +109,79 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3Stamped already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Wrench already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class WrenchStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GridCells.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMetaData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class OccupancyGrid.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Path.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Accel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Inertia.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InertiaStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Polygon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PolygonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose2D.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Quaternion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted QuaternionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transform.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransformStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Twist.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3Stamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Wrench.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted WrenchStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Accel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Inertia.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InertiaStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Point.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Point32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Polygon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PolygonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose2D.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Quaternion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class QuaternionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Transform.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransformStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Twist.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovarianceStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3Stamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Wrench.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class WrenchStamped.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class GridCells already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MapMetaData already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class OccupancyGrid already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Path already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyHealth.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyTechnology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Type.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum NavSatFixPositionCovarianceType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Status.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Service.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PointFieldDatatype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum RangeRadiationType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GridCells.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMetaData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted OccupancyGrid.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Path.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GridCells.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMetaData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class OccupancyGrid.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Path.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyStatus already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyHealth already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyTechnology already exists.\n", @@ -168,33 +191,24 @@ "INFO:capella_ros_tools.modules.capella.serializer:Enum Service already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum PointFieldDatatype already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum RangeRadiationType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class BatteryState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CameraInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ChannelFloat32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CompressedImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FluidPressure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Illuminance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Image.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Imu.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Joy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedbackArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserEcho.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MagneticField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiEchoLaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatFix.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud2.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Range.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RegionOfInterest.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RelativeHumidity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Temperature.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TimeReference.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyHealth.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyTechnology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Type.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFixPositionCovarianceType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Status.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Service.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointFieldDatatype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RangeRadiationType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyHealth.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyTechnology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Type.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum NavSatFixPositionCovarianceType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Status.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Service.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PointFieldDatatype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum RangeRadiationType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class BatteryState already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class CameraInfo already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ChannelFloat32 already exists.\n", @@ -222,53 +236,87 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class RelativeHumidity already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Temperature already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class TimeReference already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SolidPrimitiveType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Box.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrismHeight.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted BatteryState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CameraInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ChannelFloat32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CompressedImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FluidPressure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Illuminance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Image.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Imu.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Joy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedbackArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserEcho.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MagneticField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiEchoLaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFix.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud2.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Range.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RegionOfInterest.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RelativeHumidity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Temperature.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TimeReference.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class BatteryState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CameraInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ChannelFloat32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CompressedImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FluidPressure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Illuminance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Image.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Imu.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Joy.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedbackArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserEcho.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MagneticField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointState.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiEchoLaserScan.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatFix.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud2.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class PointField.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Range.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RegionOfInterest.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RelativeHumidity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Temperature.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TimeReference.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum SolidPrimitiveType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum Box already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum Cylinder already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum Cone already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum PrismHeight already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Mesh.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshTriangle.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Plane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SolidPrimitive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitiveType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Box.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrismHeight.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum SolidPrimitiveType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Box.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrismHeight.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Mesh already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MeshTriangle already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Plane already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class SolidPrimitive already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Bool.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Byte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ByteMultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Char.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ColorRGBA.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Header.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayDimension.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayLayout.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class String.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mesh.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshTriangle.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Plane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Mesh.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshTriangle.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Plane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SolidPrimitive.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Bool already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Byte already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ByteMultiArray already exists.\n", @@ -298,23 +346,79 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64MultiArray already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8 already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DisparityImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Bool.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Byte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ByteMultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Char.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ColorRGBA.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Header.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayDimension.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayLayout.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted String.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Bool.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Byte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ByteMultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Char.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ColorRGBA.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Header.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayDimension.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayLayout.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class String.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64MultiArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8MultiArray.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class DisparityImage already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DisparityImage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class DisparityImage.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectory already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectoryPoint already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectory already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectoryPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ImageMarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerControlOrientationMode.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerFeedbackEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Mouse.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerUpdateType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MenuEntryCommandType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectoryPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectory.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectoryPoint.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum ImageMarkerId already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerControlOrientationMode already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerFeedbackEventType already exists.\n", @@ -322,18 +426,20 @@ "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerUpdateType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum MarkerId already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum MenuEntryCommandType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ImageMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerControl.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerInit.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerPose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerUpdate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Marker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MarkerArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MenuEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshFile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UVCoordinate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControlOrientationMode.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedbackEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mouse.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdateType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntryCommandType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ImageMarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerControlOrientationMode.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerFeedbackEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Mouse.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerUpdateType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MarkerId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum MenuEntryCommandType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ImageMarker already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarker already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerControl already exists.\n", @@ -346,51 +452,57 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class MenuEntry already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MeshFile already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class UVCoordinate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package action_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package builtin_interfaces.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package lifecycle_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package rcl_interfaces.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package rosgraph_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package service_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package statistics_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package test_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package type_description_interfaces.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceling.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceled.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAborted.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControl.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerInit.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerPose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Marker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshFile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UVCoordinate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ImageMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerControl.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerFeedback.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerInit.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerPose.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerUpdate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Marker.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MarkerArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MenuEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshFile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UVCoordinate.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceling already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceled already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusAborted already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceling.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceled.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusAborted.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceling.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceled.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAborted.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class GoalInfo already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Duration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Time.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Duration already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Time already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StateId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateActive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateConfiguring.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateShuttingdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateDeactivating.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateErrorprocessing.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionUnconfiguredShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActiveShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnConfigure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnCleanup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnDeactivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackFailure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Duration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Time.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Duration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Time.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum StateId already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateActive already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateConfiguring already exists.\n", @@ -409,36 +521,69 @@ "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnError already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackFailure already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackError already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class State.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Transition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StateId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateActive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateConfiguring.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateShuttingdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateDeactivating.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateErrorprocessing.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionUnconfiguredShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActiveShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnConfigure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnCleanup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnDeactivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackFailure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StateId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateActive.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateConfiguring.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateShuttingdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateDeactivating.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateErrorprocessing.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionUnconfiguredShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActiveShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnConfigure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnCleanup.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnActivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnDeactivate.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnShutdown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnError.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackFailure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackError.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class State already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Transition already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionDescription already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionEvent already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LogLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Error.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Fatal.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LoggerLevelType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ParameterType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted State.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class State.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Transition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionEvent.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum LogLevel already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum Error already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum Fatal already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum LoggerLevelType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum ParameterType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FloatingPointRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IntegerRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ListParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Log.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LoggerLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterDescriptor.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEventDescriptors.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SetLoggerLevelsResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SetParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LogLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Error.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Fatal.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevelType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LogLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Error.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum Fatal.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum LoggerLevelType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ParameterType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class FloatingPointRange already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class IntegerRange already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ListParametersResult already exists.\n", @@ -451,58 +596,99 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterValue already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class SetLoggerLevelsResult already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class SetParametersResult already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Clock.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FloatingPointRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IntegerRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ListParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Log.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterDescriptor.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEventDescriptors.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetLoggerLevelsResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FloatingPointRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IntegerRange.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ListParametersResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Log.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LoggerLevel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Parameter.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterDescriptor.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEvent.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEventDescriptors.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SetLoggerLevelsResult.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SetParametersResult.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Clock already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ServiceEventInfoEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Clock.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Clock.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum ServiceEventInfoEventType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ServiceEventInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfoEventType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum ServiceEventInfoEventType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ServiceEventInfo already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticDataType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfo.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ServiceEventInfo.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum StatisticDataType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MetricsMessage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StatisticDataPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticDataType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticDataType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MetricsMessage already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class StatisticDataPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MetricsMessage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticDataPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MetricsMessage.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StatisticDataPoint.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Builtins already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeTypeId 0.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Builtins.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeTypeId 0 already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeByte.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeFixed.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBounded.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeByte already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeFixed already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBounded already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeTypeId 0.\n", "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeTypeId 0 already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeByte.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeFixed.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeBounded.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeTypeId 0.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeByte already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeByte.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeFixed already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBounded already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeFixed.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBounded.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Field.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IndividualTypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeSource.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Field already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class FieldType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class IndividualTypeDescription already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class TypeDescription already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class TypeSource already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package unique_identifier_msgs.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UUID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Field.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IndividualTypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeSource.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Field.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IndividualTypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeDescription.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeSource.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class UUID already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted UUID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class UUID.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalID.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", @@ -653,36 +839,6 @@ "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeDescription.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeSource.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UUID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package dsd_ros_messages.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package mission_control.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package sub_msg.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created package types.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPath.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPathStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IMU.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IMUStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Objects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class OdometryStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjectsStamped.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalization already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationStamped already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupel already exists.\n", @@ -709,14 +865,58 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationStamped already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjects already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjectsStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfiguration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfigurationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatusStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfileStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPath.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPathStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMU.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMUStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Objects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted OdometryStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPath.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPathStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IMU.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class IMUStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalization.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupel.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupelStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Objects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectsStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class OdometryStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizon.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjects.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjectsStamped.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfiguration already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfigurationStamped already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatus already exists.\n", @@ -725,28 +925,22 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersionStamped already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfile already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfileStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Covariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldOfView.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValueMap.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValuePair.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LocalizationIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchingIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Object.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectBase.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectClassification.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectTracking.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Orientation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Position.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Probability.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Shape.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Topology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Track.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TrackPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Variance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfiguration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfigurationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfileStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfiguration.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfigurationStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatus.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatusStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersionStamped.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfile.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfileStamped.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Covariance already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class FieldOfView already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class ID already exists.\n", @@ -769,6 +963,129 @@ "INFO:capella_ros_tools.modules.capella.serializer:Class Track already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class TrackPoint already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Class Variance already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Covariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldOfView.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValueMap.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValuePair.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Object.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectBase.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectClassification.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectTracking.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Orientation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Position.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Probability.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Shape.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Topology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Track.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted Variance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Covariance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldOfView.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ID.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValueMap.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValuePair.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class LocalizationIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchingIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Object.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectBase.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectClassification.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectTracking.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Orientation.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Position.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Probability.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonData.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationEntry.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorIntegrity.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Shape.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Topology.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Track.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class TrackPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Created class Variance.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationModeTypes already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusSubTypeUnknown already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeMotion already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypePosition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeDirection already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingInvalidType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingOrientationTypes already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ObjectMotionType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectTypePedestrianType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClass already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassVerticalType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassBodyType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassCompositionType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorIntegrityType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorPosition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubposition already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlane already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBox already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCylinder already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCone already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureTopPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureBottomPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeHorizontalStructurePoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBodyStructure already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlaneStructurePoint already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeComposedStructureId already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackType already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackSubtype already exists.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationModeTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusSubTypeUnknown.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeMotion.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypePosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeDirection.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingInvalidType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingOrientationTypes.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectMotionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectTypePedestrianType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClass.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassVerticalType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassBodyType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassCompositionType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrityType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubtype.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorPosition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubposition.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlane.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBox.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCylinder.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCone.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeHorizontalStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBodyStructure.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlaneStructurePoint.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeComposedStructureId.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackType.\n", + "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackSubtype.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationModeTypes.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusSubTypeUnknown.\n", @@ -809,47 +1126,6 @@ "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackType.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationModeTypes already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusSubTypeUnknown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeMotion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypePosition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeDirection already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingInvalidType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingOrientationTypes already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ObjectMotionType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectTypePedestrianType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClass already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassVerticalType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassBodyType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassCompositionType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorPosition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubposition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlane already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBox already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCylinder already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCone already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureTopPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureBottomPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeHorizontalStructurePoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBodyStructure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlaneStructurePoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeComposedStructureId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackSubtype already exists.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalization.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationStamped.\n", "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupel.\n", diff --git a/docs/source/howtos/howtos.rst b/docs/source/howtos/howtos.rst index fcff646..70e24dc 100644 --- a/docs/source/howtos/howtos.rst +++ b/docs/source/howtos/howtos.rst @@ -29,7 +29,7 @@ Export Capella Model (experimental): ------------------------------------ .. code-block:: bash - $ python -m capella_ros_tools export docs/source/examples/data/melody_model_60 la docs/source/examples/data/example_msgs + $ python -m capella_ros_tools export docs/source/examples/data/melody_model_60 la docs/source/examples/data/melody_msgs Export Capella Model from Git Repository (experimental): -------------------------------------------------------- diff --git a/docs/source/messages/messages.rst b/docs/source/messages/messages.rst index 41eb1cf..db72268 100644 --- a/docs/source/messages/messages.rst +++ b/docs/source/messages/messages.rst @@ -10,10 +10,16 @@ ROS2 Message Layout The Capella ROS Tools API expects ROS2 messages to be organized in a specific way: -Class definition -================= +Class Definition +================ +* A `.msg` file can contain one class definition. +* Comments at the top of the file are appended to the class description. +* **Inline Comments:** Comments on the same line as a property definition are directly appended to that property's description. +* **Indented Comment Lines:** Comments on a line of their own but indented are appended to the description of the last encountered property. +* **Block Comments:** Comments on a line of their own and not indented are prepended to the description of the next properties until an empty line or a new block comment is encountered. +* **Unused Comments:** If a block comment has no properties after it before the next empty line or block comment, it is added to the class description itself. + .. code-block:: python - :linenos: # MyClass.msg # The first comment block at the top of the file @@ -26,29 +32,40 @@ Class definition # This block comment is appended to # class description of MyClass. - # This block comment is appended to the - # property description of my_other_field. - uint8 my_other_field # This inline comment - # is appended to the - # property description of - # my_other_field. - + # This block comment is appended to the property descriptions + # of my_other_field and my_third_field. + uint8 my_other_field # This inline comment + # is appended to the + # property description of + # my_other_field. uint8 my_third_field Enum definition =============== +* A `.msg` file can contain multiple enum definitions. +* Multiple enum definitions are separated by an empty line. +* Enum names are determined based on the longest common prefix of all enum values in the definition. +* If no common prefix exists, the enum name is derived from the file name (excluding the extension). +* Only one or no enum should have value names without a common prefix. +* Comments at the top of the file and unused comments are ignored. +* **Inline Comments:** Comments on the same line as an enum value definition are directly appended to the that enum value's description. +* **Indented Comment Lines:** Comments on a line of their own but indented are appended to the description of the last encountered enum value. +* **Block Comments:** Comments on a line of their own and not indented are appended to the description of the next/current enum definition until an empty line or a new block comment is encountered. + .. code-block:: python - :linenos: # MyEnum.msg # This block comment is appended to the - # enum description of MyEnumMyEnumValue. - uint8 MY_ENUM_VALUE_RED = 0 - uint8 MY_ENUM_VALUE_BLUE = 1 # This inline comment is - # appended to the - # enum value description - # of BLUE. + # enum description of MyEnumValue. + uint8 MY_ENUM_VALUE_RED = 0 + uint8 MY_ENUM_VALUE_BLUE = 1 # This inline comment is + # appended to the + # enum value description + # of BLUE. + # This block comment is also appended to the + # enum description of MyEnumValue. uint8 MY_ENUM_VALUE_YELLOW = 2 + uint8 MY_ENUM_VALUE_GREEN = 3 # This block comment is appended to the # enum description of MyEnum. @@ -59,10 +76,18 @@ Enum definition byte ERROR = 2 byte STALE = 3 -Enum and class definition +Enum and Class Definition ========================= +* A `.msg` file can contain one class definition and multiple enum definitions. +* Enums without a common value name prefix are named using the file name plus the suffix "Type." +* There can only be one or no enum whose value names do not share a common prefix. +* Comments at the top of the file are appended to the class description. +* **Inline Comments:** Comments on the same line as a property or enum value are directly appended to the description of that element. +* **Indented Comment Lines:** Comments on a line of their own but indented are appended to the description of the last encountered property or enum value. +* **Block Comments:** Comments on a line of their own and not indented are prepended to the descriptions of the next properties or appended to the descriptions of the next/current enum until an empty line or a new block comment is encountered. +* **Unused Comments:** If a block comment has no following properties or enums before the next empty line or block comment, it is added to the class description. + .. code-block:: python - :linenos: # MyMessage.msg # The first comment block at the top of the file @@ -80,35 +105,46 @@ Enum and class definition Referencing enums ================= -In the same file +In the Same File ---------------- +* In files that define a class along with enums, the class properties can reference enums defined in the same file. This can be achieved in two ways: + + * **Name Match:** The property name matches the enum name. + * **Type Match:** The property type matches the enum values type, in which case the updated enum name is derived from the file name plus the property name. + +* Name matching takes precedence over type matching. + .. code-block:: python - :linenos: # MyMessage.msg - # Fields in MyMessage can reference enums in the same file. + # Properties in MyMessage can reference enums in the same file. # This block comment is appended to the - # enum description of MyMessageType. + # enum description of MyMessageStatus. byte OK = 0 byte WARN = 1 byte ERROR = 2 byte STALE = 3 # This block comment is appended to the - # enum description of MyMessageColor. - byte COLOR_RED = 0 + # enum description of Color. + byte COLOR_RED = 0 byte COLOR_BLUE = 1 - byte COLOR_YELLOW = 2 + byte COLOR_YELLOW = 2 - byte my_field # The property my_field is of type MyMessageType - uint8 color # The property color is of type MyMessageColor + byte status # The property status is of type MyMessageStatus + byte color # The property color is of type Color In another file --------------- +* If a property definition has a primitive type, it searches for a reference to an enum in the comments and updates the type of the property based on this reference. +* The reference should follow either of the following formats: + + * **cf. :** The enum name is derived from the file name (excluding the extension). + * **cf. , _XXX:** The enum name is derived from the longest common prefix of all enum values in the definition. + .. code-block:: python - :linenos: # MyEnum.msg # This block comment is appended to the @@ -119,13 +155,12 @@ In another file byte STALE = 3 # This block comment is appended to the - # enum description of MyEnumMyEnumValue. + # enum description of MyEnumValue. uint8 MY_ENUM_VALUE_1 = 0 uint8 MY_ENUM_VALUE_2 = 1 uint8 MY_ENUM_VALUE_3 = 2 .. code-block:: python - :linenos: # MyMessage.msg # Fields in MyMessage can reference enums in MyEnum. diff --git a/docs/source/usage/usage.rst b/docs/source/usage/usage.rst index 15c3b91..e17ce26 100644 --- a/docs/source/usage/usage.rst +++ b/docs/source/usage/usage.rst @@ -16,16 +16,18 @@ Import ROS2 Messages: $ python -m capella_ros_tools import --port= --exists-action= --no-deps -* "", import ROS2 messages from -* "", export to Capella model -* "", use Capella model layer -* "--port=", start Capella model server at (optional) -* "--exists-action=", action to take if a Capella element already exists (optional) - * "skip", skip elements - * "replace", replace elements - * "abort", abort import - * "ask", ask the user (default) -* "--no-deps", do not import ROS2 dependencies (e.g. std_msgs) +* ****, import ROS2 messages from +* ****, export to Capella model +* ****, use Capella model layer +* **--port=**, start Capella model server at (optional) +* **--exists-action=**, action to take if a Capella element already exists (optional) + + * **skip**, skip elements + * **replace**, replace elements + * **abort**, abort import + * **ask**, ask the user (default) + +* **--no-deps**, do not import ROS2 dependencies (e.g. std_msgs) Export Capella Model (experimental): ------------------------------------ @@ -33,6 +35,6 @@ Export Capella Model (experimental): $ python -m capella_ros_tools export -* "", import Capella model from -* "", use Capella model layer -* "", export ROS2 messages to +* ****, import Capella model from +* ****, use Capella model layer +* ****, export ROS2 messages to From 65e6a6a7488a4d76bc226cc7e4111aad779b1351 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Thu, 15 Feb 2024 12:21:48 +0100 Subject: [PATCH 18/47] fix: Apply suggestions from code review --- .commitlintrc.yml | 21 +- .github/workflows/build-test-publish.yml | 136 +- .github/workflows/commit-check.yml | 57 + .github/workflows/docs.yml | 2 +- .github/workflows/lint.yml | 68 +- .github/workflows/pr-target.yml | 81 - .gitignore | 3 - .pre-commit-config.yaml | 195 +- CONTRIBUTING.md | 165 +- README.md | 2 +- capella_ros_tools/__main__.py | 74 +- capella_ros_tools/capella.py | 258 + capella_ros_tools/messages.py | 359 + capella_ros_tools/modules/capella/__init__.py | 58 - capella_ros_tools/modules/capella/parser.py | 76 - .../modules/capella/serializer.py | 222 - .../modules/messages/__init__.py | 131 - capella_ros_tools/modules/messages/parser.py | 326 - .../modules/messages/serializer.py | 68 - capella_ros_tools/scripts/__init__.py | 2 +- capella_ros_tools/scripts/capella2msg.py | 101 - capella_ros_tools/scripts/export_capella.py | 78 + capella_ros_tools/scripts/import_msgs.py | 186 + capella_ros_tools/scripts/msg2capella.py | 192 - capella_ros_tools/snapshot/__init__.py | 3 - .../{modules => viewer}/__init__.py | 2 +- capella_ros_tools/{snapshot => viewer}/app.py | 28 +- .../static/icons/favicon.ico | Bin .../static/icons/favicon.ico.license | 0 .../{snapshot => viewer}/static/styles.css | 19 +- .../{snapshot => viewer}/templates/class.html | 63 +- .../{snapshot => viewer}/templates/enum.html | 13 +- .../templates/package.html | 36 +- docs/source/_static/github-logo.svg | 11 +- docs/source/examples/Export capella.ipynb | 80 - .../examples/Export capella.ipynb.license | 2 - docs/source/examples/Import messages.ipynb | 1214 -- .../examples/Import messages.ipynb.license | 2 - docs/source/examples/Parse capella.ipynb | 122 - .../examples/Parse capella.ipynb.license | 2 - docs/source/examples/Parse messages.ipynb | 112 - .../examples/Parse messages.ipynb.license | 2 - .../empty_project_52/empty_project_52.capella | 11040 ---------------- docs/source/howtos/howtos.rst | 26 +- docs/source/messages/messages.rst | 2 +- docs/source/usage/usage.rst | 2 +- pyproject.toml | 6 +- .../data/empty_model}/.project | 2 +- .../data/empty_model}/.project.license | 0 .../data/empty_model/empty_model.afm | 4 +- .../data/empty_model/empty_model.afm.license | 0 .../data/empty_model/empty_model.aird | 33 +- .../data/empty_model/empty_model.aird.license | 0 tests/data/empty_model/empty_model.capella | 272 + .../empty_model/empty_model.capella.license | 0 .../data/example_msgs/msg/CameraInfo.msg | 0 .../example_msgs/msg/DiagnosticStatus.msg | 0 .../data/example_msgs/msg/PointCloud2.msg | 0 .../data/melody_model_60/.project | 0 .../data/melody_model_60/.project.license | 0 .../melody_model_60/Melody Model Test.afm | 0 .../Melody Model Test.afm.license | 0 .../melody_model_60/Melody Model Test.aird | 0 .../Melody Model Test.aird.license | 0 .../melody_model_60/Melody Model Test.capella | 0 .../Melody Model Test.capella.license | 0 66 files changed, 1646 insertions(+), 14313 deletions(-) create mode 100644 .github/workflows/commit-check.yml delete mode 100644 .github/workflows/pr-target.yml create mode 100644 capella_ros_tools/capella.py create mode 100644 capella_ros_tools/messages.py delete mode 100644 capella_ros_tools/modules/capella/__init__.py delete mode 100644 capella_ros_tools/modules/capella/parser.py delete mode 100644 capella_ros_tools/modules/capella/serializer.py delete mode 100644 capella_ros_tools/modules/messages/__init__.py delete mode 100644 capella_ros_tools/modules/messages/parser.py delete mode 100644 capella_ros_tools/modules/messages/serializer.py delete mode 100644 capella_ros_tools/scripts/capella2msg.py create mode 100644 capella_ros_tools/scripts/export_capella.py create mode 100644 capella_ros_tools/scripts/import_msgs.py delete mode 100644 capella_ros_tools/scripts/msg2capella.py delete mode 100644 capella_ros_tools/snapshot/__init__.py rename capella_ros_tools/{modules => viewer}/__init__.py (75%) rename capella_ros_tools/{snapshot => viewer}/app.py (63%) rename capella_ros_tools/{snapshot => viewer}/static/icons/favicon.ico (100%) rename capella_ros_tools/{snapshot => viewer}/static/icons/favicon.ico.license (100%) rename capella_ros_tools/{snapshot => viewer}/static/styles.css (95%) rename capella_ros_tools/{snapshot => viewer}/templates/class.html (73%) rename capella_ros_tools/{snapshot => viewer}/templates/enum.html (80%) rename capella_ros_tools/{snapshot => viewer}/templates/package.html (67%) delete mode 100644 docs/source/examples/Export capella.ipynb delete mode 100644 docs/source/examples/Export capella.ipynb.license delete mode 100644 docs/source/examples/Import messages.ipynb delete mode 100644 docs/source/examples/Import messages.ipynb.license delete mode 100644 docs/source/examples/Parse capella.ipynb delete mode 100644 docs/source/examples/Parse capella.ipynb.license delete mode 100644 docs/source/examples/Parse messages.ipynb delete mode 100644 docs/source/examples/Parse messages.ipynb.license delete mode 100644 docs/source/examples/data/empty_project_52/empty_project_52.capella rename {docs/source/examples/data/empty_project_52 => tests/data/empty_model}/.project (88%) rename {docs/source/examples/data/empty_project_52 => tests/data/empty_model}/.project.license (100%) rename docs/source/examples/data/empty_project_52/empty_project_52.afm => tests/data/empty_model/empty_model.afm (54%) rename docs/source/examples/data/empty_project_52/empty_project_52.afm.license => tests/data/empty_model/empty_model.afm.license (100%) rename docs/source/examples/data/empty_project_52/empty_project_52.aird => tests/data/empty_model/empty_model.aird (59%) rename docs/source/examples/data/empty_project_52/empty_project_52.aird.license => tests/data/empty_model/empty_model.aird.license (100%) create mode 100644 tests/data/empty_model/empty_model.capella rename docs/source/examples/data/empty_project_52/empty_project_52.capella.license => tests/data/empty_model/empty_model.capella.license (100%) rename {docs/source/examples => tests}/data/example_msgs/msg/CameraInfo.msg (100%) rename {docs/source/examples => tests}/data/example_msgs/msg/DiagnosticStatus.msg (100%) rename {docs/source/examples => tests}/data/example_msgs/msg/PointCloud2.msg (100%) rename {docs/source/examples => tests}/data/melody_model_60/.project (100%) rename {docs/source/examples => tests}/data/melody_model_60/.project.license (100%) rename {docs/source/examples => tests}/data/melody_model_60/Melody Model Test.afm (100%) rename {docs/source/examples => tests}/data/melody_model_60/Melody Model Test.afm.license (100%) rename {docs/source/examples => tests}/data/melody_model_60/Melody Model Test.aird (100%) rename {docs/source/examples => tests}/data/melody_model_60/Melody Model Test.aird.license (100%) rename {docs/source/examples => tests}/data/melody_model_60/Melody Model Test.capella (100%) rename {docs/source/examples => tests}/data/melody_model_60/Melody Model Test.capella.license (100%) diff --git a/.commitlintrc.yml b/.commitlintrc.yml index ae711cf..dab71d5 100644 --- a/.commitlintrc.yml +++ b/.commitlintrc.yml @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright DB InfraGO AG and the capellambse contributors +# SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 rules: body-leading-blank: [2, always] @@ -9,16 +9,9 @@ rules: subject-full-stop: [2, never, .] subject-max-length: [2, always, 72] type-empty: [2, never] - type-enum: [2, always, [ - build, - chore, - ci, - docs, - feat, - fix, - merge, - perf, - refactor, - revert, - test, - ]] + type-enum: + [ + 2, + always, + [build, chore, ci, docs, feat, fix, merge, perf, refactor, revert, test], + ] diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index 5db9f4d..edc18e6 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -4,74 +4,74 @@ name: Build on: - push: - branches: ["*"] - pull_request: [master] - tags: ["v*.*.*"] + push: + branches: ["*"] + pull_request: [master] + tags: ["v*.*.*"] jobs: - test: - name: Test with Python ${{matrix.python_version}} on ${{matrix.os}} - runs-on: ${{matrix.os}} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - python_version: - - "3.10" - - "3.11" - - "3.12" - include: - - os: windows-latest - python_version: "3.10" - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{matrix.python_version}} - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.python_version}} - - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{runner.os}}-pip-${{hashFiles('pyproject.toml')}} - restore-keys: | - ${{runner.os}}-pip- - ${{runner.os}}- - - name: Upgrade Pip - run: |- - python -m pip install -U pip - - name: Install test dependencies - run: |- - python -m pip install '.[test]' - - name: Run unit tests - run: |- - python -m pytest --cov-report=term --cov=capella_ros_tools --rootdir=. + test: + name: Test with Python ${{matrix.python_version}} on ${{matrix.os}} + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python_version: + - "3.10" + - "3.11" + - "3.12" + include: + - os: windows-latest + python_version: "3.10" + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{matrix.python_version}} + uses: actions/setup-python@v2 + with: + python-version: ${{matrix.python_version}} + - uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{runner.os}}-pip-${{hashFiles('pyproject.toml')}} + restore-keys: | + ${{runner.os}}-pip- + ${{runner.os}}- + - name: Upgrade Pip + run: |- + python -m pip install -U pip + - name: Install test dependencies + run: |- + python -m pip install '.[test]' + - name: Run unit tests + run: |- + python -m pytest --cov-report=term --cov=capella_ros_tools --rootdir=. - publish: - name: Publish artifacts - runs-on: ubuntu-latest - needs: test - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Install dependencies - run: |- - python -m pip install -U pip - python -m pip install build twine - - name: Build packages - run: |- - python -m build - - name: Verify packages - run: |- - python -m twine check dist/* - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: Artifacts - path: "dist/*" - - name: Publish to PyPI (release only) - if: startsWith(github.ref, 'refs/tags/v') - run: python -m twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --non-interactive dist/* + publish: + name: Publish artifacts + runs-on: ubuntu-latest + needs: test + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: "3.10" + - name: Install dependencies + run: |- + python -m pip install -U pip + python -m pip install build twine + - name: Build packages + run: |- + python -m build + - name: Verify packages + run: |- + python -m twine check dist/* + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: Artifacts + path: 'dist/*' + - name: Publish to PyPI (release only) + if: startsWith(github.ref, 'refs/tags/v') + run: python -m twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --non-interactive dist/* diff --git a/.github/workflows/commit-check.yml b/.github/workflows/commit-check.yml new file mode 100644 index 0000000..47e1be6 --- /dev/null +++ b/.github/workflows/commit-check.yml @@ -0,0 +1,57 @@ +# SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: CC0-1.0 + +name: Conventional Commits + +on: + pull_request: + branches: [master] + +jobs: + conventional-commits: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Install commitlint + run: npm install -g @commitlint/cli + - name: Validate commit messages + id: conventional-commits + env: + SHA_FROM: ${{ github.event.pull_request.base.sha }} + SHA_TO: ${{ github.event.pull_request.head.sha }} + run: | + delim="_EOF_$(uuidgen)" + echo "validation-result<<$delim" >> "$GITHUB_OUTPUT" + r=0 + commitlint --from "$SHA_FROM" --to "$SHA_TO" >> "$GITHUB_OUTPUT" 2>&1 || r=$? + echo "$delim" >> "$GITHUB_OUTPUT" + exit $r + - name: Post comment if validation failed + if: always() && steps.conventional-commits.outcome == 'failure' + uses: actions/github-script@v6 + env: + TEXT: |- + The pull request does not conform to the conventional commit specification. Please ensure that your commit messages follow the spec: . + We also strongly recommend that you set up your development environment with pre-commit, as described in our [CONTRIBUTING guidelines](https://github.com/DSD-DBS/capella-ros-tools/blob/master/CONTRIBUTING.md). This will run all the important checks right before you commit your changes, and avoids lengthy CI wait time and round trips. + + This is the commit validation log: + ``` + ${{ steps.conventional-commits.outputs.validation-result }} + ``` + + Here are some examples of valid commit messages: + ``` + build: Bump dependency versions + docs(user): Add model creation workflow + feat: Add a monitoring dashboard + ``` + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: process.env.TEXT + }) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 16913ff..582e4ae 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright DB InfraGO AG +# Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: CC0-1.0 name: Docs diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 26dc57f..e0335ea 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -4,39 +4,39 @@ name: Lint on: - push: - branches: ["*"] + push: + branches: ["*"] jobs: - pre-commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Upgrade pip - run: |- - python -m pip install -U pip - - name: Install pre-commit - run: |- - python -m pip install pre-commit types-docutils - - name: Run Pre-Commit - run: |- - pre-commit run --all-files - pylint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Upgrade pip - run: |- - python -m pip install -U pip - - name: Install pylint - run: |- - python -m pip install pylint - - name: Run pylint - run: |- - pylint -dfixme capella_ros_tools || exit $(($? & ~24)) + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: "3.10" + - name: Upgrade pip + run: |- + python -m pip install -U pip + - name: Install pre-commit + run: |- + python -m pip install pre-commit types-docutils + - name: Run Pre-Commit + run: |- + pre-commit run --all-files + pylint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: "3.10" + - name: Upgrade pip + run: |- + python -m pip install -U pip + - name: Install pylint + run: |- + python -m pip install pylint + - name: Run pylint + run: |- + pylint -dfixme capella_ros_tools || exit $(($? & ~24)) diff --git a/.github/workflows/pr-target.yml b/.github/workflows/pr-target.yml deleted file mode 100644 index ab7c0ae..0000000 --- a/.github/workflows/pr-target.yml +++ /dev/null @@ -1,81 +0,0 @@ -# SPDX-FileCopyrightText: Copyright DB InfraGO AG and the capellambse contributors -# SPDX-License-Identifier: CC0-1.0 - -name: Conventional Commits - -on: - pull_request_target: - types: [opened, synchronize] - -permissions: - contents: read - pull-requests: write - -jobs: - conventional-commits: - runs-on: ubuntu-latest - steps: - - name: Checkout the base branch - # Commitlint will use the configuration that is checked out; i.e. in - # this case it will use the config from the PR's base branch, which - # must have already been approved by someone with repo write access. - # - # Because commitlint accepts arbitrary JavaScript as configuration, - # this is necessary to prevent code injection attacks. Combined with - # the `pull-requests: write` permission needed for posting comments, - # this could potentially allow an attacker to merge any code into any - # branch. - # - # However, it also means that (good) pull requests intended to change - # or extend the config will be validated against the old config, which - # may cause false errors. - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.base.ref }} - - - name: Pull the PR - run: git fetch origin +${{ github.event.pull_request.head.sha }} - - - name: Install commitlint - run: npm install -g @commitlint/cli - - - name: Validate commit messages - id: conventional-commits - continue-on-error: true - env: - SHA_FROM: ${{ github.event.pull_request.base.sha }} - SHA_TO: ${{ github.event.pull_request.head.sha }} - run: | - delim="_EOF_$(uuidgen)" - echo "validation-result<<$delim" >> "$GITHUB_OUTPUT" - r=0 - commitlint --from "$SHA_FROM" --to "$SHA_TO" >> "$GITHUB_OUTPUT" 2>&1 || r=$? - echo "$delim" >> "$GITHUB_OUTPUT" - exit $r - - - name: Post comment if validation failed - if: steps.conventional-commits.outcome == "failure" - env: - GH_TOKEN: ${{ github.token }} - PR_NUMBER: ${{ github.event.pull_request.number }} - TEXT: |- - The pull request does not conform to the conventional commit specification. Please ensure that your commit messages follow the spec: - - - - We also strongly recommend that you set up your development environment with pre-commit, as described in our [CONTRIBUTING guidelines](https://github.com/DSD-DBS/py-capellambse/blob/master/CONTRIBUTING.rst). This will run all the important checks right before you commit your changes, and avoids lengthy CI wait time and round trips. - - The following commits failed to validate: - - ``` - ${{ steps.conventional-commits.outputs.validation-result }} - ``` - - Here are some examples of valid commit messages: - - ``` - feat(model): Add realized_states to State and Mode - fix(aird): Fix ZeroDivisionError with zero-sized circles - docs(readme): Update project description - ``` - run: 'gh pr comment "$PR_NUMBER" -F - <<< "$TEXT"' diff --git a/.gitignore b/.gitignore index fe48896..6dddc2e 100644 --- a/.gitignore +++ b/.gitignore @@ -137,9 +137,6 @@ venv.bak/ .spyderproject .spyproject -# VSCode settings -.vscode/ - # Rope project settings .ropeproject diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1919daf..f8a6fba 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,100 +4,101 @@ default_install_hook_types: [commit-msg, pre-commit] default_stages: [commit, merge-commit] repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 - hooks: - - id: check-added-large-files - - id: check-ast - - id: check-builtin-literals - - id: check-case-conflict - - id: check-executables-have-shebangs - - id: check-json - - id: check-merge-conflict - - id: check-shebang-scripts-are-executable - - id: check-symlinks - - id: check-toml - - id: check-vcs-permalinks - - id: check-xml - - id: check-yaml - - id: debug-statements - - id: destroyed-symlinks - - id: end-of-file-fixer - - id: fix-byte-order-marker - - id: trailing-whitespace - - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.12.1 - hooks: - - id: black - - repo: https://github.com/PyCQA/isort - rev: 5.13.2 - hooks: - - id: isort - - repo: https://github.com/PyCQA/docformatter - rev: v1.7.5 - hooks: - - id: docformatter - additional_dependencies: - - docformatter[tomli] - - repo: https://github.com/PyCQA/pydocstyle - rev: 6.3.0 - hooks: - - id: pydocstyle - exclude: "^tests/" - additional_dependencies: - - pydocstyle[toml] - - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.8.0 - hooks: - - id: mypy - - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.4 - hooks: - - id: insert-license - name: Insert license headers (shell-style comments) - files: '(?:^|/)(?:.*\.(?:py|sh|toml|ya?ml)|Dockerfile|Makefile)$' - exclude: '(?:^|/)\..+|^docs/Makefile$' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - "#" - - id: insert-license - name: Insert license headers (XML-style comments) - files: '\.(?:html|md|xml)$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - "" - - id: insert-license - name: Insert license headers (C-style comments) - files: '\.(?:css|js|ts)$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - "/*| *| */" - - id: insert-license - name: Insert license headers (reST comments) - files: '\.rst$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - "..| |" - - repo: https://github.com/fsfe/reuse-tool - rev: v2.1.0 - hooks: - - id: reuse - - repo: https://github.com/qoomon/git-conventional-commits - rev: v2.6.7 - hooks: - - id: conventional-commits + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: check-added-large-files + - id: check-ast + - id: check-builtin-literals + - id: check-case-conflict + - id: check-executables-have-shebangs + - id: check-json + - id: check-merge-conflict + - id: check-shebang-scripts-are-executable + - id: check-symlinks + - id: check-toml + - id: check-vcs-permalinks + - id: check-xml + - id: check-yaml + - id: debug-statements + - id: destroyed-symlinks + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: trailing-whitespace + - repo: https://github.com/psf/black-pre-commit-mirror + rev: 24.1.1 + hooks: + - id: black + - repo: https://github.com/PyCQA/isort + rev: 5.13.2 + hooks: + - id: isort + - repo: https://github.com/PyCQA/docformatter + rev: v1.7.5 + hooks: + - id: docformatter + additional_dependencies: + - docformatter[tomli] + - repo: https://github.com/PyCQA/pydocstyle + rev: 6.3.0 + hooks: + - id: pydocstyle + exclude: '^tests/' + additional_dependencies: + - pydocstyle[toml] + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.8.0 + hooks: + - id: mypy + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.5.4 + hooks: + - id: insert-license + name: Insert license headers (shell-style comments) + files: '(?:^|/)(?:.*\.(?:py|sh|toml|ya?ml)|Dockerfile|Makefile)$' + exclude: '(?:^|/)\..+|^docs/Makefile$' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - '#' + - id: insert-license + name: Insert license headers (XML-style comments) + files: '\.(?:html|md|xml)$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - '' + - id: insert-license + name: Insert license headers (C-style comments) + files: '\.(?:css|js|ts)$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - '/*| *| */' + - id: insert-license + name: Insert license headers (reST comments) + files: '\.rst$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - '..| |' + - repo: https://github.com/fsfe/reuse-tool + rev: v3.0.1 + hooks: + - id: reuse + - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook + rev: v9.11.0 + hooks: + - id: commitlint + stages: [commit-msg] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 84a7376..7997c85 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,41 +32,41 @@ pytest We additionally recommend that you set up your editor / IDE as follows. -- Indent with 4 spaces per level of indentation +- Indent with 4 spaces per level of indentation -- Maximum line length of 79 (add a ruler / thin line / highlighting / ...) +- Maximum line length of 79 (add a ruler / thin line / highlighting / ...) -- _If you use Visual Studio Code_: Consider using a platform which supports - third-party language servers more easily, and continue with the next point. +- _If you use Visual Studio Code_: Consider using a platform which supports + third-party language servers more easily, and continue with the next point. - Otherwise, set up the editor to run `black`, `pylint` and `mypy` when saving. - To enable automatic import sorting with `isort`, add the following to your - `settings.json`: + Otherwise, set up the editor to run `black`, `pylint` and `mypy` when saving. + To enable automatic import sorting with `isort`, add the following to your + `settings.json`: - ```json - "[python]": { - "editor.codeActionsOnSave": { - "source.organizeImports": true - } - } - ``` + ```json + "[python]": { + "editor.codeActionsOnSave": { + "source.organizeImports": true + } + } + ``` - Note that the Pylance language server is not recommended, as it occasionally - causes false-positive errors for perfectly valid code. + Note that the Pylance language server is not recommended, as it occasionally + causes false-positive errors for perfectly valid code. -- _If you do not use VSC_: Set up your editor to use the [python-lsp-server], - and make sure that the relevant plugins are installed. You can install - everything that's needed into the virtualenv with pip: +- _If you do not use VSC_: Set up your editor to use the [python-lsp-server], + and make sure that the relevant plugins are installed. You can install + everything that's needed into the virtualenv with pip: - [python-lsp-server]: https://github.com/python-lsp/python-lsp-server + [python-lsp-server]: https://github.com/python-lsp/python-lsp-server - ```sh - pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy - ``` + ```sh + pip install "python-lsp-server[pylint]" python-lsp-black pyls-isort pylsp-mypy + ``` - This will provide as-you-type linting as well as automatic formatting on - save. Language server clients are available for a wide range of editors, from - Vim/Emacs to PyCharm/IDEA. + This will provide as-you-type linting as well as automatic formatting on + save. Language server clients are available for a wide range of editors, from + Vim/Emacs to PyCharm/IDEA. ## Code style @@ -74,78 +74,81 @@ We base our code style on a modified version of the [Google style guide for Python code](https://google.github.io/styleguide/pyguide.html). The key differences are: -- **Docstrings**: The [Numpy style guide] applies here. +- **Docstrings**: The [Numpy style guide] applies here. - [numpy style guide]: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard + [numpy style guide]: + https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard - When writing docstrings for functions, use the imperative style, as per - [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". + When writing docstrings for functions, use the imperative style, as per + [PEP-257]). For example, write "Do X and Y" instead of "Does X and Y". - [pep-257]: https://peps.python.org/pep-0257/ + [pep-257]: https://peps.python.org/pep-0257/ -- **Overridden methods**: If the documentation did not change from the base - class (i.e. the base class' method's docstring still applies without - modification), do not add a short docstring á la "See base class". This lets - automated tools pick up the full base class docstring instead, and is - therefore more useful in IDEs etc. +- **Overridden methods**: If the documentation did not change from the base + class (i.e. the base class' method's docstring still applies without + modification), do not add a short docstring á la "See base class". This lets + automated tools pick up the full base class docstring instead, and is + therefore more useful in IDEs etc. -- **Linting**: Use [pylint] for static code analysis, and [mypy] for static - type checking. +- **Linting**: Use [pylint] for static code analysis, and [mypy] for static + type checking. - [pylint]: https://github.com/PyCQA/pylint - [mypy]: https://github.com/python/mypy + [pylint]: https://github.com/PyCQA/pylint + [mypy]: https://github.com/python/mypy -- **Formatting**: Use [black] as code auto-formatter. The maximum line length - is 79, as per [PEP-8]. This setting should be automatically picked up from - the `pyproject.toml` file. The reason for the shorter line length is that it - avoids wrapping and overflows in side-by-side split views (e.g. diffs) if - there's also information displayed to the side of it (e.g. a tree view of the - modified files). +- **Formatting**: Use [black] as code auto-formatter. The maximum line length + is 79, as per [PEP-8]. This setting should be automatically picked up from + the `pyproject.toml` file. The reason for the shorter line length is that it + avoids wrapping and overflows in side-by-side split views (e.g. diffs) if + there's also information displayed to the side of it (e.g. a tree view of the + modified files). - [black]: https://github.com/psf/black - [pep-8]: https://www.python.org/dev/peps/pep-0008/ + [black]: https://github.com/psf/black + [pep-8]: https://www.python.org/dev/peps/pep-0008/ - Be aware of the different line length of 72 for docstrings. We currently do - not have a satisfactory solution to automatically apply or enforce this. + Be aware of the different line length of 72 for docstrings. We currently do + not have a satisfactory solution to automatically apply or enforce this. - Note that, while you're encouraged to do so in general, it is not a hard - requirement to break up long strings into smaller parts. Additionally, never - break up strings that are presented to the user in e.g. log messages, as that - makes it significantly harder to grep for them. + Note that, while you're encouraged to do so in general, it is not a hard + requirement to break up long strings into smaller parts. Additionally, never + break up strings that are presented to the user in e.g. log messages, as that + makes it significantly harder to grep for them. - Use [isort] for automatic sorting of imports. Its settings should - automatically be picked up from the `pyproject.toml` file as well. + Use [isort] for automatic sorting of imports. Its settings should + automatically be picked up from the `pyproject.toml` file as well. - [isort]: https://github.com/PyCQA/isort + [isort]: https://github.com/PyCQA/isort -- **Typing**: We do not make an exception for `typing` imports. Instead of - writing `from typing import SomeName`, use `import typing as t` and access - typing related classes like `t.TypedDict`. +- **Typing**: We do not make an exception for `typing` imports. Instead of + writing `from typing import SomeName`, use `import typing as t` and access + typing related classes like `t.TypedDict`. - - Use the new syntax and classes for typing introduced with Python 3.10. + - - Instead of `t.Tuple`, `t.List` etc. use the builtin classes `tuple`, `list` - etc. - - For classes that are not builtin (e.g. `Iterable`), - `import collections.abc as cabc` and then use them like `cabc.Iterable`. - - Use [PEP-604-style unions], e.g. `int | float` instead of - `t.Union[int, float]`. - - Use `... | None` (with `None` always as the last union member) instead of - `t.Optional[...]` and always explicitly annotate where `None` is possible. + Use the new syntax and classes for typing introduced with Python 3.10. - [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ + - Instead of `t.Tuple`, `t.List` etc. use the builtin classes `tuple`, `list` + etc. + - For classes that are not builtin (e.g. `Iterable`), + `import collections.abc as cabc` and then use them like `cabc.Iterable`. + - Use [PEP-604-style unions], e.g. `int | float` instead of + `t.Union[int, float]`. + - Use `... | None` (with `None` always as the last union member) instead of + `t.Optional[...]` and always explicitly annotate where `None` is possible. -- **Python style rules**: For conflicting parts, the [Black code style] wins. - If you have set up black correctly, you don't need to worry about this though - :) + [pep-604-style unions]: https://www.python.org/dev/peps/pep-0604/ - [black code style]: https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html +- **Python style rules**: For conflicting parts, the [Black code style] wins. + If you have set up black correctly, you don't need to worry about this though + :) -- When working with `dict`s, consider using `t.TypedDict` instead of a more - generic `dict[str, float|int|str]`-like annotation where possible, as the - latter is much less precise (often requiring additional `assert`s or - `isinstance` checks to pass) and can grow unwieldy very quickly. + [black code style]: + https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html -- Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses - a more convenient `class ...:` syntax and also supports type annotations. +- When working with `dict`s, consider using `t.TypedDict` instead of a more + generic `dict[str, float|int|str]`-like annotation where possible, as the + latter is much less precise (often requiring additional `assert`s or + `isinstance` checks to pass) and can grow unwieldy very quickly. + +- Prefer `t.NamedTuple` over `collections.namedtuple`, because the former uses + a more convenient `class ...:` syntax and also supports type annotations. diff --git a/README.md b/README.md index 70e3862..a0eefe5 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/build-test-publish.yml/badge.svg) ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) -Tool for converting ROS messages from and to Capella models. +Tools for importing ROS .msg files into Capella data package and vice versa. # Documentation diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index a3f0a81..c85f63d 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -1,17 +1,13 @@ # Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""Main entry point into capella_ros_tools.""" +"""Main entry point into Capella ROS Tools.""" +import pathlib import sys -import typing as t -from pathlib import Path -import capellambse import click import capella_ros_tools -from capella_ros_tools.scripts import capella2msg, msg2capella -from capella_ros_tools.snapshot import app @click.group() @@ -21,14 +17,18 @@ message="%(prog)s %(version)s", ) def cli(): - """CLI for capella-ros-tools.""" + """Console script for Capella ROS Tools.""" @cli.command("import") -@click.argument("msg_path", type=str, required=True) +@click.argument( + "msg_path", + type=click.Path(), + required=True, +) @click.argument( "capella_path", - type=click.Path(path_type=Path), + type=click.Path(exists=True), required=True, ) @click.argument( @@ -51,48 +51,62 @@ def cli(): is_flag=True, help="Don’t install message dependencies.", ) -@click.option("--port", type=int, help="Port for HTML display.") -def import_msg( - msg_path: t.Any, - capella_path: Path, +@click.option("--port", type=int, help="Open model viewer on given port.") +def import_msgs( + msg_path: str, + capella_path: str, layer: str, action: str, no_deps: bool, port: int, -): - """Import ROS messages into Capella data package.""" +) -> None: + """Import ROS messages into a Capella data package. + + MSG_PATH: Path to folder with .msg files. + CAPELLA_PATH: Path to Capella model. + LAYER: Layer of Capella model to import elements to. + """ + from capellambse import filehandler - if not Path(msg_path).exists(): - msg_path = capellambse.filehandler.get_filehandler(msg_path).rootdir + from capella_ros_tools.scripts import import_msgs as importer + from capella_ros_tools.viewer import app - converter: t.Any = msg2capella.Converter( - msg_path, capella_path, layer, action, no_deps + msg_filehandler = filehandler.get_filehandler(msg_path).rootdir + + converter = importer.Importer( + msg_filehandler, capella_path, layer, action, no_deps ) - converter.convert() + converter() if port: - app.start(converter.model.model, layer, port) + app.start(converter.capella.model, layer) @cli.command("export") -@click.argument("capella_path", type=str, required=True) +@click.argument("capella_path", type=click.Path(), required=True) @click.argument( "layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, ) -@click.argument("msg_path", type=click.Path(path_type=Path), required=True) +@click.argument( + "msg_path", type=click.Path(path_type=pathlib.Path), required=True +) def export_capella( - capella_path: t.Any, + capella_path: str, layer: str, - msg_path: Path, + msg_path: pathlib.Path, ): - """Export Capella data package to ROS messages.""" - if not Path(capella_path).exists(): - capella_path = capellambse.filehandler.get_filehandler(capella_path) + """Export Capella data package to ROS messages. + + CAPELLA_PATH: Path to Capella model. + LAYER: Layer of Capella model to export elements from. + MSG_PATH: Path to output folder for .msg files. + """ + from capella_ros_tools.scripts import export_capella as exporter - converter: t.Any = capella2msg.Converter(msg_path, capella_path, layer) - converter.convert() + converter = exporter.Exporter(capella_path, layer, msg_path) + converter() if __name__ == "__main__": diff --git a/capella_ros_tools/capella.py b/capella_ros_tools/capella.py new file mode 100644 index 0000000..2667600 --- /dev/null +++ b/capella_ros_tools/capella.py @@ -0,0 +1,258 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""High-level interface for interacting with Capella data packages.""" + +import logging +import typing as t + +import capellambse +from capellambse.model.crosslayer import information + +from capella_ros_tools import messages + +logger = logging.getLogger(__name__) + + +class CapellaDataPackage: + """Capella data package wrapper.""" + + def __init__(self, capella_path: str, layer: str): + self.model = capellambse.MelodyModel(capella_path) + self.data_package = getattr(self.model, layer).data_package + try: + self.data_types = self.model.sa.data_package.packages.by_name( + "Data Types" + ) + except KeyError: + self.data_types = self.model.sa.data_package.packages.create( + name="Data Types" + ) + + def remove_class( + self, cls_obj: information.Class, remove_from: information.DataPkg + ): + """Remove class from Capella package.""" + try: + remove_from.classes.remove(cls_obj) + logger.info("%s deleted.", cls_obj._short_repr_()) + except ValueError: + pass + + def remove_package( + self, pkg_obj: information.DataPkg, remove_from: information.DataPkg + ): + """Remove package from Capella package.""" + try: + remove_from.packages.remove(pkg_obj) + logger.info("%s deleted.", pkg_obj._short_repr_()) + except ValueError: + pass + + def remove_enum( + self, + enum_obj: information.datatype.Enumeration, + remove_from: information.DataPkg, + ): + """Remove enum from Capella package.""" + try: + remove_from.datatypes.remove(enum_obj) + logger.info("%s deleted.", enum_obj._short_repr_()) + except ValueError: + pass + + def create_package( + self, + pkg_def: messages.MessagePkgDef, + create_in: information.DataPkg, + ) -> information.DataPkg | None: + """Create package in Capella package. + + Returns + ------- + Package object if package already exists, else None. + """ + try: + pkg_obj = self.model.search( + "DataPkg", below=self.data_package + ).by_name(pkg_def.name) + logger.info("%s already exists.", pkg_obj._short_repr_()) + return pkg_obj + except KeyError: + pkg_obj = create_in.packages.create( + name=pkg_def.name, + ) + logger.info("%s created.", pkg_obj._short_repr_()) + return None + + def create_class( + self, + cls_def: messages.MessageDef, + create_in: information.DataPkg, + ) -> information.Class | None: + """Create class in Capella package. + + Returns + ------- + Class object if class already exists, else None. + """ + try: + cls_obj = create_in.classes.by_name(cls_def.name) + logger.info("%s already exists.", cls_obj._short_repr_()) + return cls_obj + except KeyError: + cls_obj = create_in.classes.create( + name=cls_def.name, description=cls_def.description + ) + logger.info("%s created.", cls_obj._short_repr_()) + return None + + def create_enum( + self, enum_def: messages.EnumDef, create_in: information.DataPkg + ) -> information.datatype.Enumeration | None: + """Create enum in Capella package. + + Returns + ------- + Enumeration object if enumeration already exists, else None. + """ + try: + enum_obj = create_in.datatypes.by_name(enum_def.name) + logger.info("%s already exists.", enum_obj._short_repr_()) + return enum_obj + except KeyError: + enum_obj = create_in.datatypes.create( + "Enumeration", + name=enum_def.name, + description=enum_def.description, + ) + for literal in enum_def.literals: + literal_obj = enum_obj.owned_literals.create( + "EnumerationLiteral", + name=literal.name, + description=literal.description, + ) + literal_obj.value = capellambse.new_object( + "LiteralNumericValue", + value=str(literal.value), + ) + logger.info("%s created.", enum_obj._short_repr_()) + return None + + def _get_parent( + self, package_name: str | None, default: information.DataPkg + ) -> information.DataPkg: + try: + return self.model.search( + "DataPkg", below=self.data_package + ).by_name(package_name) + except KeyError: + return default + + def create_properties( + self, + cls_def: messages.MessageDef, + create_in: information.DataPkg, + ) -> None: + """Create properties for Capella class.""" + superclass = create_in.classes.by_name(cls_def.name) + + for prop in cls_def.fields: + try: + parent = self._get_parent(prop.type.package, create_in) + partclass = parent.classes.by_name(prop.type.name) + composition = self._create_composition( + superclass, prop, partclass + ) + association = create_in.owned_associations.create( + navigable_members=[composition] + ) + association.members.create( + "Property", + type=superclass, + kind="ASSOCIATION", + min_card=capellambse.new_object( + "LiteralNumericValue", value="1" + ), + max_card=capellambse.new_object( + "LiteralNumericValue", value="1" + ), + ) + except KeyError: + composition = self._create_attribute( + superclass, prop, create_in + ) + + self._set_cardinality(composition, prop.type.card) + self._set_range(composition, prop.type.range) + logger.info("Created properties for %s.", cls_def.name) + + def _create_attribute( + self, + superclass: information.Class, + attr: messages.FieldDef, + parent: information.DataPkg, + ) -> information.Property: + type_name = attr.type.name + try: + attr_type = parent.datatypes.by_name(type_name) + except KeyError: + if "char" in type_name or "string" in type_name: + type = "StringType" + elif "bool" in type_name or "boolean" in type_name: + type = "BooleanType" + else: + type = "NumericType" + + attr_type = self.data_types.datatypes.create(type, name=type_name) + + composition = self._create_composition(superclass, attr, attr_type) + return composition + + def _create_composition( + self, + superclass: information.Class, + prop_def: messages.FieldDef, + property_type: ( + information.Class | t.Type[information.datatype.DataType] + ), + ) -> information.Property: + """Create composition for Capella class.""" + try: + overlap = superclass.owned_properties.by_name(prop_def.name) + superclass.owned_properties.remove(overlap) + except KeyError: + pass + composition = superclass.owned_properties.create( + name=prop_def.name, + type=property_type, + kind="COMPOSITION", + description=prop_def.description, + ) + return composition + + def _set_cardinality( + self, composition: information.Property, card: messages.Range + ) -> None: + """Set cardinality for composition in Capella model.""" + composition.min_card = capellambse.new_object( + "LiteralNumericValue", value=card.min + ) + composition.max_card = capellambse.new_object( + "LiteralNumericValue", value=card.max + ) + + def _set_range( + self, composition: information.Property, range: messages.Range | None + ) -> None: + """Set range for composition in Capella model.""" + if range: + composition.min = capellambse.new_object( + "LiteralNumericValue", value=range.min + ) + composition.max = capellambse.new_object( + "LiteralNumericValue", value=range.max + ) + + def save_changes(self) -> None: + """Save changes to Capella model.""" + self.model.save() diff --git a/capella_ros_tools/messages.py b/capella_ros_tools/messages.py new file mode 100644 index 0000000..11260b2 --- /dev/null +++ b/capella_ros_tools/messages.py @@ -0,0 +1,359 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Tool for parsing ROS messages.""" + +from __future__ import annotations + +import os +import pathlib +import re +import typing as t + +from capellambse.filehandler import abc + +PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR = "/" +COMMENT_DELIMITER = "#" +CONSTANT_SEPARATOR = "=" +UPPER_BOUND_TOKEN = "<=" + +VALID_MESSAGE_NAME_PATTERN = "[A-Z][A-Za-z0-9]*" +VALID_CONSTANT_NAME_PATTERN = "[A-Z](?:[A-Z0-9_]*[A-Z0-9])?" +VALID_REF_COMMENT_PATTERN = re.compile( + r"cf\.\s*" + rf"({VALID_MESSAGE_NAME_PATTERN})" + r"(?:,\s*" + rf"({VALID_CONSTANT_NAME_PATTERN}))?" +) + +HTML_TAG_PATTERN = re.compile("<.*?>") + + +def _cleanhtml(raw_html: str): + cleantext = re.sub(HTML_TAG_PATTERN, "", raw_html) + return cleantext + + +class Range(t.NamedTuple): + """Define range of values.""" + + min: str + max: str + + +class TypeDef: + """Type definition.""" + + def __init__( + self, + name: str, + card: Range, + range: Range | None = None, + package: str | None = None, + ): + self.name = name + self.card = card + self.range = range + self.package = package + + def __str__(self) -> str: + """Return string representation of the type.""" + out = self.name + if self.range: + out += f"[{UPPER_BOUND_TOKEN}{self.range.max}]" + elif self.card.min != self.card.max: + out += f"[{self.card.max if self.card.max != '*' else ''}]" + if self.package: + out = f"{self.package}{PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR}{out}" + return out + + @classmethod + def from_string(cls, type_str: str): + """Create a type definition from a string.""" + if type_str.endswith("]"): + name, max_card = type_str.split("[") + max_card = max_card.rstrip("]") + if max_card.startswith(UPPER_BOUND_TOKEN): + range = Range("0", max_card[len(UPPER_BOUND_TOKEN) :]) + card = Range("1", "1") + else: + range = None + max_card = max_card if max_card else "*" + card = Range("0", max_card) + else: + name = type_str + card = Range("1", "1") + range = None + + if ( + len(name_split := name.split(PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR)) + > 1 + ): + package, name = name_split + else: + package = None + + return cls(name, card, range, package) + + +class FieldDef: + """Definition of a field in a ROS message.""" + + def __init__(self, type: TypeDef, name: str, description: str) -> None: + self.type = type + self.name = name + self.description = description + + def __str__(self) -> str: + """Return string representation of the field.""" + out = f"{self.type} {self.name}" + if self.description: + out += f" # {_cleanhtml(self.description)}" + return out + + +class ConstantDef: + """Definition of a constant in a ROS message.""" + + def __init__( + self, + type: TypeDef, + name: str, + value: str, + description: str, + ) -> None: + self.type = type + self.name = name + self.value = value + self.description = description + + def __str__(self) -> str: + """Return string representation of the constant.""" + out = f"{self.type} {self.name} = {self.value}" + if self.description: + out += f" # {_cleanhtml(self.description)}" + return out + + +class EnumDef: + """Definition of an enum in a ROS message.""" + + def __init__( + self, name: str, literals: list[ConstantDef], description: str + ) -> None: + self.name = name + self.literals = literals + self.description = description + + def __str__(self) -> str: + """Return string representation of the enum.""" + out = f"\n# name: {self.name}" + if self.description: + out += f"\n# info: {_cleanhtml(self.description)}" + for literal in self.literals: + out += f"\n{literal}" + out += "\n" + return out + + +def _extract_file_level_comments( + message_string: str, +) -> t.Tuple[str, list[str]]: + """Extract comments at the beginning of the message.""" + message_string = message_string.lstrip("\n") + lines = message_string.splitlines() + file_level_comments = "" + + index = 0 + for index, line in enumerate(lines): + if not line.startswith(COMMENT_DELIMITER): + break + if line: + file_level_comments += ( + f"{'

                                  '+line.rstrip(COMMENT_DELIMITER).strip()+'

                                  '}" + ) + + file_content = lines[index:] + [""] + return file_level_comments, file_content + + +class MessageDef: + """Definition of a ROS message.""" + + def __init__( + self, + name: str, + fields: list[FieldDef], + enums: list[EnumDef], + description: str, + ) -> None: + self.name = name + self.fields = fields + self.enums = enums + self.description = description + + def __str__(self) -> str: + """Return string representation of the message.""" + out = f"\n# name: {self.name}" + if self.description: + out += f"\n# info: {_cleanhtml(self.description)}" + out += "\n" + for enum in self.enums: + out += f"{enum}" + for field in self.fields: + out += f"\n{field}" + return out + + @classmethod + def from_file(cls, file: pathlib.Path | abc.AbstractFilePath): + """Create message definition from a .msg file.""" + msg_name = file.stem + msg_string = file.read_text() + return cls.from_string(msg_name, msg_string) + + @classmethod + def from_string(cls, msg_name: str, msg_string: str): + """Create message definition from a string.""" + msg_comments, lines = _extract_file_level_comments(msg_string) + msg = cls(msg_name, [], [], msg_comments) + last_element: t.Any = msg + block_comments = "" + index = 0 + + for line in lines: + line = line.rstrip() + if not line: + # new block + if index == 0: + continue + if isinstance(last_element, ConstantDef): + last_element = msg.enums[-1] + block_comments = "" + continue + + last_index = index + index = line.find(COMMENT_DELIMITER) + if index == -1: + # no comment + comment = block_comments + elif index == 0: + # block comment + if last_index != 0: + # new block comment + block_comments = "" + block_comments += ( + f"

                                  {line[index:].rstrip(COMMENT_DELIMITER).strip()}

                                  " + ) + continue + else: + comment = ( + f"

                                  {line[index:].rstrip(COMMENT_DELIMITER).strip()}

                                  " + ) + line = line[:index].rstrip() + if not line: + # indented comment + last_element.description += comment + continue + comment = block_comments + comment + + type_string, _, rest = line.partition(" ") + name, _, value = rest.partition(CONSTANT_SEPARATOR) + name = name.rstrip() + if value: + # constant + value = value.lstrip() + if not isinstance(last_element, ConstantDef): + enum_def = EnumDef("", [], "") + msg.enums.append(enum_def) + constant_def = ConstantDef( + TypeDef.from_string(type_string), + name, + value, + comment, + ) + msg.enums[-1].literals.append(constant_def) + last_element = constant_def + else: + # field + field_def = FieldDef( + TypeDef.from_string(type_string), + name, + comment, + ) + msg.fields.append(field_def) + last_element = field_def + + for field in msg.fields: + if match := VALID_REF_COMMENT_PATTERN.match(field.description): + ref_msg_name, ref_const_name = match.groups() + if ref_const_name: + field.type.name = _get_enum_identifier( + ref_const_name.rstrip("_XXX") + ) + else: + field.type.name = ref_msg_name + + for i, enum in enumerate(msg.enums): + next_enum = msg.enums[i + 1] if i < len(msg.enums) - 1 else None + enum_value_type = enum.literals[0].type.name + if ( + next_enum + and next_enum.literals[0].type.name == enum_value_type + and (len(enum.literals) == 1 or len(next_enum.literals) == 1) + ): + enum.literals.extend(next_enum.literals) + del next_enum + + common_prefix = os.path.commonprefix( + [literal.name for literal in enum.literals] + ) + if common_prefix: + enum.name = _get_enum_identifier(common_prefix) + for literal in enum.literals: + literal.name = literal.name.removeprefix(common_prefix) + else: + enum.name = msg_name if not msg.fields else msg_name + "Type" + + name_matched = False + for field in msg.fields: + if field.name.lower() == enum.name.lower(): + field.type.name = enum.name + name_matched = True + break + + if not name_matched: + for field in msg.fields: + if field.type.name == enum_value_type: + field.type.name = enum.name + break + + return msg + + +def _get_enum_identifier(common_prefix: str) -> str: + """Get the identifier of an enum.""" + return "".join([x.capitalize() for x in common_prefix.split("_")]) + + +class MessagePkgDef: + """Definition of a ROS message package.""" + + def __init__( + self, + name: str, + messages: list[MessageDef], + packages: list[MessagePkgDef], + ): + self.name = name + self.messages = messages + self.packages = packages + + @classmethod + def from_msg_folder( + cls, pkg_name: str, msg_path: pathlib.Path | abc.AbstractFilePath + ): + """Create a message package definition from a folder.""" + out = cls(pkg_name, [], []) + for msg_file in msg_path.rglob("*.msg"): + msg_def = MessageDef.from_file(msg_file) + out.messages.append(msg_def) + return out diff --git a/capella_ros_tools/modules/capella/__init__.py b/capella_ros_tools/modules/capella/__init__.py deleted file mode 100644 index 1337ae5..0000000 --- a/capella_ros_tools/modules/capella/__init__.py +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""The capella module.""" - -import typing as t - -import capellambse - - -class EnumValue(t.NamedTuple): - """Capella enum value.""" - - type: str - name: str - value: str - description: str - - -class EnumDef(t.NamedTuple): - """Capella enum.""" - - name: str - values: list[EnumValue] - description: str - - -class ClassProperty(t.NamedTuple): - """Capella class property.""" - - type_name: str - type_pkg_name: str - name: str - min_card: str - max_card: str - description: str - - -class ClassDef(t.NamedTuple): - """Capella class.""" - - name: str - properties: list[ClassProperty] - description: str - - -class BaseCapellaModel: - """Base class for Capella model.""" - - def __init__( - self, - path_to_capella_model: t.Any, - layer: str, - ) -> None: - self.model = capellambse.MelodyModel(path_to_capella_model) - self.data = getattr(self.model, layer).data_package - self.predef_types = self.model.sa.data_package.packages.by_name( - "Predefined Types" - ).datatypes diff --git a/capella_ros_tools/modules/capella/parser.py b/capella_ros_tools/modules/capella/parser.py deleted file mode 100644 index 0091d8c..0000000 --- a/capella_ros_tools/modules/capella/parser.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Parser for Capella model.""" -import typing as t - -from . import BaseCapellaModel, ClassDef, ClassProperty, EnumDef, EnumValue - - -class CapellaModel(BaseCapellaModel): - """Capella model definition for parsing model.""" - - def get_packages(self, package: t.Any) -> set[str]: - """Get packages in Capella model.""" - return {pkg.name for pkg in package.packages} - - def get_classes(self, package: t.Any) -> list[ClassDef]: - """Get classes in Capella model.""" - classes = [] - for cls in package.classes: - props = [] - for prop in cls.owned_properties: - type_pkg_name = prop.type.parent.name - if type_pkg_name in [ - "Predefined Types", - cls.parent.name, - ]: - type_pkg_name = None - - props.append( - ClassProperty( - prop.type.name, - type_pkg_name, - prop.name, - prop.min_card.value, - prop.max_card.value, - prop.description, - ) - ) - classes.append( - ClassDef( - cls.name, - props, - cls.description, - ) - ) - return classes - - def get_enums(self, package: t.Any) -> list[EnumDef]: - """Get enums in Capella model.""" - enums = [] - for enum in package.enumerations: - values = [] - for literal in enum.owned_literals: - try: - type_name = literal.value.type.name - literal_value = literal.value.value - except AttributeError: - type_name = "" - literal_value = "" - - values.append( - EnumValue( - type_name, - literal.name, - literal_value, - literal.description, - ) - ) - enums.append( - EnumDef( - enum.name, - values, - enum.description, - ) - ) - return enums diff --git a/capella_ros_tools/modules/capella/serializer.py b/capella_ros_tools/modules/capella/serializer.py deleted file mode 100644 index 46d4b6c..0000000 --- a/capella_ros_tools/modules/capella/serializer.py +++ /dev/null @@ -1,222 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Serializer for Capella model.""" -import logging -import typing as t - -import capellambse - -from . import BaseCapellaModel, ClassDef, ClassProperty, EnumDef - -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - - -class CapellaModel(BaseCapellaModel): - """Capella model definition for serialized model.""" - - def create_packages( - self, packages: list[str], package: t.Any = None - ) -> None: - """Create packages in Capella model.""" - - if package is None: - package = self.data - - for package_name in packages: - try: - package.packages.by_name(package_name) - except KeyError: - package.packages.create("DataPkg", name=package_name) - logger.info("Created package %s.", package_name) - - def create_classes( - self, - classes: list[ClassDef], - package: t.Any = None, - ) -> list: - """Create classes in Capella model.""" - if package is None: - package = self.data - - overlap = [] - for cls in classes: - try: - overlap.append( - self.model.search("Class", below=package).by_name(cls.name) - ) - logger.info("Class %s already exists.", cls.name) - except KeyError: - package.classes.create( - name=cls.name, description=cls.description - ) - logger.info("Created class %s.", cls.name) - return overlap - - def delete_classes(self, classes: list, package: t.Any = None) -> None: - """Delete classes in Capella model.""" - if package is None: - package = self.data - - for cls in classes: - try: - package.classes.remove(cls) - logger.info("Deleted %s.", cls.name) - except ValueError: - pass - - def _find_or_create_type(self, type_name: str, package: t.Any) -> t.Any: - """Find type in Capella model.""" - try: - return self.predef_types.by_name(type_name) - except KeyError: - pass - try: - return package.datatypes.by_name(type_name) - except KeyError: - type_name_lower = type_name.lower() - if "char" in type_name_lower or "string" in type_name_lower: - type = "StringType" - elif "bool" in type_name_lower or "boolean" in type_name_lower: - type = "BooleanType" - else: - type = "NumericType" - package.datatypes.create(type, name=type_name) - return package.datatypes.by_name(type_name) - - def create_enums( - self, enums: list[EnumDef], package: t.Any = None - ) -> list: - """Create enums in Capella model.""" - if package is None: - package = self.data - - overlap = [] - for enum in enums: - try: - overlap.append( - self.model.search("Enumeration", below=package).by_name( - enum.name - ) - ) - logger.info("Enum %s already exists.", enum.name) - except KeyError: - type = package.datatypes.create( - "Enumeration", name=enum.name, description=enum.description - ) - for prop in enum.values: - property = type.owned_literals.create( - "EnumerationLiteral", - name=prop.name, - description=prop.description, - ) - property.value = capellambse.new_object( - "LiteralNumericValue", - value=prop.value, - type=self._find_or_create_type(prop.type, package), - ) - logger.info("Created enum %s.", enum.name) - - return overlap - - def delete_enums(self, enums: list, package: t.Any = None) -> None: - """Delete enums in Capella model.""" - if package is None: - package = self.data - - for enum in enums: - try: - package.datatypes.remove(enum) - logger.info("Deleted %s.", enum.name) - except ValueError: - pass - - def create_properties(self, cls: ClassDef, package: t.Any): - """Create properties for class in Capella model.""" - if package is None: - package = self.data - - superclass = package.classes.by_name(cls.name) - - for prop in cls.properties: - try: - type_package = self.data.packages.by_name(prop.type_pkg_name) - except KeyError: - type_package = package - - try: - partclass = self.model.search( - "Class", below=type_package - ).by_name(prop.type_name) - if superclass == partclass: - raise KeyError - composition = self._create_composition( - superclass, prop, partclass - ) - association = package.owned_associations.create( - navigable_members=[composition] - ) - association.members.create( - "Property", - type=superclass, - kind="ASSOCIATION", - min_card=capellambse.new_object( - "LiteralNumericValue", value="1" - ), - max_card=capellambse.new_object( - "LiteralNumericValue", value="1" - ), - ) - self._set_cardinality(composition, prop) - continue - except KeyError: - pass - - try: - type_package = package.parent.packages.by_name("types") - except KeyError: - type_package = package - try: - property_type = self.model.search( - "Enumeration", below=type_package - ).by_name(prop.type_name) - except KeyError: - property_type = self._find_or_create_type( - prop.type_name, package - ) - - attribute = self._create_composition( - superclass, prop, property_type - ) - self._set_cardinality(attribute, prop) - logger.info("Created properties for %s.", cls.name) - - def _create_composition( - self, superclass: t.Any, prop: ClassProperty, property_type: t.Any - ): - """Create composition in Capella model.""" - try: - overlap = superclass.owned_properties.by_name(prop.name) - superclass.owned_properties.remove(overlap) - except KeyError: - pass - composition = superclass.owned_properties.create( - name=prop.name, - type=property_type, - kind="COMPOSITION", - description=prop.description, - ) - return composition - - def _set_cardinality(self, composition: t.Any, prop: ClassProperty): - """Set cardinality for composition in Capella model.""" - composition.min_card = capellambse.new_object( - "LiteralNumericValue", value=prop.min_card - ) - composition.max_card = capellambse.new_object( - "LiteralNumericValue", value=prop.max_card - ) - - def save_changes(self) -> None: - """Save changes to Capella model.""" - self.model.save() diff --git a/capella_ros_tools/modules/messages/__init__.py b/capella_ros_tools/modules/messages/__init__.py deleted file mode 100644 index 74e18ef..0000000 --- a/capella_ros_tools/modules/messages/__init__.py +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""The messages module.""" - -import typing as t - - -class BaseTypeDef: - """Base type definition for a field or constant in a message.""" - - def __init__( - self, - name: str, - array_size: str | None = None, - pkg_name: str | None = None, - ) -> None: - self.name = name - """Name of the type.""" - self.array_size = array_size - """Max size of the array. - - None: type is not an array - """ - self.pkg_name = pkg_name - """Name of the package the type is defined in. - - None: type is a primitive type or - defined in the same package as the message - """ - - -class FieldDef: - """Definition of a field.""" - - def __init__(self, type: t.Any, name: str, annotations: list[str]) -> None: - self.type = type - self.name = name - self.annotations = annotations - - -class ConstantDef: - """Definition of a constant.""" - - def __init__( - self, - type: t.Any, - name: str, - value: str, - annotations: list[str], - ) -> None: - self.type = type - self.name = name - self.value = value - self.annotations = annotations - - -class EnumDef: - """Definition of an enum.""" - - def __init__( - self, name: str, values: list[ConstantDef], annotations: list[str] - ) -> None: - self.name = name - self.values = values - self.annotations = annotations - - -class BaseMessageDef: - """Base definition of a message.""" - - def __init__( - self, - name: str, - fields: list[FieldDef], - enums: list[EnumDef], - annotations: list[str], - ) -> None: - self.name = name - self.fields = fields - self.enums = enums - self.annotations = annotations - - def _repr_html_(self): - fragments = [] - fragments.append( - f"

                                  {self.name}

                                  " - + "
                                  ".join(self.annotations) - + "

                                  Fields

                                    " - ) - for field in self.fields: - fragments.append( - f"
                                  1. {field.type.pkg_name+'/' if field.type.pkg_name else ''}" - f"{field.type.name}{'[]' if field.type.array_size == '*' else f'[{field.type.array_size}]' if field.type.array_size else ''} {field.name}
                                    " - + "
                                    ".join(field.annotations) - + "
                                  2. " - ) - fragments.append("

                                  Enums

                                    ") - for enum in self.enums: - fragments.append( - f"
                                  1. {enum.name}
                                    " - + "
                                    ".join(enum.annotations) - + "
                                      " - ) - for value in enum.values: - fragments.append( - f"
                                    • {value.type.name} {value.name} = {value.value}
                                      " - + "
                                      ".join(value.annotations) - + "
                                    • " - ) - fragments.append("
                                  2. ") - fragments.append("
                                  ") - - return "".join(fragments) - - -class BaseMessagePkgDef: - """Base definition of a message package.""" - - def __init__(self, name: str, messages: list, packages: list): - self.name = name - self.messages = messages - self.packages = packages - - def _repr_html_(self): - return ( - f"

                                  {self.name}

                                  Messages

                                    " - f"{''.join([f'
                                  1. {msg.name}
                                  2. ' for msg in self.messages])}" - "

                                  Packages

                                    " - f"{''.join([f'
                                  1. {pkg.name}
                                  2. ' for pkg in self.packages])}" - "
                                  " - ) diff --git a/capella_ros_tools/modules/messages/parser.py b/capella_ros_tools/modules/messages/parser.py deleted file mode 100644 index 12764ae..0000000 --- a/capella_ros_tools/modules/messages/parser.py +++ /dev/null @@ -1,326 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Parser for IDL messages.""" -import os -import re -import typing as t - -from . import ( - BaseMessageDef, - BaseMessagePkgDef, - BaseTypeDef, - ConstantDef, - EnumDef, - FieldDef, -) - -PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR = "/" -COMMENT_DELIMITER = "#" -CONSTANT_SEPARATOR = "=" -ARRAY_UPPER_BOUND_TOKEN = "<=" -STRING_UPPER_BOUND_TOKEN = "<=" - - -PRIMITIVE_TYPES = [ - "bool", - "byte", - "char", - "float32", - "float64", - "int8", - "uint8", - "int16", - "uint16", - "int32", - "uint32", - "int64", - "uint64", - "string", - "wstring", -] - - -VALID_MESSAGE_NAME_PATTERN = "[A-Z][A-Za-z0-9]*" -VALID_CONSTANT_NAME_PATTERN = "[A-Z](?:[A-Z0-9_]*[A-Z0-9])?" -VALID_REF_COMMENT_PATTERN = re.compile( - r"cf\.\s*" - rf"({VALID_MESSAGE_NAME_PATTERN})" - r"(?:,\s*" - rf"({VALID_CONSTANT_NAME_PATTERN}))?" -) - - -class TypeDef(BaseTypeDef): - """Type definition for a field or constant in a parsed message.""" - - def __init__(self, type_string: str) -> None: - super().__init__(type_string) - - if type_string[-1] == "]": - # is array - index = type_string.rindex("[") - array_size_string = type_string[index + 1 : -1] - if array_size_string: - self.array_size = array_size_string.lstrip( - ARRAY_UPPER_BOUND_TOKEN - ) - else: - # dynamic array - self.array_size = "*" - - type_string = type_string[:index] - - type_string = type_string.split(STRING_UPPER_BOUND_TOKEN, 1)[0] - if type_string not in PRIMITIVE_TYPES: - parts = type_string.split(PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR, 1) - if len(parts) == 2: - # type string contains the package name - self.pkg_name = parts[0] - type_string = parts[1] - - self.name = type_string - - -def _extract_file_level_comments(message_string: str): - """Extract comments at the beginning of the message.""" - lines = message_string.splitlines() - if lines and not lines[0].strip(): - lines = lines[1:] - - for index, line in enumerate(lines): - if not line.startswith(COMMENT_DELIMITER): - break - else: - index = 0 - - file_content = lines[index:] + [""] - file_level_comments = lines[:index] - return file_level_comments, file_content - - -class MessageDef(BaseMessageDef): - """Definition of a message for parsed messages.""" - - @classmethod - def from_msg_file(cls, msg_file: t.Any): - """Create message definition from a .msg file.""" - msg_name = msg_file.stem - message_string = msg_file.read_text() - return cls.from_msg_string(msg_name, message_string) - - @classmethod - def from_msg_string(cls, msg_name: str, message_string: str): - """Create message definition from a message string.""" - message_comments, lines = _extract_file_level_comments(message_string) - msg = cls(msg_name, [], [], message_comments) - last_element: t.Any = msg - current_comments: list = [] - last_index = index = -1 - - for line in lines: - line = line.rstrip() - - if not line: - # new block - if last_index == index == 0: - # comments were not used - msg.annotations += current_comments - current_comments = [] - if isinstance(last_element, ConstantDef): - last_element = msg.enums[-1] - continue - - last_index = index - index = line.find(COMMENT_DELIMITER) - - if index != -1: - # line has a comment - comment = line[index:] - line = line[:index] - line_stripped = line.strip() - if line and not line_stripped: - # indented comment line - # append to previous field/constant if available or ignore - last_element.annotations.append(comment) - continue - line = line_stripped - if not line: - # block comment - if last_index != index: - # first line of block comment - current_comments = [] - # save "unused" comments for next block - current_comments.append(comment) - continue - else: - comment = "" - - type_string, _, rest = line.partition(" ") - rest = rest.lstrip() - name, _, value = rest.partition(CONSTANT_SEPARATOR) - name = name.rstrip() - if value: - # line contains a constant - value = value.lstrip() - if not isinstance(last_element, ConstantDef): - msg.enums.append(EnumDef("", [], [])) - msg.enums[-1].values.append( - ConstantDef(TypeDef(type_string), name, value, [comment]) - ) - last_element = msg.enums[-1].values[-1] - msg.enums[-1].annotations += current_comments - else: - # line contains a field - msg.fields.append( - FieldDef( - TypeDef(type_string), - name, - current_comments + [comment], - ) - ) - last_element = msg.fields[-1] - - # condense and rename enums - _process_enums(msg) - - # condense comment lines, extract special annotations - _process_comments(msg) - for field in msg.fields: - _process_comments(field) - for enum in msg.enums: - _process_comments(enum) - for constant in enum.values: - _process_comments(constant) - return msg - - -def _get_enum_identifier(common_prefix: str) -> str: - return "".join([x.capitalize() for x in common_prefix.split("_")]) - - -def _rename_enum(enum: EnumDef): - common_prefix = os.path.commonprefix([v.name for v in enum.values]) - for v in enum.values: - v.name = v.name.removeprefix(common_prefix) - - enum.name = _get_enum_identifier(common_prefix) - - -def _process_enums(msg): - """Condense enums and rename them if necessary.""" - if len(msg.enums) == 0: - return - - for enum in msg.enums: - _rename_enum(enum) - - to_delete = [] - for i, enum in enumerate(msg.enums): - # combine enums with the same name or have just 1 value - if enum in to_delete: - continue - - try: - if len(enum.values) == 1: - msg.enums[i + 1].values = enum.values + msg.enums[i + 1].values - to_delete.append(enum) - continue - except IndexError: - pass - - indeces = [ - i - for i, other_enum in enumerate(msg.enums) - if other_enum.name is enum.name and other_enum is not enum - ] - for i in indeces: - to_delete.append(msg.enums[i]) - for value in msg.enums[i].values: - enum.values.append( - ConstantDef( - TypeDef(value.type.name), - value.name, - value.value, - value.annotations.copy(), - ) - ) - - for enum in to_delete: - msg.enums.remove(enum) - - for enum in msg.enums: - for field in msg.fields: - if enum.name == _get_enum_identifier(field.name): - # enum name is the same as the field name - field.type.name = enum.name - return - - if field.type.name == enum.values[0].type.name: - # enum type is the same as the field type - field.type.name = msg.name + _get_enum_identifier(field.name) - enum.name = field.type.name - return - - if not enum.name or len(msg.enums) == 1: - enum.name = msg.name + "Type" if msg.fields else msg.name - - -def _process_comments(instance): - """Condense comment lines and extract special annotations.""" - lines = instance.annotations - if not lines: - return - # remove empty lines - lines = [line for line in lines if line] - - instance.annotations = lines - - if ( - not isinstance(instance, FieldDef) - or instance.type.pkg_name - or instance.type.name not in PRIMITIVE_TYPES - ): - return - comment = "\n".join(lines) - match = VALID_REF_COMMENT_PATTERN.search(comment) - if match: - # reference to enum - ref_file_name, ref_common_prefix = match.groups() - instance.type.name = ( - _get_enum_identifier( - ref_common_prefix[:-4] - if ref_common_prefix.endswith("_XXX") - else ref_common_prefix - ) - if ref_common_prefix - else ref_file_name - ) - - -class MessagePkgDef(BaseMessagePkgDef): - """Definition of a message package for parsed messages.""" - - @classmethod - def from_msg_folder(cls, package_name: str, msg_pkg_dir: t.Any): - """Create MessagePkgDef from a folder of .msg files.""" - msg_pkg = cls(package_name, [], []) - for msg_file in msg_pkg_dir.iterdir(): - if msg_file.suffix == ".msg": - msg_pkg.messages.append(MessageDef.from_msg_file(msg_file)) - elif msg_file.is_dir(): - msg_pkg.packages.append( - cls.from_msg_folder(msg_file.name, msg_file) - ) - return msg_pkg - - @classmethod - def from_pkg_folder(cls, root_dir: t.Any, root_dir_name: str = "root"): - """Create MessagePkgDef from a folder of message folders.""" - out = cls("", [], []) - for dir in root_dir.rglob("msg"): - out.packages.append( - MessagePkgDef.from_msg_folder( - dir.parent.name or root_dir_name, dir - ) - ) - return out diff --git a/capella_ros_tools/modules/messages/serializer.py b/capella_ros_tools/modules/messages/serializer.py deleted file mode 100644 index 6f5a18e..0000000 --- a/capella_ros_tools/modules/messages/serializer.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Serializer for IDL messages.""" -from pathlib import Path - -from capella_ros_tools.modules.messages import ( - BaseMessageDef, - BaseMessagePkgDef, -) - - -class MessageDef(BaseMessageDef): - """Definition of a message for serialized messages.""" - - def to_msg_file(self, msg_file: Path): - """Write message to file.""" - msg_file.write_text(self.to_msg_string()) - - def to_msg_string(self) -> str: - """Convert message to string.""" - msg_string = "\n".join(self.annotations) + "\n\n" - for enum in self.enums: - msg_string += ( - f"# name: {enum.name}" + "\n".join(enum.annotations) + "\n" - ) - msg_string += ( - "\n".join( - [ - f"{value.type.name} {value.name} = {value.value}" - + "\n".join(self.annotations) - for value in enum.values - ] - ) - + "\n\n" - ) - - for field in self.fields: - msg_string += ( - f"{(field.type.pkg_name + '/') if field.type.pkg_name else ''}" - ) - msg_string += f"{field.type.name}" - if field.type.array_size == "*": - msg_string += "[]" - elif field.type.array_size: - msg_string += f"[{field.type.array_size}]" - msg_string += ( - f" {field.name}" + "\n".join(self.annotations) + "\n\n" - ) - - return msg_string - - -class MessagePkgDef(BaseMessagePkgDef): - """Definition of message package for serialized messages.""" - - def to_msg_folder(self, msg_pkg_dir: Path): - """Write messages and packages to a folder of .msg files.""" - msg_pkg_dir.mkdir(parents=True, exist_ok=True) - for msg in self.messages: - msg.to_msg_file(msg_pkg_dir / f"{msg.name}.msg") - for pkg in self.packages: - pkg.to_msg_folder(msg_pkg_dir / pkg.name) - - def to_pkg_folder(self, pkg_dir: Path): - """Write packages to a folder of message folders.""" - pkg_dir.mkdir(parents=True, exist_ok=True) - for pkg in self.packages: - pkg.to_msg_folder(pkg_dir / pkg.name / "msg") diff --git a/capella_ros_tools/scripts/__init__.py b/capella_ros_tools/scripts/__init__.py index a999ec1..c4eb8e6 100644 --- a/capella_ros_tools/scripts/__init__.py +++ b/capella_ros_tools/scripts/__init__.py @@ -1,3 +1,3 @@ # Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""The scripts package.""" +"""Conversion scripts for Capella ROS Tools.""" diff --git a/capella_ros_tools/scripts/capella2msg.py b/capella_ros_tools/scripts/capella2msg.py deleted file mode 100644 index 6cfeed4..0000000 --- a/capella_ros_tools/scripts/capella2msg.py +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Convert Capella data to ROS messages.""" -import typing as t - -from capella_ros_tools.modules.capella.parser import CapellaModel -from capella_ros_tools.modules.messages import ( - BaseTypeDef, - ConstantDef, - EnumDef, - FieldDef, -) -from capella_ros_tools.modules.messages.serializer import ( - MessageDef, - MessagePkgDef, -) - -CAPELLA_TYPE_TO_MSG = { - "Boolean": "bool", - "Byte": "byte", - "Char": "char", - "Short": "int16", - "UnsignedShort": "uint16", - "Integer": "int32", - "UnsignedInteger": "uint32", - "Long": "int64", - "UnsignedLong": "uint64", - "LongLong": "int128", - "UnsignedLongLong": "uint128", - "Float": "float32", - "Double": "float64", - "LongDouble": "float128", - "String": "string", -} - - -class Converter: - """Converter class for converting Capella data to ROS messages.""" - - def __init__( - self, - msg_path: t.Any, - capella_path: t.Any, - layer: str, - ) -> None: - self.msg_path = msg_path - self.msgs = MessagePkgDef(msg_path.stem, [], []) - self.model = CapellaModel(capella_path, layer) - - def _add_package(self, current_root: t.Any) -> MessagePkgDef: - current_pkg_def = MessagePkgDef(current_root.name, [], []) - - for cls in self.model.get_classes(current_root): - fields = [] - for prop in cls.properties: - bt_name = CAPELLA_TYPE_TO_MSG.get( - prop.type_name, prop.type_name - ) - bt_size = None if prop.max_card == "1" else prop.max_card - if prop.type_pkg_name != current_pkg_def.name: - bt_pkg = prop.type_pkg_name - else: - bt_pkg = None - fields.append( - FieldDef( - BaseTypeDef(bt_name, bt_size, bt_pkg), - prop.name, - prop.description.split("\n"), - ) - ) - annotations = cls.description.split("\n") - msg_def = MessageDef(cls.name, fields, [], annotations) - current_pkg_def.messages.append(msg_def) - - for enum in self.model.get_enums(current_root): - values = [] - for i, value in enumerate(enum.values): - bt_name = CAPELLA_TYPE_TO_MSG.get(value.type, "uint8") - values.append( - ConstantDef( - BaseTypeDef(bt_name), - value.name, - value.value or str(i), - value.description.split("\n"), - ) - ) - enum_def = EnumDef(enum.name, values, []) - annotations = enum.description.split("\n") - msg_def = MessageDef(enum.name, [], [enum_def], annotations) - current_pkg_def.messages.append(msg_def) - - for pkg_name in self.model.get_packages(current_root): - new_root = current_root.packages.by_name(pkg_name) - current_pkg_def.packages.append(self._add_package(new_root)) - - return current_pkg_def - - def convert(self) -> None: - """Start conversion.""" - self.msgs.packages.append(self._add_package(self.model.data)) - self.msgs.to_msg_folder(self.msg_path) diff --git a/capella_ros_tools/scripts/export_capella.py b/capella_ros_tools/scripts/export_capella.py new file mode 100644 index 0000000..ea8227e --- /dev/null +++ b/capella_ros_tools/scripts/export_capella.py @@ -0,0 +1,78 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Tool for exporting a Capella data package to ROS messages.""" +import logging +import pathlib + +from capellambse.model.crosslayer import information + +from capella_ros_tools import capella, messages + +logger = logging.getLogger(__name__) + + +class Exporter: + """Class for exporting a Capella data package as ROS messages.""" + + def __init__( + self, capella_path: str, layer: str, output_path: pathlib.Path + ): + self.capella = capella.CapellaDataPackage(capella_path, layer) + output_path.mkdir(parents=True, exist_ok=True) + self.msg_path = output_path + + def _handle_pkg( + self, + current_pkg: information.DataPkg, + current_path: pathlib.Path, + ): + for cls_obj in current_pkg.classes: + cls_def = messages.MessageDef( + cls_obj.name, [], [], cls_obj.description + ) + for prop_obj in cls_obj.owned_properties: + type_def = messages.TypeDef( + prop_obj.type.name, + messages.Range( + prop_obj.min_card.value, prop_obj.max_card.value + ), + ) + prop_def = messages.FieldDef( + type_def, prop_obj.name, prop_obj.description + ) + cls_def.fields.append(prop_def) + (current_path / f"{cls_obj.name}.msg").write_text(str(cls_def)) + + for enum_obj in current_pkg.enumerations: + enum_def = messages.EnumDef( + enum_obj.name, [], enum_obj.description + ) + for i, lit_obj in enumerate(enum_obj.owned_literals): + try: + type_name = lit_obj.value.type.name + except AttributeError: + type_name = "uint8" + try: + literal_value = lit_obj.value.value + except AttributeError: + literal_value = i + type_def = messages.TypeDef( + type_name, messages.Range("1", "1") + ) + lit_def = messages.ConstantDef( + type_def, + lit_obj.name, + literal_value, + lit_obj.description, + ) + enum_def.literals.append(lit_def) + (current_path / f"{enum_obj.name}.msg").write_text(str(enum_def)) + + for pkg_obj in current_pkg.packages: + pkg_path = current_path / pkg_obj.name + pkg_path.mkdir(parents=True, exist_ok=True) + self._handle_pkg(pkg_obj, pkg_path) + + def __call__(self): + """Export the Capella data package as ROS messages.""" + self._handle_pkg(self.capella.data_package, self.msg_path) diff --git a/capella_ros_tools/scripts/import_msgs.py b/capella_ros_tools/scripts/import_msgs.py new file mode 100644 index 0000000..8c311d0 --- /dev/null +++ b/capella_ros_tools/scripts/import_msgs.py @@ -0,0 +1,186 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 +"""Tool for importing ROS messages to a Capella data package.""" + +import logging + +import click +from capellambse.filehandler import abc +from capellambse.model.crosslayer import information + +from capella_ros_tools import capella, messages + +ROS2_INTERFACES = { + "common_interfaces": "git+https://github.com/ros2/common_interfaces", + "rcl_interfaces": "git+https://github.com/ros2/rcl_interfaces", + "unique_identifier_msgs": "git+https://github.com" + "/ros2/unique_identifier_msgs", +} + + +logger = logging.getLogger(__name__) + + +class Importer: + """Class for importing ROS messages to a Capella data package.""" + + def __init__( + self, + msg_path: abc.AbstractFilePath, + capella_path: str, + layer: str, + action: str, + no_deps: bool, + ): + pkg_name = msg_path.stem if msg_path.stem else "ros_msgs" + pkg_def = messages.MessagePkgDef.from_msg_folder(pkg_name, msg_path) + + self.messages = messages.MessagePkgDef("", [], [pkg_def]) + self.capella = capella.CapellaDataPackage(capella_path, layer) + self.action = action + + if no_deps: + return + from capellambse import filehandler + + for interface_name, interface_url in ROS2_INTERFACES.items(): + interface_path = filehandler.get_filehandler(interface_url).rootdir + for dir in interface_path.rglob("msg"): + pkg_name = dir.parent.name or interface_name + pkg_def = messages.MessagePkgDef.from_msg_folder(pkg_name, dir) + self.messages.packages.append(pkg_def) + + def _handle_objects_skip( + self, + elem_def_list: list, + attr_name: str, + current_root: information.DataPkg, + ): + for elem_def in elem_def_list: + getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ) + + def _handle_objects_replace( + self, + elem_def_list: list, + attr_name: str, + current_root: information.DataPkg, + ): + for elem_def in elem_def_list: + if elem_obj := getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ): + getattr(self.capella, f"remove_{attr_name}")( + elem_obj, current_root + ) + getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ) + + def _handle_objects_abort( + self, + elem_def_list: list, + attr_name: str, + current_root: information.DataPkg, + ): + for elem_def in elem_def_list: + if getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ): + raise click.Abort() + + def _handle_objects_ask( + self, + elem_def_list: list, + attr_name: str, + current_root: information.DataPkg, + ): + for i, elem_def in enumerate(elem_def_list): + if elem_obj := getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ): + confirm = click.prompt( + f"{elem_def.name} already exists. Overwrite? [y]es / [Y]es to all / [n]o / [N]o to all", + type=click.Choice( + ["y", "Y", "n", "N"], + case_sensitive=True, + ), + ) + if confirm == "n": + continue + elif confirm == "N": + for elem_def in elem_def_list[(i + 1) :]: + getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ) + self.action = "skip" + break + elif confirm == "y": + getattr(self.capella, f"remove_{attr_name}")( + elem_obj, current_root + ) + getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ) + elif confirm == "Y": + for elem_def in elem_def_list[i:]: + if elem_obj := getattr( + self.capella, f"create_{attr_name}" + )(elem_def, current_root): + getattr(self.capella, f"remove_{attr_name}")( + elem_obj, current_root + ) + getattr(self.capella, f"create_{attr_name}")( + elem_def, current_root + ) + self.action = "replace" + break + + def _handle_objects( + self, + current_pkg_def: messages.MessagePkgDef, + current_root: information.DataPkg, + ): + elem_types = [ + ("package", current_pkg_def.packages), + ("class", current_pkg_def.messages), + ( + "enum", + [ + enum + for msg in current_pkg_def.messages + for enum in msg.enums + ], + ), + ] + + for elem_type, elem_def_list in elem_types: + getattr(self, f"_handle_objects_{self.action}")( + elem_def_list, elem_type, current_root + ) + + for new_pkg_def in current_pkg_def.packages: + new_root = current_root.packages.by_name(new_pkg_def.name) + self._handle_objects(new_pkg_def, new_root) + + def _handle_relations( + self, + current_pkg_def: messages.MessagePkgDef, + current_root: information.DataPkg, + ): + for msg in current_pkg_def.messages: + self.capella.create_properties(msg, current_root) + + for new_pkg_def in current_pkg_def.packages: + new_root = current_root.packages.by_name(new_pkg_def.name) + self._handle_relations(new_pkg_def, new_root) + + def __call__(self): + """Convert JSON to Capella data package.""" + current_root = self.capella.data_package + + self._handle_objects(self.messages, current_root) + self._handle_relations(self.messages, current_root) + + self.capella.save_changes() diff --git a/capella_ros_tools/scripts/msg2capella.py b/capella_ros_tools/scripts/msg2capella.py deleted file mode 100644 index 7792b01..0000000 --- a/capella_ros_tools/scripts/msg2capella.py +++ /dev/null @@ -1,192 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Import ROS messages into Capella.""" -import typing as t - -import capellambse -import click - -from capella_ros_tools.modules.capella import ( - ClassDef, - ClassProperty, - EnumDef, - EnumValue, -) -from capella_ros_tools.modules.capella.serializer import CapellaModel -from capella_ros_tools.modules.messages.parser import MessagePkgDef - -ROS2_INTERFACES = { - "common_interfaces": "git+https://github.com/ros2/common_interfaces", - "rcl_interfaces": "git+https://github.com/ros2/rcl_interfaces", - "unique_identifier_msgs": "git+https://github.com" - "/ros2/unique_identifier_msgs", -} - -MSG_TYPE_TO_CAPELLA = { - "bool": "Boolean", - "byte": "Byte", - "char": "Char", - "string": "String", -} - - -class Converter: - """Converter class for importing ROS messages into Capella.""" - - def __init__( - self, - msg_path: t.Any, - capella_path: t.Any, - layer: str, - action: str, - no_deps: bool, - ) -> None: - self.msgs = MessagePkgDef.from_pkg_folder(msg_path) - self.model = CapellaModel(capella_path, layer) - self.action = action - self.no_deps = no_deps - - def _resolve_overlap(self, overlap, deletion_func, current_root): - if not overlap or self.action == "skip": - return - if self.action == "abort": - click.echo( - f"{len(overlap)} elements already exist." - " Use --exists-action=replace to replace." - ) - raise click.Abort() - elif self.action == "replace": - deletion_func(overlap, current_root) - elif self.action == "ask": - for i, cls in enumerate(overlap): - confirm = click.prompt( - f"{cls.name} already exists. Overwrite? [y]es / [Y]es to all / [n]o / [N]o to all", - type=click.Choice( - ["y", "Y", "n", "N"], - case_sensitive=True, - ), - ) - if confirm == "n": - continue - elif confirm == "N": - self.action = "k" - return - elif confirm == "Y": - deletion_func(overlap[i:], current_root) - self.action = "o" - return - elif confirm == "y": - deletion_func([cls], current_root) - - def _add_objects( - self, current_pkg_def: MessagePkgDef, current_root: t.Any - ): - packages = [p.name for p in current_pkg_def.packages] - self.model.create_packages(packages, current_root) - - classes = [] - enums = [] - for msg in current_pkg_def.messages: - if msg.fields: - class_description = "\n".join(msg.annotations) - class_def = ClassDef( - msg.name, - [], - class_description, - ) - classes.append(class_def) - - for enum in msg.enums: - if not enum.values: - continue - values = [] - for value in enum.values: - value_type = MSG_TYPE_TO_CAPELLA.get( - value.type.name, value.type.name - ) - value_description = "\n".join(value.annotations) - value_def = EnumValue( - value_type, - value.name, - value.value, - value_description, - ) - values.append(value_def) - enum_description = "\n".join(enum.annotations) - enum_def = EnumDef( - enum.name, - values, - enum_description, - ) - enums.append(enum_def) - - overlap = self.model.create_enums(enums, current_root) - self._resolve_overlap(overlap, self.model.delete_enums, current_root) - self.model.create_enums(enums, current_root) - - overlap = self.model.create_classes(classes, current_root) - self._resolve_overlap(overlap, self.model.delete_classes, current_root) - self.model.create_classes(classes, current_root) - - for new_pkg_def in current_pkg_def.packages: - new_root = current_root.packages.by_name(new_pkg_def.name) - self._add_objects(new_pkg_def, new_root) - - def _add_relations(self, current_pkg_def, current_root): - for msg in current_pkg_def.messages: - if not msg.fields: - continue - properties = [] - for field in msg.fields: - field_type = MSG_TYPE_TO_CAPELLA.get( - field.type.name, field.type.name - ) - field_min = "0" if field.type.array_size else "1" - field_max = field.type.array_size or "1" - field_description = "\n".join(field.annotations) - property_def = ClassProperty( - field_type, - field.type.pkg_name, - field.name, - field_min, - field_max, - field_description, - ) - properties.append(property_def) - class_def = ClassDef( - msg.name, - properties, - "", - ) - self.model.create_properties(class_def, current_root) - - for new_pkg_def in current_pkg_def.packages: - new_root = current_root.packages.by_name(new_pkg_def.name) - self._add_relations(new_pkg_def, new_root) - - def convert(self) -> None: - """Start conversion.""" - current_root = self.model.data - - if not self.no_deps: - imported_ros2_packages = [] - for interface_name, interface_url in ROS2_INTERFACES.items(): - interface_path = capellambse.filehandler.get_filehandler( - interface_url - ).rootdir - interface_pkg_def = MessagePkgDef.from_pkg_folder( - interface_path, interface_name - ) - interface_pkg_def.name = ( - interface_pkg_def.name or interface_name - ) - imported_ros2_packages.append(interface_pkg_def) - self._add_objects(interface_pkg_def, current_root) - - for interface_pkg_def in imported_ros2_packages: - self._add_relations(interface_pkg_def, current_root) - - self._add_objects(self.msgs, current_root) - self._add_relations(self.msgs, current_root) - - self.model.save_changes() diff --git a/capella_ros_tools/snapshot/__init__.py b/capella_ros_tools/snapshot/__init__.py deleted file mode 100644 index 12e5d94..0000000 --- a/capella_ros_tools/snapshot/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""The snapshot package.""" diff --git a/capella_ros_tools/modules/__init__.py b/capella_ros_tools/viewer/__init__.py similarity index 75% rename from capella_ros_tools/modules/__init__.py rename to capella_ros_tools/viewer/__init__.py index c253554..248637b 100644 --- a/capella_ros_tools/modules/__init__.py +++ b/capella_ros_tools/viewer/__init__.py @@ -1,3 +1,3 @@ # Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""The modules package.""" +"""The viewer package.""" diff --git a/capella_ros_tools/snapshot/app.py b/capella_ros_tools/viewer/app.py similarity index 63% rename from capella_ros_tools/snapshot/app.py rename to capella_ros_tools/viewer/app.py index 3cc5db0..46165ca 100644 --- a/capella_ros_tools/snapshot/app.py +++ b/capella_ros_tools/viewer/app.py @@ -1,24 +1,24 @@ # Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -"""FastAPI app for viewing current snapshot of a Capella model.""" +"""Web view of Capella data package.""" +import pathlib import typing as t -from pathlib import Path +import fastapi import uvicorn -from fastapi import FastAPI, Request -from fastapi.responses import HTMLResponse -from fastapi.staticfiles import StaticFiles -from fastapi.templating import Jinja2Templates +from fastapi import responses, staticfiles, templating -PATH = Path(__file__).parent +PATH = pathlib.Path(__file__).parent -app = FastAPI(title="Capella ROS Tools") +app = fastapi.FastAPI(title="Capella JSON Tools") app.mount( - "/static", StaticFiles(directory=PATH.joinpath("static")), name="static" + "/static", + staticfiles.StaticFiles(directory=PATH.joinpath("static")), + name="static", ) -templates = Jinja2Templates(directory=PATH.joinpath("templates")) +templates = templating.Jinja2Templates(directory=PATH.joinpath("templates")) def get_type(xtype: str) -> str: @@ -29,8 +29,8 @@ def get_type(xtype: str) -> str: templates.env.globals.update(get_type=get_type) -@app.get("/", response_class=HTMLResponse) -def root(request: Request): +@app.get("/", response_class=responses.HTMLResponse) +def root(request: fastapi.Request): """Display root data package.""" element = app.state.data_package context = { @@ -42,8 +42,8 @@ def root(request: Request): return response -@app.get("/{type}/{uuid}", response_class=HTMLResponse) -def view(request: Request, type: str, uuid: str): +@app.get("/{type}/{uuid}.html", response_class=responses.HTMLResponse) +def view(request: fastapi.Request, type: str, uuid: str): """Display element by uuid.""" element = app.state.model.by_uuid(uuid) template = type + ".html" diff --git a/capella_ros_tools/snapshot/static/icons/favicon.ico b/capella_ros_tools/viewer/static/icons/favicon.ico similarity index 100% rename from capella_ros_tools/snapshot/static/icons/favicon.ico rename to capella_ros_tools/viewer/static/icons/favicon.ico diff --git a/capella_ros_tools/snapshot/static/icons/favicon.ico.license b/capella_ros_tools/viewer/static/icons/favicon.ico.license similarity index 100% rename from capella_ros_tools/snapshot/static/icons/favicon.ico.license rename to capella_ros_tools/viewer/static/icons/favicon.ico.license diff --git a/capella_ros_tools/snapshot/static/styles.css b/capella_ros_tools/viewer/static/styles.css similarity index 95% rename from capella_ros_tools/snapshot/static/styles.css rename to capella_ros_tools/viewer/static/styles.css index a776e49..e82af9e 100644 --- a/capella_ros_tools/snapshot/static/styles.css +++ b/capella_ros_tools/viewer/static/styles.css @@ -77,17 +77,20 @@ a { a:hover { border-bottom-color: var(--color-accent-hover); } +strong { + font-weight: 500; +} +.description { + display: flex; + flex-direction: column; +} -span { +.description > p { white-space: pre-wrap; display: inline-flex; opacity: 0.75; } -strong { - font-weight: 500; -} - main { padding: 0.5rem 1rem; } @@ -112,13 +115,16 @@ aside > div { table { border-spacing: 0 1.5rem; + table-layout: fixed; + width: 100%; } + tr > td:first-child { font-weight: bold; text-align: right; padding-right: 2rem; white-space: nowrap; - width: 1%; + width: 8em; } tr > td:last-child { @@ -131,7 +137,6 @@ ol { } ol > li { list-style: none; - display: flex; } ol > li:before { content: "[" counter(list) "] "; diff --git a/capella_ros_tools/snapshot/templates/class.html b/capella_ros_tools/viewer/templates/class.html similarity index 73% rename from capella_ros_tools/snapshot/templates/class.html rename to capella_ros_tools/viewer/templates/class.html index 247fefe..ad9acc2 100644 --- a/capella_ros_tools/snapshot/templates/class.html +++ b/capella_ros_tools/viewer/templates/class.html @@ -9,17 +9,13 @@ {{ element.name }} - Overview - - +

                                  - {{ element.name }} - ({{ element.xtype }}) + {{ element.name }} + {{ element.xtype }}

                                  @@ -32,9 +28,7 @@

                                  - + @@ -42,11 +36,11 @@

                                    {% for prop in element.properties %}
                                  1. -

                                    - Property "{{ prop.name - }}": {{prop.type.name}} - {{ prop.description }} -

                                    + Property "{{ prop.name }}": + {{prop.type.name}} + {{ prop.description }}
                                  2. {% endfor %}
                                  @@ -91,8 +85,6 @@

                                  let groupedNodes = []; svgContainer.selectAll(".Box").each(function () { - var depElements = d3.select(this).selectAll("g"); - if (groupedNodes.includes(this.id)) { return; } @@ -100,22 +92,18 @@

                                  var contextGroup = svgContainer.append("g"); contextGroup.attr("class", "contextGroup"); - - if (depElements.nodes().length == 0) { + this.classList.forEach((id) => { + let uuid = id.replace("context-", ""); + if (id == uuid) { + // Not a context class + return; + } + groupedNodes.push(uuid); + let escapedUUID = escapeUUIDForCSSSelector(uuid); contextGroup .node() - .appendChild(d3.select(this).node()); - } else { - depElements.nodes()[0].classList.forEach((id) => { - groupedNodes.push(id); - let escapedUUID = escapeUUIDForCSSSelector(id); - contextGroup - .node() - .appendChild( - d3.select("#" + escapedUUID).node() - ); - }); - } + .appendChild(d3.select("#" + escapedUUID).node()); + }); }); const draggableElements = @@ -123,16 +111,9 @@

                                  // Zoom and pan svg.call( - d3 - .zoom() - .extent([ - [0, 0], - [svg.node().clientWidth, svg.node().clientHeight], - ]) - .scaleExtent([0.1, 10]) - .on("zoom", (event) => { - svgContainer.attr("transform", event.transform); - }) + d3.zoom().on("zoom", (event) => { + svgContainer.attr("transform", event.transform); + }) ); // Create an array of data with the same length as your selection diff --git a/capella_ros_tools/snapshot/templates/enum.html b/capella_ros_tools/viewer/templates/enum.html similarity index 80% rename from capella_ros_tools/snapshot/templates/enum.html rename to capella_ros_tools/viewer/templates/enum.html index 4a55fa9..595a3a7 100644 --- a/capella_ros_tools/snapshot/templates/enum.html +++ b/capella_ros_tools/viewer/templates/enum.html @@ -9,17 +9,14 @@ {{ element.name }} - Overview - +

                                  - {{ element.name }} - ({{ element.xtype }}) + {{ element.name }} + ({{ element.xtype }})

                                  description - {{ element.description }} - {{ element.description }}
                                  properties
                                  @@ -32,9 +29,7 @@

                                  - + diff --git a/capella_ros_tools/snapshot/templates/package.html b/capella_ros_tools/viewer/templates/package.html similarity index 67% rename from capella_ros_tools/snapshot/templates/package.html rename to capella_ros_tools/viewer/templates/package.html index 59975b4..b8f88c7 100644 --- a/capella_ros_tools/snapshot/templates/package.html +++ b/capella_ros_tools/viewer/templates/package.html @@ -9,16 +9,13 @@ {{ element.name }} - Overview - +

                                  - {{ element.name }} - ({{ element.xtype }}) + {{ element.name }} + ({{ element.xtype }})

                                  description - {{ element.description }} - {{ element.description }}
                                  literals
                                  @@ -29,13 +26,17 @@

                                  + + + + - - - -
                                  parent {{ element.parent._short_html_() }}
                                  description{{ element.description }}
                                  classes
                                    {% for cls in element.classes %}
                                  1. - {{ cls._short_html_() }}
                                  2. @@ -47,24 +48,9 @@

                                  datatypes
                                    - {% for datatype in element.datatypes %} {% if - get_type(datatype.xtype) != 'Enumeration' %} -
                                  1. - {{ datatype._short_html_() }} -
                                  2. - {% endif %} {% endfor %} -
                                  -
                                  enumeration -
                                    - {% for enum in element.enumerations %} + {% for enum in element.datatypes %}
                                  1. - {{ enum._short_html_() }}
                                  2. @@ -78,7 +64,7 @@

                                      {% for pkg in element.packages %}
                                    1. - {{ pkg._short_html_() }}
                                    2. diff --git a/docs/source/_static/github-logo.svg b/docs/source/_static/github-logo.svg index 6305840..2843ea7 100644 --- a/docs/source/_static/github-logo.svg +++ b/docs/source/_static/github-logo.svg @@ -1,9 +1,8 @@ +~ SPDX-FileCopyrightText: Copyright DB InfraGO AG and contributors +~ SPDX-License-Identifier: Apache-2.0 +--> - - + + diff --git a/docs/source/examples/Export capella.ipynb b/docs/source/examples/Export capella.ipynb deleted file mode 100644 index fce0818..0000000 --- a/docs/source/examples/Export capella.ipynb +++ /dev/null @@ -1,80 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Export Capella" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.scripts import capella2msg\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "msg_path = Path(\"data/test\")\n", - "capella_path = Path(\"data/melody_model_60\")\n", - "layer = \"la\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "Property values are not available in this model\n" - ] - } - ], - "source": [ - "converter = capella2msg.Converter(msg_path, capella_path, layer)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "converter.convert()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/examples/Export capella.ipynb.license b/docs/source/examples/Export capella.ipynb.license deleted file mode 100644 index f6f3181..0000000 --- a/docs/source/examples/Export capella.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/Import messages.ipynb b/docs/source/examples/Import messages.ipynb deleted file mode 100644 index a23069c..0000000 --- a/docs/source/examples/Import messages.ipynb +++ /dev/null @@ -1,1214 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Import Messages" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import capellambse\n", - "from capella_ros_tools.scripts import msg2capella\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "msg_path = capellambse.filehandler.get_filehandler(\"git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss\").rootdir\n", - "capella_path = Path(\"data/empty_project_52\")\n", - "layer = \"la\"" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:capellambse.model:Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "WARNING:capellambse.model:Property values are not available in this model\n" - ] - } - ], - "source": [ - "converter = msg2capella.Converter(msg_path, capella_path, layer, \"replace\", False)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalID already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DiagnosticStatusLevel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatusLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum DiagnosticStatusLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class DiagnosticStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DiagnosticStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DiagnosticStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Accel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class AccelStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class AccelWithCovarianceStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Inertia already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InertiaStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Point already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Point32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Polygon already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PolygonStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Pose already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Pose2D already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PoseWithCovarianceStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Quaternion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class QuaternionStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Transform already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TransformStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Twist already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TwistStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TwistWithCovarianceStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Vector3Stamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Wrench already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class WrenchStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Accel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted AccelWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Inertia.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InertiaStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Point32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Polygon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PolygonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Pose2D.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PoseWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Quaternion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted QuaternionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transform.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransformStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Twist.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TwistWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Vector3Stamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Wrench.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted WrenchStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Accel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class AccelWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Inertia.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InertiaStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Point.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Point32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Polygon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PolygonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Pose2D.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PoseWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Quaternion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class QuaternionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Transform.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransformStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Twist.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TwistWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Vector3Stamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Wrench.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class WrenchStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GridCells already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMetaData already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class OccupancyGrid already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Path already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GridCells.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMetaData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted OccupancyGrid.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Path.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GridCells.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMetaData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class OccupancyGrid.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Path.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyHealth already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PowerSupplyTechnology already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Type already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum NavSatFixPositionCovarianceType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Status already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Service already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PointFieldDatatype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum RangeRadiationType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyHealth.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PowerSupplyTechnology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Type.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFixPositionCovarianceType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Status.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Service.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointFieldDatatype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RangeRadiationType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyHealth.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PowerSupplyTechnology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Type.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum NavSatFixPositionCovarianceType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Status.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Service.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PointFieldDatatype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum RangeRadiationType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class BatteryState already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CameraInfo already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ChannelFloat32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CompressedImage already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FluidPressure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Illuminance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Image already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Imu already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JointState already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Joy already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedback already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JoyFeedbackArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LaserEcho already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LaserScan already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MagneticField already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointState already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiEchoLaserScan already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatFix already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class NavSatStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointCloud2 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class PointField already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Range already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RegionOfInterest already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RelativeHumidity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Temperature already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TimeReference already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted BatteryState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CameraInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ChannelFloat32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CompressedImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FluidPressure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Illuminance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Image.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Imu.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Joy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JoyFeedbackArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserEcho.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MagneticField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiEchoLaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatFix.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted NavSatStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointCloud2.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PointField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Range.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RegionOfInterest.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RelativeHumidity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Temperature.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TimeReference.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class BatteryState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CameraInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ChannelFloat32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CompressedImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FluidPressure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Illuminance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Image.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Imu.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Joy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JoyFeedbackArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserEcho.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MagneticField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiEchoLaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatFix.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class NavSatStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointCloud2.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class PointField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Range.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RegionOfInterest.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RelativeHumidity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Temperature.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TimeReference.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SolidPrimitiveType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Box already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Cylinder already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Cone already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PrismHeight already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitiveType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Box.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Cone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrismHeight.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SolidPrimitiveType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Box.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Cone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrismHeight.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Mesh already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MeshTriangle already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Plane already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SolidPrimitive already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mesh.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshTriangle.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Plane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SolidPrimitive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Mesh.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshTriangle.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Plane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SolidPrimitive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Bool already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Byte already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ByteMultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Char already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ColorRGBA already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float32MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float64 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Float64MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Header already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int16 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int16MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int32MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int64 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int64MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int8 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Int8MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayDimension already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiArrayLayout already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class String already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt16MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt32MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt64MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UInt8MultiArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Bool.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Byte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ByteMultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Char.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ColorRGBA.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Float64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Header.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Int8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayDimension.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiArrayLayout.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted String.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UInt8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Bool.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Byte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ByteMultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Char.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ColorRGBA.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Float64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Header.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Int8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayDimension.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiArrayLayout.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class String.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UInt8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class DisparityImage already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DisparityImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class DisparityImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectory already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class JointTrajectoryPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectory already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MultiDOFJointTrajectoryPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted JointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MultiDOFJointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class JointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MultiDOFJointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ImageMarkerId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerControlOrientationMode already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerFeedbackEventType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Mouse already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum InteractiveMarkerUpdateType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MarkerId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MenuEntryCommandType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControlOrientationMode.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedbackEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Mouse.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdateType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntryCommandType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ImageMarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerControlOrientationMode.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerFeedbackEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Mouse.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum InteractiveMarkerUpdateType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MarkerId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MenuEntryCommandType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ImageMarker already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarker already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerControl already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerFeedback already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerInit already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerPose already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class InteractiveMarkerUpdate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Marker already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MarkerArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MenuEntry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MeshFile already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UVCoordinate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ImageMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerControl.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerInit.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerPose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted InteractiveMarkerUpdate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Marker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MarkerArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MenuEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MeshFile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UVCoordinate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ImageMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerControl.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerInit.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerPose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class InteractiveMarkerUpdate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Marker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MarkerArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MenuEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MeshFile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UVCoordinate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum GoalStatusStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceling already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusCanceled already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatusAborted already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceling.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusCanceled.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatusAborted.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum GoalStatusStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceling.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusCanceled.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatusAborted.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalInfo already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GoalStatusArray already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Duration already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Time already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Duration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Time.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Duration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Time.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StateId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum PrimaryStateActive already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateConfiguring already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateShuttingdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateDeactivating already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionStateErrorprocessing already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActivate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionUnconfiguredShutdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionActiveShutdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnConfigure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnCleanup already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnActivate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnDeactivate already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnShutdown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionOnError already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackFailure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TransitionCallbackError already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StateId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted PrimaryStateActive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateConfiguring.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateShuttingdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateDeactivating.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionStateErrorprocessing.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionUnconfiguredShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionActiveShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnConfigure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnCleanup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnDeactivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionOnError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackFailure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionCallbackError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StateId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum PrimaryStateActive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateConfiguring.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateShuttingdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateDeactivating.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionStateErrorprocessing.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionUnconfiguredShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionActiveShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnConfigure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnCleanup.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnActivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnDeactivate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnShutdown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionOnError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackFailure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TransitionCallbackError.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class State already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Transition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionDescription already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TransitionEvent already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted State.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Transition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TransitionEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class State.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Transition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TransitionEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LogLevel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Error already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum Fatal already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LoggerLevelType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ParameterType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LogLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Error.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Fatal.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevelType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LogLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Error.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum Fatal.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LoggerLevelType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ParameterType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FloatingPointRange already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IntegerRange already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ListParametersResult already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Log already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LoggerLevel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Parameter already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterDescriptor already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEvent already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterEventDescriptors already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ParameterValue already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SetLoggerLevelsResult already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SetParametersResult already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FloatingPointRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IntegerRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ListParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Log.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LoggerLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterDescriptor.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterEventDescriptors.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ParameterValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetLoggerLevelsResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SetParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FloatingPointRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IntegerRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ListParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Log.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LoggerLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterDescriptor.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterEventDescriptors.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ParameterValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SetLoggerLevelsResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SetParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Clock already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Clock.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Clock.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ServiceEventInfoEventType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfoEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ServiceEventInfoEventType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ServiceEventInfo already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ServiceEventInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ServiceEventInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StatisticDataType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticDataType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StatisticDataType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MetricsMessage already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class StatisticDataPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MetricsMessage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StatisticDataPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MetricsMessage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StatisticDataPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Builtins already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Builtins.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Builtins.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeTypeId 0 already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeByte already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeFixed already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldTypeBounded already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeTypeId 0.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeByte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeFixed.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldTypeBounded.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeTypeId 0.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeByte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeFixed.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum FieldTypeBounded.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Field already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FieldType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IndividualTypeDescription already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValue already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TypeDescription already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TypeSource already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Field.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IndividualTypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TypeSource.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Field.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IndividualTypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TypeSource.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class UUID already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted UUID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class UUID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DiagnosticStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Accel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for AccelWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Inertia.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InertiaStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Point32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Polygon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PolygonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Pose2D.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PoseWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Quaternion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for QuaternionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transform.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransformStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Twist.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TwistWithCovarianceStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Vector3Stamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Wrench.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for WrenchStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GridCells.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMetaData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OccupancyGrid.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Path.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for BatteryState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CameraInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ChannelFloat32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CompressedImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FluidPressure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Illuminance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Image.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Imu.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Joy.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JoyFeedbackArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserEcho.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MagneticField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointState.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiEchoLaserScan.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatFix.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for NavSatStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointCloud2.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for PointField.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Range.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RegionOfInterest.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RelativeHumidity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Temperature.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TimeReference.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Mesh.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshTriangle.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Plane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SolidPrimitive.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Bool.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Byte.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ByteMultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Char.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ColorRGBA.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Float64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Header.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Int8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayDimension.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiArrayLayout.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for String.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt16MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt32MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt64MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UInt8MultiArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for DisparityImage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for JointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectory.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MultiDOFJointTrajectoryPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ImageMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerControl.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerFeedback.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerInit.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerPose.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for InteractiveMarkerUpdate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Marker.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MarkerArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MenuEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MeshFile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UVCoordinate.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GoalStatusArray.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Duration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Time.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for State.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Transition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TransitionEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FloatingPointRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IntegerRange.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ListParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Log.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LoggerLevel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Parameter.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterDescriptor.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEvent.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterEventDescriptors.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ParameterValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetLoggerLevelsResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SetParametersResult.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Clock.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ServiceEventInfo.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MetricsMessage.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StatisticDataPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Builtins.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Field.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IndividualTypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValue.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeDescription.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TypeSource.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for UUID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalization already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class CoupledLocalizationTupelStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPath already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionPathStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class EgoMotionStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalization already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class GNSSLocalizationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IMU already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class IMUStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalization already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupel already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchedLocalizationTupelStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Objects already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectsStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Odometry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class OdometryStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizon already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformation already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjects already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class StaticObjectsStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted CoupledLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPath.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionPathStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted EgoMotionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted GNSSLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMU.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted IMUStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchedLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Objects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted OdometryStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class CoupledLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPath.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionPathStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class EgoMotionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class GNSSLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IMU.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class IMUStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchedLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Objects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class OdometryStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class StaticObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfiguration already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationConfigurationStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatus already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationStatusStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ApplicationVersionStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfile already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MissionProfileStamped already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfiguration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationConfigurationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationVersionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MissionProfileStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfiguration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationConfigurationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationStatusStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ApplicationVersionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MissionProfileStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Covariance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class FieldOfView already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ID already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValueMap already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class KeyValuePair already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class LocalizationIntegrity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class MapMatchingIntegrity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Object already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectBase already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectClassification already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class ObjectTracking already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Orientation already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Position already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Probability already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class RailHorizonData already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorInformationEntry already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class SensorIntegrity already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Shape already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Topology already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Track already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class TrackPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Class Variance already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Covariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted FieldOfView.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValueMap.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted KeyValuePair.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Object.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectBase.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectClassification.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectTracking.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Orientation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Position.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Probability.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted RailHorizonData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorInformationEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Shape.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Topology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Track.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted Variance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Covariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class FieldOfView.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValueMap.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class KeyValuePair.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class LocalizationIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class MapMatchingIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Object.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectBase.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectClassification.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class ObjectTracking.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Orientation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Position.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Probability.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class RailHorizonData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorInformationEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class SensorIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Shape.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Topology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Track.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class TrackPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created class Variance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationModeTypes already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ApplicationStatusSubTypeUnknown already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeMotion already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypePosition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum LocalizationIntegrityTypeDirection already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingInvalidType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum MapMatchingOrientationTypes already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ObjectMotionType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum DynamicObjectTypePedestrianType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClass already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassVerticalType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassBodyType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassPlaneSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum StaticObjectClassCompositionType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorIntegrityType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorPosition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum SensorSubposition already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlane already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBox already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCylinder already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeCone already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureTopPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureBottomPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeHorizontalStructurePoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeBodyStructure already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypePlaneStructurePoint already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeParameterIndicesTypeComposedStructureId already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum TrackSubtype already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationModeTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ApplicationStatusSubTypeUnknown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypePosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted LocalizationIntegrityTypeDirection.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingInvalidType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted MapMatchingOrientationTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ObjectMotionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted DynamicObjectTypePedestrianType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClass.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassVerticalType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassBodyType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassPlaneSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted StaticObjectClassCompositionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorPosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted SensorSubposition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBox.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeCone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeHorizontalStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeBodyStructure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypePlaneStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeParameterIndicesTypeComposedStructureId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted ShapeType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Deleted TrackSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationModeTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ApplicationStatusSubTypeUnknown.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypePosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum LocalizationIntegrityTypeDirection.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingInvalidType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum MapMatchingOrientationTypes.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ObjectMotionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum DynamicObjectTypePedestrianType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClass.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassVerticalType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassBodyType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassPlaneSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum StaticObjectClassCompositionType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorIntegrityType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorPosition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum SensorSubposition.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlane.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBox.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCylinder.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeCone.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusTopPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeVerticalStructureWithRadiusBottomPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeHorizontalStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeBodyStructure.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypePlaneStructurePoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeParameterIndicesTypeComposedStructureId.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum ShapeType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Enum ShapeType already exists.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackType.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created enum TrackSubtype.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for CoupledLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPath.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionPathStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for EgoMotionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for GNSSLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMU.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for IMUStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalization.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupel.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchedLocalizationTupelStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Objects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Odometry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for OdometryStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizon.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjects.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for StaticObjectsStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfiguration.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationConfigurationStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatus.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationStatusStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersion.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ApplicationVersionStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfile.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MissionProfileStamped.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Covariance.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for FieldOfView.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ID.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValueMap.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for KeyValuePair.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for LocalizationIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for MapMatchingIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Object.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectBase.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectClassification.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for ObjectTracking.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Orientation.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Position.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Probability.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for RailHorizonData.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorInformationEntry.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for SensorIntegrity.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Shape.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Topology.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Track.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for TrackPoint.\n", - "INFO:capella_ros_tools.modules.capella.serializer:Created properties for Variance.\n" - ] - } - ], - "source": [ - "converter.convert()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/examples/Import messages.ipynb.license b/docs/source/examples/Import messages.ipynb.license deleted file mode 100644 index f6f3181..0000000 --- a/docs/source/examples/Import messages.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/Parse capella.ipynb b/docs/source/examples/Parse capella.ipynb deleted file mode 100644 index 4fc88f0..0000000 --- a/docs/source/examples/Parse capella.ipynb +++ /dev/null @@ -1,122 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Parse Capella" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.modules.capella.parser import CapellaModel\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cannot load PVMT extension: ValueError: Provided model does not have a PropertyValuePkg\n", - "Property values are not available in this model\n" - ] - } - ], - "source": [ - "model = CapellaModel(Path(\"data/melody_model_60\"), \"la\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Wand Objects'}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.get_packages(model.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[ClassDef(name='Wand', properties=[ClassProperty(type_name='String', type_pkg_name=None, name='owner', min_card='1', max_card='1', description=''), ClassProperty(type_name='Wand Core', type_pkg_name=None, name='core', min_card='1', max_card='1', description=''), ClassProperty(type_name='Wand Wood', type_pkg_name=None, name='wood', min_card='1', max_card='1', description='')], description=''),\n", - " ClassDef(name='Class 2', properties=[], description='')]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.get_classes(model.data)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[EnumDef(name='Wand Core', values=[EnumValue(type='', name='Unicorn Hair', value='', description=''), EnumValue(type='', name='Dragon Heartstring', value='', description=''), EnumValue(type='', name='Pheonix Feather', value='', description=''), EnumValue(type='', name='Thestral Tail-Hair', value='', description='')], description=''),\n", - " EnumDef(name='Wand Wood', values=[EnumValue(type='', name='Apple', value='', description=''), EnumValue(type='', name='Cedar', value='', description=''), EnumValue(type='', name='Ebony', value='', description=''), EnumValue(type='', name='Elder', value='', description=''), EnumValue(type='', name='Holly', value='', description='')], description='')]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model.get_enums(model.data)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".capella_venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/examples/Parse capella.ipynb.license b/docs/source/examples/Parse capella.ipynb.license deleted file mode 100644 index f6f3181..0000000 --- a/docs/source/examples/Parse capella.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/Parse messages.ipynb b/docs/source/examples/Parse messages.ipynb deleted file mode 100644 index 8a15a66..0000000 --- a/docs/source/examples/Parse messages.ipynb +++ /dev/null @@ -1,112 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Parse Messages" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from capella_ros_tools.modules.messages.parser import MessageDef\n", - "from pathlib import Path\n", - "from IPython.display import display" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

                                      CameraInfo

                                      # Copyright DB InfraGO AG and contributors
                                      # SPDX-License-Identifier: CC0-1.0
                                      #
                                      # This message defines meta information for a camera. It should be in a
                                      # camera namespace on topic \"camera_info\" and accompanied by up to five
                                      # image topics named:
                                      #
                                      # image_raw - raw data from the camera driver, possibly Bayer encoded
                                      # image - monochrome, distorted
                                      # image_color - color, distorted
                                      # image_rect - monochrome, rectified
                                      # image_rect_color - color, rectified
                                      #
                                      # The image_pipeline contains packages (image_proc, stereo_image_proc)
                                      # for producing the four processed image topics from image_raw and
                                      # camera_info. The meaning of the camera parameters are described in
                                      # detail at http://www.ros.org/wiki/image_pipeline/CameraInfo.
                                      #
                                      # The image_geometry package provides a user-friendly interface to
                                      # common operations using this meta information. If you want to, e.g.,
                                      # project a 3d point into image coordinates, we strongly recommend
                                      # using image_geometry.
                                      #
                                      # If the camera is uncalibrated, the matrices D, K, R, P should be left
                                      # zeroed out. In particular, clients may assume that K[0] == 0.0
                                      # indicates an uncalibrated camera.
                                      #######################################################################
                                      # Image acquisition info #
                                      #######################################################################
                                      #######################################################################
                                      # Calibration Parameters #
                                      #######################################################################
                                      # These are fixed during camera calibration. Their values will be the #
                                      # same in all messages until the camera is recalibrated. Note that #
                                      # self-calibrating systems may \"recalibrate\" frequently. #
                                      # #
                                      # The internal parameters can be used to warp a raw (distorted) image #
                                      # to: #
                                      # 1. An undistorted image (requires D and K) #
                                      # 2. A rectified image (requires D, K, R) #
                                      # The projection matrix P projects 3D points into the rectified image.#
                                      #######################################################################
                                      #######################################################################
                                      # Operational Parameters #
                                      #######################################################################
                                      # These define the image region actually captured by the camera #
                                      # driver. Although they affect the geometry of the output image, they #
                                      # may be changed freely without recalibrating the camera. #
                                      #######################################################################

                                      Fields

                                      1. std_msgs/Header header
                                        # Time of image acquisition, camera coordinate frame ID
                                        # Header timestamp should be acquisition time of image
                                        # Header frame_id should be optical frame of camera
                                        # origin of frame should be optical center of camera
                                        # +x should point to the right in the image
                                        # +y should point down in the image
                                        # +z should point into the plane of the image
                                      2. uint32 height
                                        # The image dimensions with which the camera was calibrated.
                                        # Normally this will be the full camera resolution in pixels.
                                      3. uint32 width
                                        # The image dimensions with which the camera was calibrated.
                                        # Normally this will be the full camera resolution in pixels.
                                      4. string distortion_model
                                        # The distortion model used. Supported models are listed in
                                        # sensor_msgs/distortion_models.hpp. For most cameras, \"plumb_bob\" - a
                                        # simple model of radial and tangential distortion - is sufficent.
                                      5. float64[] d
                                        # The distortion parameters, size depending on the distortion model.
                                        # For \"plumb_bob\", the 5 parameters are: (k1, k2, t1, t2, k3).
                                      6. float64[9] k
                                        # Intrinsic camera matrix for the raw (distorted) images.
                                        # [fx 0 cx]
                                        # K = [ 0 fy cy]
                                        # [ 0 0 1]
                                        # Projects 3D points in the camera coordinate frame to 2D pixel
                                        # coordinates using the focal lengths (fx, fy) and principal point
                                        # (cx, cy).
                                        # 3x3 row-major matrix
                                      7. float64[9] r
                                        # Rectification matrix (stereo cameras only)
                                        # A rotation matrix aligning the camera coordinate system to the ideal
                                        # stereo image plane so that epipolar lines in both stereo images are
                                        # parallel.
                                        # 3x3 row-major matrix
                                      8. float64[12] p
                                        # Projection/camera matrix
                                        # [fx' 0 cx' Tx]
                                        # P = [ 0 fy' cy' Ty]
                                        # [ 0 0 1 0]
                                        # By convention, this matrix specifies the intrinsic (camera) matrix
                                        # of the processed (rectified) image. That is, the left 3x3 portion
                                        # is the normal camera intrinsic matrix for the rectified image.
                                        # It projects 3D points in the camera coordinate frame to 2D pixel
                                        # coordinates using the focal lengths (fx', fy') and principal point
                                        # (cx', cy') - these may differ from the values in K.
                                        # For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will
                                        # also have R = the identity and P[1:3,1:3] = K.
                                        # For a stereo pair, the fourth column [Tx Ty 0]' is related to the
                                        # position of the optical center of the second camera in the first
                                        # camera's frame. We assume Tz = 0 so both cameras are in the same
                                        # stereo image plane. The first camera always has Tx = Ty = 0. For
                                        # the right (second) camera of a horizontal stereo pair, Ty = 0 and
                                        # Tx = -fx' * B, where B is the baseline between the cameras.
                                        # Given a 3D point [X Y Z]', the projection (x, y) of the point onto
                                        # the rectified image is given by:
                                        # [u v w]' = P * [X Y Z 1]'
                                        # x = u / w
                                        # y = v / w
                                        # This holds for both images of a stereo pair.
                                        # 3x4 row-major matrix
                                      9. uint32 binning_x
                                        # Binning refers here to any camera setting which combines rectangular
                                        # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                                        # resolution of the output image to
                                        # (width / binning_x) x (height / binning_y).
                                        # The default values binning_x = binning_y = 0 is considered the same
                                        # as binning_x = binning_y = 1 (no subsampling).
                                      10. uint32 binning_y
                                        # Binning refers here to any camera setting which combines rectangular
                                        # neighborhoods of pixels into larger \"super-pixels.\" It reduces the
                                        # resolution of the output image to
                                        # (width / binning_x) x (height / binning_y).
                                        # The default values binning_x = binning_y = 0 is considered the same
                                        # as binning_x = binning_y = 1 (no subsampling).
                                      11. RegionOfInterest roi
                                        # Region of interest (subwindow of full camera resolution), given in
                                        # full resolution (unbinned) image coordinates. A particular ROI
                                        # always denotes the same window of pixels on the camera sensor,
                                        # regardless of binning settings.
                                        # The default setting of roi (all values 0) is considered the same as
                                        # full resolution (roi.width = width, roi.height = height).

                                      Enums

                                        " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/msg/CameraInfo.msg\"))\n", - "display(msgs)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

                                        DiagnosticStatus

                                        # Copyright DB InfraGO AG and contributors
                                        # SPDX-License-Identifier: CC0-1.0
                                        #
                                        # This message holds the status of an individual component of the robot.

                                        Fields

                                        1. DiagnosticStatusLevel level
                                          # Level of operation enumerated above.
                                        2. string name
                                          # A description of the test/component reporting.
                                        3. string message
                                          # A description of the status.
                                        4. string hardware_id
                                          # A hardware unique string.
                                        5. KeyValue[] values
                                          # An array of values associated with the status.

                                        Enums

                                        1. DiagnosticStatusLevel
                                          # Possible levels of operations.
                                          • byte OK = 0
                                          • byte WARN = 1
                                          • byte ERROR = 2
                                          • byte STALE = 3
                                        " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/msg/DiagnosticStatus.msg\"))\n", - "display(msgs)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "

                                        PointCloud2

                                        # Copyright DB InfraGO AG and contributors
                                        # SPDX-License-Identifier: CC0-1.0
                                        #
                                        # This message holds a collection of N-dimensional points, which may
                                        # contain additional information such as normals, intensity, etc. The
                                        # point data is stored as a binary blob, its layout described by the
                                        # contents of the \"fields\" array.
                                        #
                                        # The point cloud data may be organized 2d (image-like) or 1d (unordered).
                                        # Point clouds organized as 2d images may be produced by camera depth sensors
                                        # such as stereo or time-of-flight.

                                        Fields

                                        1. std_msgs/Header header
                                          # Time of sensor data acquisition, and the coordinate frame ID (for 3d points).
                                        2. uint32 height
                                          # 2D structure of the point cloud. If the cloud is unordered, height is
                                          # 1 and width is the length of the point cloud.
                                        3. uint32 width
                                          # 2D structure of the point cloud. If the cloud is unordered, height is
                                          # 1 and width is the length of the point cloud.
                                        4. PointField[] fields
                                          # Describes the channels and their layout in the binary data blob.
                                        5. bool is_bigendian
                                          # Is this data bigendian?
                                        6. uint32 point_step
                                          # Length of a point in bytes
                                        7. uint32 row_step
                                          # Length of a row in bytes
                                        8. uint8[] data
                                          # Actual point data, size is (row_step*height)
                                        9. bool is_dense
                                          # True if there are no invalid points

                                        Enums

                                          " - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "msgs = MessageDef.from_msg_file(Path(\"data/example_msgs/msg/PointCloud2.msg\"))\n", - "display(msgs)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/examples/Parse messages.ipynb.license b/docs/source/examples/Parse messages.ipynb.license deleted file mode 100644 index f6f3181..0000000 --- a/docs/source/examples/Parse messages.ipynb.license +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.capella b/docs/source/examples/data/empty_project_52/empty_project_52.capella deleted file mode 100644 index 1db3bd1..0000000 --- a/docs/source/examples/data/empty_project_52/empty_project_52.capella +++ /dev/null @@ -1,11040 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/howtos/howtos.rst b/docs/source/howtos/howtos.rst index 70e24dc..b7e1443 100644 --- a/docs/source/howtos/howtos.rst +++ b/docs/source/howtos/howtos.rst @@ -17,36 +17,22 @@ Import ROS2 Messages: --------------------- .. code-block:: bash - $ python -m capella_ros_tools import docs/source/examples/data/example_msgs docs/source/examples/data/empty_project_52 la --exists-action=keep --port=5000 --no-deps + $ python -m capella_ros_tools import tests/data/example_msgs tests/data/empty_model la --exists-action=skip --port=5000 --no-deps Import ROS2 Messages from Git Repository: ----------------------------------------- .. code-block:: bash - $ python -m capella_ros_tools import git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss docs/source/examples/data/empty_project_52 la --exists-action=keep --port=5000 + $ python -m capella_ros_tools import git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss tests/data/empty_model la --exists-action=skip --port=5000 -Export Capella Model (experimental): +Export Capella data package: ------------------------------------ .. code-block:: bash - $ python -m capella_ros_tools export docs/source/examples/data/melody_model_60 la docs/source/examples/data/melody_msgs + $ python -m capella_ros_tools export tests/data/melody_model_60 la tests/data/melody_msgs -Export Capella Model from Git Repository (experimental): +Export Capella data package from Git Repository (experimental): -------------------------------------------------------- .. code-block:: bash - $ python -m capella_ros_tools export git+https://github.com/DSD-DBS/coffee-machine la docs/source/examples/data/coffee_msgs - - -Using the Python API -==================== - -In this section you can view dedicated tutorial-notebooks that demonstrate how to use the library. - -.. toctree:: - :maxdepth: 4 - :caption: How tos: - :numbered: - :glob: - - ../examples/* + $ python -m capella_ros_tools export git+https://github.com/DSD-DBS/coffee-machine oa tests/data/coffee_msgs diff --git a/docs/source/messages/messages.rst b/docs/source/messages/messages.rst index db72268..2b05965 100644 --- a/docs/source/messages/messages.rst +++ b/docs/source/messages/messages.rst @@ -168,5 +168,5 @@ In another file # The property my_enum_field is of type MyEnum byte my_enum_field # cf. MyEnum - # The property my_other_enum_field is of type MyEnumMyEnumValue + # The property my_other_enum_field is of type MyEnumValue uint8 my_other_enum_field # cf. MyEnum, MY_ENUM_VALUE_XXX diff --git a/docs/source/usage/usage.rst b/docs/source/usage/usage.rst index e17ce26..2dc69c7 100644 --- a/docs/source/usage/usage.rst +++ b/docs/source/usage/usage.rst @@ -19,7 +19,7 @@ Import ROS2 Messages: * ****, import ROS2 messages from * ****, export to Capella model * ****, use Capella model layer -* **--port=**, start Capella model server at (optional) +* **--port=**, start Capella model viewer at (optional) * **--exists-action=**, action to take if a Capella element already exists (optional) * **skip**, skip elements diff --git a/pyproject.toml b/pyproject.toml index 3e6909a..cd8ff7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" dynamic = ["version"] name = "capella-ros-tools" -description = "Tool for converting ROS messages from and to Capella models." +description = "Tools for importing ROS .msg files into Capella data package and vice versa." readme = "README.md" requires-python = ">=3.10, <3.13" license = { text = "Apache-2.0" } @@ -29,8 +29,8 @@ classifiers = [ ] dependencies = [ "click", - "capellambse @ git+https://github.com/DSD-DBS/py-capellambse.git@more-filepath-props", - "capellambse_context_diagrams @ git+https://github.com/DSD-DBS/capellambse-context-diagrams.git@add-context-to-tree", + "capellambse", + "capellambse_context_diagrams", "fastapi", "uvicorn[standard]", ] diff --git a/docs/source/examples/data/empty_project_52/.project b/tests/data/empty_model/.project similarity index 88% rename from docs/source/examples/data/empty_project_52/.project rename to tests/data/empty_model/.project index 5315043..6c740f9 100644 --- a/docs/source/examples/data/empty_project_52/.project +++ b/tests/data/empty_model/.project @@ -1,6 +1,6 @@ - empty_project_52 + empty_model diff --git a/docs/source/examples/data/empty_project_52/.project.license b/tests/data/empty_model/.project.license similarity index 100% rename from docs/source/examples/data/empty_project_52/.project.license rename to tests/data/empty_model/.project.license diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.afm b/tests/data/empty_model/empty_model.afm similarity index 54% rename from docs/source/examples/data/empty_project_52/empty_project_52.afm rename to tests/data/empty_model/empty_model.afm index 33d102e..bf51fcc 100644 --- a/docs/source/examples/data/empty_project_52/empty_project_52.afm +++ b/tests/data/empty_model/empty_model.afm @@ -1,4 +1,4 @@ - - + + diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.afm.license b/tests/data/empty_model/empty_model.afm.license similarity index 100% rename from docs/source/examples/data/empty_project_52/empty_project_52.afm.license rename to tests/data/empty_model/empty_model.afm.license diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.aird b/tests/data/empty_model/empty_model.aird similarity index 59% rename from docs/source/examples/data/empty_project_52/empty_project_52.aird rename to tests/data/empty_model/empty_model.aird index 63f8ae5..b1ef2d5 100644 --- a/docs/source/examples/data/empty_project_52/empty_project_52.aird +++ b/tests/data/empty_model/empty_model.aird @@ -1,29 +1,26 @@ - - empty_project_52.afm - empty_project_52.capella - + + empty_model.afm + empty_model.capella + - - - - - + + - - + + - - + + - - + + - + - - + + diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.aird.license b/tests/data/empty_model/empty_model.aird.license similarity index 100% rename from docs/source/examples/data/empty_project_52/empty_project_52.aird.license rename to tests/data/empty_model/empty_model.aird.license diff --git a/tests/data/empty_model/empty_model.capella b/tests/data/empty_model/empty_model.capella new file mode 100644 index 0000000..5877cd0 --- /dev/null +++ b/tests/data/empty_model/empty_model.capella @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/source/examples/data/empty_project_52/empty_project_52.capella.license b/tests/data/empty_model/empty_model.capella.license similarity index 100% rename from docs/source/examples/data/empty_project_52/empty_project_52.capella.license rename to tests/data/empty_model/empty_model.capella.license diff --git a/docs/source/examples/data/example_msgs/msg/CameraInfo.msg b/tests/data/example_msgs/msg/CameraInfo.msg similarity index 100% rename from docs/source/examples/data/example_msgs/msg/CameraInfo.msg rename to tests/data/example_msgs/msg/CameraInfo.msg diff --git a/docs/source/examples/data/example_msgs/msg/DiagnosticStatus.msg b/tests/data/example_msgs/msg/DiagnosticStatus.msg similarity index 100% rename from docs/source/examples/data/example_msgs/msg/DiagnosticStatus.msg rename to tests/data/example_msgs/msg/DiagnosticStatus.msg diff --git a/docs/source/examples/data/example_msgs/msg/PointCloud2.msg b/tests/data/example_msgs/msg/PointCloud2.msg similarity index 100% rename from docs/source/examples/data/example_msgs/msg/PointCloud2.msg rename to tests/data/example_msgs/msg/PointCloud2.msg diff --git a/docs/source/examples/data/melody_model_60/.project b/tests/data/melody_model_60/.project similarity index 100% rename from docs/source/examples/data/melody_model_60/.project rename to tests/data/melody_model_60/.project diff --git a/docs/source/examples/data/melody_model_60/.project.license b/tests/data/melody_model_60/.project.license similarity index 100% rename from docs/source/examples/data/melody_model_60/.project.license rename to tests/data/melody_model_60/.project.license diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.afm b/tests/data/melody_model_60/Melody Model Test.afm similarity index 100% rename from docs/source/examples/data/melody_model_60/Melody Model Test.afm rename to tests/data/melody_model_60/Melody Model Test.afm diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.afm.license b/tests/data/melody_model_60/Melody Model Test.afm.license similarity index 100% rename from docs/source/examples/data/melody_model_60/Melody Model Test.afm.license rename to tests/data/melody_model_60/Melody Model Test.afm.license diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.aird b/tests/data/melody_model_60/Melody Model Test.aird similarity index 100% rename from docs/source/examples/data/melody_model_60/Melody Model Test.aird rename to tests/data/melody_model_60/Melody Model Test.aird diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.aird.license b/tests/data/melody_model_60/Melody Model Test.aird.license similarity index 100% rename from docs/source/examples/data/melody_model_60/Melody Model Test.aird.license rename to tests/data/melody_model_60/Melody Model Test.aird.license diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.capella b/tests/data/melody_model_60/Melody Model Test.capella similarity index 100% rename from docs/source/examples/data/melody_model_60/Melody Model Test.capella rename to tests/data/melody_model_60/Melody Model Test.capella diff --git a/docs/source/examples/data/melody_model_60/Melody Model Test.capella.license b/tests/data/melody_model_60/Melody Model Test.capella.license similarity index 100% rename from docs/source/examples/data/melody_model_60/Melody Model Test.capella.license rename to tests/data/melody_model_60/Melody Model Test.capella.license From 3b1ac00b0ae3622a94f808345c4f27203b56e460 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Sat, 17 Feb 2024 08:21:56 +0100 Subject: [PATCH 19/47] docs: Add instructions for downloading model viewer --- docs/source/usage/usage.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/usage/usage.rst b/docs/source/usage/usage.rst index 2dc69c7..26dd736 100644 --- a/docs/source/usage/usage.rst +++ b/docs/source/usage/usage.rst @@ -29,6 +29,12 @@ Import ROS2 Messages: * **--no-deps**, do not import ROS2 dependencies (e.g. std_msgs) +Tip: Use the `--port` option to start the Capella model viewer at a specific port. The Capella model viewer can then be downloaded to be viewed at a later time using the following command: +.. code-block:: bash + + $ wget http://localhost: -E -r + + Export Capella Model (experimental): ------------------------------------ .. code-block:: bash From 69ce3054f7a846e69e3211da6fce00356fed9c1f Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 21 Feb 2024 09:21:45 +0100 Subject: [PATCH 20/47] test: Add capella and messages tests --- capella_ros_tools/messages.py | 4 +- tests/test_capella.py | 204 ++++++++++++++++++++++++++++++++ tests/test_capella_ros_tools.py | 8 -- tests/test_messages.py | 135 +++++++++++++++++++++ 4 files changed, 341 insertions(+), 10 deletions(-) create mode 100644 tests/test_capella.py delete mode 100644 tests/test_capella_ros_tools.py create mode 100644 tests/test_messages.py diff --git a/capella_ros_tools/messages.py b/capella_ros_tools/messages.py index 11260b2..5ca4749 100644 --- a/capella_ros_tools/messages.py +++ b/capella_ros_tools/messages.py @@ -107,7 +107,7 @@ def __str__(self) -> str: """Return string representation of the field.""" out = f"{self.type} {self.name}" if self.description: - out += f" # {_cleanhtml(self.description)}" + out += f" # {_cleanhtml(self.description)}" return out @@ -130,7 +130,7 @@ def __str__(self) -> str: """Return string representation of the constant.""" out = f"{self.type} {self.name} = {self.value}" if self.description: - out += f" # {_cleanhtml(self.description)}" + out += f" # {_cleanhtml(self.description)}" return out diff --git a/tests/test_capella.py b/tests/test_capella.py new file mode 100644 index 0000000..3cce86c --- /dev/null +++ b/tests/test_capella.py @@ -0,0 +1,204 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +import pathlib + +import pytest + +from capella_ros_tools import capella, messages + +EXAMPLE_CAPELLA_PATH = pathlib.Path(__file__).parent.joinpath( + "data/empty_model" +) + + +@pytest.fixture +def sample_capella_data_package(): + capella_path = EXAMPLE_CAPELLA_PATH.as_posix() + return capella.CapellaDataPackage(capella_path, "la") + + +sample_message_person = messages.MessageDef( + "Person", + [ + messages.FieldDef( + messages.TypeDef( + "string", + messages.Range("1", "1"), + ), + "name", + "", + ), + messages.FieldDef( + messages.TypeDef( + "uint8", + messages.Range("1", "1"), + messages.Range("0", "150"), + None, + ), + "age", + "", + ), + messages.FieldDef( + messages.TypeDef( + "Pet", + messages.Range("0", "*"), + ), + "pet", + "", + ), + ], + [], + "", +) + + +sample_message_pet = messages.MessageDef( + "Pet", + [ + messages.FieldDef( + messages.TypeDef( + "string", + messages.Range("1", "1"), + ), + "name", + "", + ), + messages.FieldDef( + messages.TypeDef( + "PetType", + messages.Range("1", "1"), + ), + "type", + "", + ), + ], + [ + messages.EnumDef( + "PetType", + [ + messages.ConstantDef( + messages.TypeDef( + "uint8", + messages.Range("1", "1"), + ), + "CAT", + "0", + "", + ), + messages.ConstantDef( + messages.TypeDef("uint8", messages.Range("1", "1")), + "DOG", + "1", + "", + ), + ], + "", + ), + ], + "", +) + + +@pytest.mark.parametrize( + "sample_pkg_name", ["test_pkg_name", "test_pkg_name_2"] +) +def test_package(sample_capella_data_package, sample_pkg_name): + pkg_def = messages.MessagePkgDef(sample_pkg_name, [], []) + sample_capella_data_package.create_package( + pkg_def, sample_capella_data_package.data_package + ) + + pkg_obj = sample_capella_data_package.create_package( + pkg_def, sample_capella_data_package.data_package + ) + + assert pkg_obj in sample_capella_data_package.data_package.packages + assert pkg_obj.name == sample_pkg_name + + sample_capella_data_package.remove_package( + pkg_obj, sample_capella_data_package.data_package + ) + + assert pkg_obj not in sample_capella_data_package.data_package.packages + + +def _create_and_return_class(sample_capella_data_package, sample_message_def): + sample_capella_data_package.create_class( + sample_message_def, sample_capella_data_package.data_package + ) + cls_obj = sample_capella_data_package.create_class( + sample_message_def, sample_capella_data_package.data_package + ) + return cls_obj + + +@pytest.mark.parametrize( + "sample_message_def", [sample_message_person, sample_message_pet] +) +def test_class(sample_capella_data_package, sample_message_def): + cls_obj = _create_and_return_class( + sample_capella_data_package, sample_message_def + ) + + assert cls_obj in sample_capella_data_package.data_package.classes + assert cls_obj.name == sample_message_def.name + + sample_capella_data_package.remove_class( + cls_obj, sample_capella_data_package.data_package + ) + + assert cls_obj not in sample_capella_data_package.data_package.classes + + +def _create_and_return_enum(sample_capella_data_package, sample_enum_def): + sample_capella_data_package.create_enum( + sample_enum_def, sample_capella_data_package.data_package + ) + enum_obj = sample_capella_data_package.create_enum( + sample_enum_def, sample_capella_data_package.data_package + ) + return enum_obj + + +@pytest.mark.parametrize("sample_enum_def", [sample_message_pet.enums[0]]) +def test_enum(sample_capella_data_package, sample_enum_def): + enum_obj = _create_and_return_enum( + sample_capella_data_package, sample_enum_def + ) + + assert enum_obj in sample_capella_data_package.data_package.datatypes + assert enum_obj.name == sample_enum_def.name + assert len(enum_obj.literals) == len(sample_enum_def.literals) + assert enum_obj.literals[0].name == sample_enum_def.literals[0].name + + sample_capella_data_package.remove_enum( + enum_obj, sample_capella_data_package.data_package + ) + + assert enum_obj not in sample_capella_data_package.data_package.datatypes + + +@pytest.mark.parametrize( + "sample_message_def", + [sample_message_person, sample_message_pet], +) +def test_create_properties(sample_capella_data_package, sample_message_def): + cls_obj = _create_and_return_class( + sample_capella_data_package, sample_message_def + ) + sample_capella_data_package.create_properties( + sample_message_def, sample_capella_data_package.data_package + ) + + assert len(cls_obj.owned_properties) == len(sample_message_def.fields) + for prop, field in zip( + cls_obj.owned_properties, sample_message_def.fields + ): + assert prop.name == field.name + + sample_capella_data_package.remove_class( + cls_obj, sample_capella_data_package.data_package + ) + + assert not cls_obj in sample_capella_data_package.data_package.classes diff --git a/tests/test_capella_ros_tools.py b/tests/test_capella_ros_tools.py deleted file mode 100644 index 29b3e25..0000000 --- a/tests/test_capella_ros_tools.py +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 - -import capella_ros_tools - - -def test_add_some_tests_here(): - ... diff --git a/tests/test_messages.py b/tests/test_messages.py new file mode 100644 index 0000000..708df24 --- /dev/null +++ b/tests/test_messages.py @@ -0,0 +1,135 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +from pathlib import Path + +import pytest + +from capella_ros_tools.messages import ( + CONSTANT_SEPARATOR, + UPPER_BOUND_TOKEN, + ConstantDef, + FieldDef, + MessageDef, + MessagePkgDef, + Range, + TypeDef, +) + +PATH = Path(__file__).parent + + +@pytest.mark.parametrize( + "params, expected_output", + [ + ( + ("test_name", Range("1", "1"), None, "test_package"), + "test_package/test_name", + ), + ( + ("test_name", Range("0", "10"), None, "test_package"), + "test_package/test_name[10]", + ), + ( + ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), + f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", + ), + ], +) +def test_TypeDef_str(params, expected_output): + name, card, range, package = params + + type_def = TypeDef(name, card, range, package) + + assert str(type_def) == expected_output + + +@pytest.mark.parametrize( + "type_str, expected_output", + [ + ( + "test_package/test_name", + ("test_name", Range("1", "1"), None, "test_package"), + ), + ( + "test_package/test_name[10]", + ("test_name", Range("0", "10"), None, "test_package"), + ), + ( + f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", + ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), + ), + ], +) +def test_TypeDef_from_string(type_str, expected_output): + name, card, range, package = expected_output + type_def = TypeDef.from_string(type_str) + + assert type_def.name == name + assert type_def.card == card + assert type_def.range == range + assert type_def.package == package + + +@pytest.mark.parametrize( + "params, expected_output", + [ + ( + ("test_type", "test_name", "test_description"), + "test_type test_name # test_description", + ), + ], +) +def test_FieldDef_str(params, expected_output): + type_str, name, description = params + type_def = TypeDef.from_string(type_str) + + field_def = FieldDef(type_def, name, description) + + assert str(field_def) == expected_output + + +@pytest.mark.parametrize( + "params, expected_output", + [ + ( + ("test_type", "test_name", 1, "test_description"), + f"test_type test_name {CONSTANT_SEPARATOR} 1 # test_description", + ), + ], +) +def test_ConstantDef_str(params, expected_output): + type_str, name, value, description = params + type_def = TypeDef.from_string(type_str) + + constant_def = ConstantDef(type_def, name, value, description) + + assert str(constant_def) == expected_output + + +@pytest.mark.parametrize( + "msg_file_path", + [ + PATH.joinpath("data/example_msgs/msg/CameraInfo.msg"), + PATH.joinpath("data/example_msgs/msg/DiagnosticStatus.msg"), + PATH.joinpath("data/example_msgs/msg/PointCloud2.msg"), + ], +) +def test_MessageDef(msg_file_path): + message_def = MessageDef.from_file(msg_file_path) + + assert message_def.name == msg_file_path.stem + assert str(message_def) == msg_file_path.read_text() + + +@pytest.mark.parametrize( + "pkg_name, msg_path", + [ + ("example_msgs", PATH.joinpath("data/example_msgs")), + ], +) +def test_MessagePkgDef_from_msg_folder(pkg_name, msg_path): + message_pkg_def = MessagePkgDef.from_msg_folder(pkg_name, msg_path) + + assert message_pkg_def.name == pkg_name + assert len(message_pkg_def.messages) == len(list(msg_path.rglob("*.msg"))) From a82fbb83fb3198b96b3a31aa7fa66b471788ed4f Mon Sep 17 00:00:00 2001 From: huyenngn Date: Thu, 22 Feb 2024 12:28:36 +0100 Subject: [PATCH 21/47] fix: Apply suggestions from code review --- .github/workflows/build-test-publish.yml | 133 +++++++++--------- capella_ros_tools/__main__.py | 2 +- capella_ros_tools/capella.py | 74 +++++----- capella_ros_tools/messages.py | 17 +-- capella_ros_tools/scripts/export_capella.py | 15 +- capella_ros_tools/viewer/app.py | 9 +- capella_ros_tools/viewer/static/scripts.js | 125 ++++++++++++++++ capella_ros_tools/viewer/templates/class.html | 118 +--------------- docs/source/{howtos => }/howtos.rst | 4 +- docs/source/index.rst | 14 +- docs/source/{messages => }/messages.rst | 0 docs/source/{usage => }/usage.rst | 0 12 files changed, 263 insertions(+), 248 deletions(-) create mode 100644 capella_ros_tools/viewer/static/scripts.js rename docs/source/{howtos => }/howtos.rst (81%) rename docs/source/{messages => }/messages.rst (100%) rename docs/source/{usage => }/usage.rst (100%) diff --git a/.github/workflows/build-test-publish.yml b/.github/workflows/build-test-publish.yml index edc18e6..a7e547a 100644 --- a/.github/workflows/build-test-publish.yml +++ b/.github/workflows/build-test-publish.yml @@ -4,74 +4,71 @@ name: Build on: - push: - branches: ["*"] - pull_request: [master] - tags: ["v*.*.*"] + push: + branches: ["*"] + pull_request: [master] + tags: ["v*.*.*"] jobs: - test: - name: Test with Python ${{matrix.python_version}} on ${{matrix.os}} - runs-on: ${{matrix.os}} - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - python_version: - - "3.10" - - "3.11" - - "3.12" - include: - - os: windows-latest - python_version: "3.10" - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{matrix.python_version}} - uses: actions/setup-python@v2 - with: - python-version: ${{matrix.python_version}} - - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{runner.os}}-pip-${{hashFiles('pyproject.toml')}} - restore-keys: | - ${{runner.os}}-pip- - ${{runner.os}}- - - name: Upgrade Pip - run: |- - python -m pip install -U pip - - name: Install test dependencies - run: |- - python -m pip install '.[test]' - - name: Run unit tests - run: |- - python -m pytest --cov-report=term --cov=capella_ros_tools --rootdir=. + test: + name: Test with Python ${{matrix.python_version}} on ${{matrix.os}} + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python_version: + - "3.10" + - "3.11" + - "3.12" + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{matrix.python_version}} + uses: actions/setup-python@v2 + with: + python-version: ${{matrix.python_version}} + - uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{runner.os}}-pip-${{hashFiles('pyproject.toml')}} + restore-keys: | + ${{runner.os}}-pip- + ${{runner.os}}- + - name: Upgrade Pip + run: |- + python -m pip install -U pip + - name: Install test dependencies + run: |- + python -m pip install '.[test]' + - name: Run unit tests + run: |- + python -m pytest --cov-report=term --cov=capella_ros_tools --rootdir=. - publish: - name: Publish artifacts - runs-on: ubuntu-latest - needs: test - steps: - - uses: actions/checkout@v2 - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - name: Install dependencies - run: |- - python -m pip install -U pip - python -m pip install build twine - - name: Build packages - run: |- - python -m build - - name: Verify packages - run: |- - python -m twine check dist/* - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: Artifacts - path: 'dist/*' - - name: Publish to PyPI (release only) - if: startsWith(github.ref, 'refs/tags/v') - run: python -m twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --non-interactive dist/* + publish: + name: Publish artifacts + runs-on: ubuntu-latest + needs: test + steps: + - uses: actions/checkout@v2 + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: "3.10" + - name: Install dependencies + run: |- + python -m pip install -U pip + python -m pip install build twine + - name: Build packages + run: |- + python -m build + - name: Verify packages + run: |- + python -m twine check dist/* + - name: Upload artifacts + uses: actions/upload-artifact@v2 + with: + name: Artifacts + path: "dist/*" + - name: Publish to PyPI (release only) + if: startsWith(github.ref, 'refs/tags/v') + run: python -m twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --non-interactive dist/* diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index c85f63d..62f50ca 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -79,7 +79,7 @@ def import_msgs( converter() if port: - app.start(converter.capella.model, layer) + app.start(converter.capella.model, layer, port) @cli.command("export") diff --git a/capella_ros_tools/capella.py b/capella_ros_tools/capella.py index 2667600..4b66175 100644 --- a/capella_ros_tools/capella.py +++ b/capella_ros_tools/capella.py @@ -6,6 +6,7 @@ import typing as t import capellambse +from capellambse.model import common from capellambse.model.crosslayer import information from capella_ros_tools import messages @@ -16,7 +17,7 @@ class CapellaDataPackage: """Capella data package wrapper.""" - def __init__(self, capella_path: str, layer: str): + def __init__(self, capella_path: str, layer: str) -> None: self.model = capellambse.MelodyModel(capella_path) self.data_package = getattr(self.model, layer).data_package try: @@ -28,25 +29,29 @@ def __init__(self, capella_path: str, layer: str): name="Data Types" ) - def remove_class( - self, cls_obj: information.Class, remove_from: information.DataPkg + def _remove_element( + self, + obj: common.GenericElement, + remove_from: information.DataPkg, + attr: str, ): - """Remove class from Capella package.""" try: - remove_from.classes.remove(cls_obj) - logger.info("%s deleted.", cls_obj._short_repr_()) + getattr(remove_from, attr).remove(obj) + logger.info("%s deleted.", obj._short_repr_()) except ValueError: pass + def remove_class( + self, cls_obj: information.Class, remove_from: information.DataPkg + ): + """Remove class from Capella package.""" + self._remove_element(cls_obj, remove_from, "classes") + def remove_package( self, pkg_obj: information.DataPkg, remove_from: information.DataPkg ): """Remove package from Capella package.""" - try: - remove_from.packages.remove(pkg_obj) - logger.info("%s deleted.", pkg_obj._short_repr_()) - except ValueError: - pass + self._remove_element(pkg_obj, remove_from, "packages") def remove_enum( self, @@ -54,11 +59,7 @@ def remove_enum( remove_from: information.DataPkg, ): """Remove enum from Capella package.""" - try: - remove_from.datatypes.remove(enum_obj) - logger.info("%s deleted.", enum_obj._short_repr_()) - except ValueError: - pass + self._remove_element(enum_obj, remove_from, "datatypes") def create_package( self, @@ -182,8 +183,11 @@ def create_properties( superclass, prop, create_in ) - self._set_cardinality(composition, prop.type.card) - self._set_range(composition, prop.type.range) + self._set_range( + composition, ("min_card", "max_card"), prop.type.card + ) + if prop.type.range: + self._set_range(composition, ("min", "max"), prop.type.range) logger.info("Created properties for %s.", cls_def.name) def _create_attribute( @@ -230,28 +234,24 @@ def _create_composition( ) return composition - def _set_cardinality( - self, composition: information.Property, card: messages.Range - ) -> None: - """Set cardinality for composition in Capella model.""" - composition.min_card = capellambse.new_object( - "LiteralNumericValue", value=card.min - ) - composition.max_card = capellambse.new_object( - "LiteralNumericValue", value=card.max - ) - def _set_range( - self, composition: information.Property, range: messages.Range | None + self, + composition: information.Property, + attrs: t.Tuple[str, str], + range: messages.Range, ) -> None: """Set range for composition in Capella model.""" - if range: - composition.min = capellambse.new_object( - "LiteralNumericValue", value=range.min - ) - composition.max = capellambse.new_object( - "LiteralNumericValue", value=range.max - ) + min_attr, max_attr = attrs + setattr( + composition, + min_attr, + capellambse.new_object("LiteralNumericValue", value=range.min), + ) + setattr( + composition, + max_attr, + capellambse.new_object("LiteralNumericValue", value=range.max), + ) def save_changes(self) -> None: """Save changes to Capella model.""" diff --git a/capella_ros_tools/messages.py b/capella_ros_tools/messages.py index 5ca4749..38be4de 100644 --- a/capella_ros_tools/messages.py +++ b/capella_ros_tools/messages.py @@ -29,8 +29,7 @@ def _cleanhtml(raw_html: str): - cleantext = re.sub(HTML_TAG_PATTERN, "", raw_html) - return cleantext + return re.sub(HTML_TAG_PATTERN, "", raw_html) class Range(t.NamedTuple): @@ -49,7 +48,7 @@ def __init__( card: Range, range: Range | None = None, package: str | None = None, - ): + ) -> None: self.name = name self.card = card self.range = range @@ -67,7 +66,7 @@ def __str__(self) -> str: return out @classmethod - def from_string(cls, type_str: str): + def from_string(cls, type_str: str) -> TypeDef: """Create a type definition from a string.""" if type_str.endswith("]"): name, max_card = type_str.split("[") @@ -204,14 +203,16 @@ def __str__(self) -> str: return out @classmethod - def from_file(cls, file: pathlib.Path | abc.AbstractFilePath): + def from_file( + cls, file: pathlib.Path | abc.AbstractFilePath + ) -> MessageDef: """Create message definition from a .msg file.""" msg_name = file.stem msg_string = file.read_text() return cls.from_string(msg_name, msg_string) @classmethod - def from_string(cls, msg_name: str, msg_string: str): + def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: """Create message definition from a string.""" msg_comments, lines = _extract_file_level_comments(msg_string) msg = cls(msg_name, [], [], msg_comments) @@ -342,7 +343,7 @@ def __init__( name: str, messages: list[MessageDef], packages: list[MessagePkgDef], - ): + ) -> None: self.name = name self.messages = messages self.packages = packages @@ -350,7 +351,7 @@ def __init__( @classmethod def from_msg_folder( cls, pkg_name: str, msg_path: pathlib.Path | abc.AbstractFilePath - ): + ) -> MessagePkgDef: """Create a message package definition from a folder.""" out = cls(pkg_name, [], []) for msg_file in msg_path.rglob("*.msg"): diff --git a/capella_ros_tools/scripts/export_capella.py b/capella_ros_tools/scripts/export_capella.py index ea8227e..20a2d64 100644 --- a/capella_ros_tools/scripts/export_capella.py +++ b/capella_ros_tools/scripts/export_capella.py @@ -3,6 +3,7 @@ """Tool for exporting a Capella data package to ROS messages.""" import logging import pathlib +import re from capellambse.model.crosslayer import information @@ -11,6 +12,10 @@ logger = logging.getLogger(__name__) +def _clean_name(name: str) -> str: + return re.sub(r"\W", "", name) + + class Exporter: """Class for exporting a Capella data package as ROS messages.""" @@ -41,7 +46,9 @@ def _handle_pkg( type_def, prop_obj.name, prop_obj.description ) cls_def.fields.append(prop_def) - (current_path / f"{cls_obj.name}.msg").write_text(str(cls_def)) + (current_path / f"{_clean_name(cls_obj.name)}.msg").write_text( + str(cls_def) + ) for enum_obj in current_pkg.enumerations: enum_def = messages.EnumDef( @@ -66,10 +73,12 @@ def _handle_pkg( lit_obj.description, ) enum_def.literals.append(lit_def) - (current_path / f"{enum_obj.name}.msg").write_text(str(enum_def)) + (current_path / f"{_clean_name(enum_obj.name)}.msg").write_text( + str(enum_def) + ) for pkg_obj in current_pkg.packages: - pkg_path = current_path / pkg_obj.name + pkg_path = current_path / _clean_name(pkg_obj.name) pkg_path.mkdir(parents=True, exist_ok=True) self._handle_pkg(pkg_obj, pkg_path) diff --git a/capella_ros_tools/viewer/app.py b/capella_ros_tools/viewer/app.py index 46165ca..00fb876 100644 --- a/capella_ros_tools/viewer/app.py +++ b/capella_ros_tools/viewer/app.py @@ -38,8 +38,7 @@ def root(request: fastapi.Request): "element": element, "get_type": get_type, } - response = templates.TemplateResponse("package.html", context) - return response + return templates.TemplateResponse("package.html", context) @app.get("/{type}/{uuid}.html", response_class=responses.HTMLResponse) @@ -53,16 +52,14 @@ def view(request: fastapi.Request, type: str, uuid: str): "element": element, "get_type": get_type, } - response = templates.TemplateResponse(template, context) - return response + return templates.TemplateResponse(template, context) -def start(model: t.Any, layer: str, port: int = 5000): +def start(model: t.Any, layer: str, port: int): """Start the app.""" "" app.state.model = model app.state.data_package = getattr(model, layer).data_package uvicorn.run( app, - host="0.0.0.0", port=port, ) diff --git a/capella_ros_tools/viewer/static/scripts.js b/capella_ros_tools/viewer/static/scripts.js new file mode 100644 index 0000000..5ac8f29 --- /dev/null +++ b/capella_ros_tools/viewer/static/scripts.js @@ -0,0 +1,125 @@ +/* + * Copyright DB InfraGO AG and contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import * as d3 from "https://cdn.jsdelivr.net/npm/d3@7/+esm"; + +export function initializeDiagram() { + // Select the SVG container + const svg = d3.select(".ClassDiagramBlank"); + svg.attr("width", "100%").attr("height", "100%"); + + // Create a new group element + const svgContainer = svg.append("g"); + + svgContainer.attr("id", "svgContainer"); + + // Select all children of the SVG container except the new group + const children = svg.selectAll(":scope > *:not(#svgContainer)"); + + // Move all children into the group + children.each(function () { + svgContainer.node().appendChild(this); + }); + + svgContainer.select("rect").remove(); + + function escapeUUIDForCSSSelector(uuid) { + // Escape first character if it's a digit + let escapedUUID = uuid[0].match(/^\d/) + ? "\\3" + uuid[0] + " " + uuid.slice(1) + : uuid; + // Escape hyphens + return escapedUUID.replace(/-/g, "\\-"); + } + + let groupedNodes = []; + + svgContainer.selectAll(".Box").each(function () { + if (groupedNodes.includes(this.id)) { + return; + } + groupedNodes.push(this.id); + + var contextGroup = svgContainer.append("g"); + contextGroup.attr("class", "contextGroup"); + this.classList.forEach((id) => { + let uuid = id.replace("context-", ""); + if (id == uuid) { + // Not a context class + return; + } + groupedNodes.push(uuid); + let escapedUUID = escapeUUIDForCSSSelector(uuid); + contextGroup + .node() + .appendChild(d3.select("#" + escapedUUID).node()); + }); + }); + + const draggableElements = svgContainer.selectAll(".contextGroup"); + + // Zoom and pan + svg.call( + d3.zoom().on("zoom", (event) => { + svgContainer.attr("transform", event.transform); + }) + ); + + // Create an array of data with the same length as your selection + let data = Array.from(draggableElements.nodes(), () => ({ + currentX: 0, + currentY: 0, + deltaX: 0, + deltaY: 0, + })); + + // Bind the data to your elements + draggableElements.data(data); + + // Apply the drag behavior to the selected elements + draggableElements.call( + d3 + .drag() + .on("start", dragStarted) + .on("drag", dragged) + .on("end", dragEnded) + ); + + function dragStarted(event, d) { + // Implement any custom behavior on drag start if needed + d.deltaX = event.x - d.currentX; + d.deltaY = event.y - d.currentY; + } + + function dragged(event, d) { + // Implement any custom behavior on drag + d.currentX = event.x - d.deltaX; + d.currentY = event.y - d.deltaY; + + d3.select(this).attr( + "transform", + `translate(${d.currentX},${d.currentY})` + ); + + var boundingBox = svgContainer.node().getBBox(); + svgContainer + .attr("width", boundingBox.width) + .attr("height", boundingBox.height) + .attr( + "viewBox", + `${boundingBox.x} ${boundingBox.y} ${boundingBox.width} ${boundingBox.height}` + ); + } + + function dragEnded(event, d) { + d.deltaX = event.x; + d.deltaY = event.y; + } +} + +// Call initializeDiagram() when the DOM content is loaded +document.addEventListener("DOMContentLoaded", function () { + initializeDiagram(); +}); diff --git a/capella_ros_tools/viewer/templates/class.html b/capella_ros_tools/viewer/templates/class.html index ad9acc2..19ca8f5 100644 --- a/capella_ros_tools/viewer/templates/class.html +++ b/capella_ros_tools/viewer/templates/class.html @@ -50,123 +50,7 @@

                                          diff --git a/docs/source/howtos/howtos.rst b/docs/source/howtos.rst similarity index 81% rename from docs/source/howtos/howtos.rst rename to docs/source/howtos.rst index b7e1443..86a8e3d 100644 --- a/docs/source/howtos/howtos.rst +++ b/docs/source/howtos.rst @@ -31,8 +31,10 @@ Export Capella data package: $ python -m capella_ros_tools export tests/data/melody_model_60 la tests/data/melody_msgs -Export Capella data package from Git Repository (experimental): +Export Capella data package from Git Repository: -------------------------------------------------------- .. code-block:: bash $ python -m capella_ros_tools export git+https://github.com/DSD-DBS/coffee-machine oa tests/data/coffee_msgs + +Note: When exporting Capella enumerations, if the enumeration values are not defined in the Capella model, the values will be set to 0, 1, 2, 3, etc. and the datatype will be set to unit8. diff --git a/docs/source/index.rst b/docs/source/index.rst index 4119af0..f872e4a 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -21,7 +21,7 @@ Capella ROS Tools is a command-line application written in Python, designed to f * generate ROS2 message files (.msg) from Capella models * generate Capella elements and objects from ROS2 message files * support input sources through both local file paths and Git repositories -* disply snapshots of Capella model elements in a tree structure +* display snapshots of Capella model elements in a tree structure If you want a quickstart at how to use this tool, head right into the :ref:`Usage section `. @@ -32,23 +32,23 @@ If you want a quickstart at how to use this tool, head right into the :caption: Contents: .. toctree:: - :maxdepth: 3 + :maxdepth: 2 :caption: Usage - usage/usage + usage .. toctree:: - :maxdepth: 3 + :maxdepth: 2 :caption: Examples - howtos/howtos + howtos .. toctree:: - :maxdepth: 3 + :maxdepth: 2 :caption: ROS2 Messages Layout - messages/messages + messages .. toctree:: :maxdepth: 3 diff --git a/docs/source/messages/messages.rst b/docs/source/messages.rst similarity index 100% rename from docs/source/messages/messages.rst rename to docs/source/messages.rst diff --git a/docs/source/usage/usage.rst b/docs/source/usage.rst similarity index 100% rename from docs/source/usage/usage.rst rename to docs/source/usage.rst From f62e33b4d45141ac4e02e140f393f92babce3cf0 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 6 Mar 2024 11:43:56 +0100 Subject: [PATCH 22/47] fix: Rewrite import to utilize decl --- capella_ros_tools/__main__.py | 54 ++- capella_ros_tools/capella.py | 258 -------------- .../{messages.py => data_model.py} | 268 ++++++++------- capella_ros_tools/scripts/export_capella.py | 30 +- capella_ros_tools/scripts/import_msgs.py | 325 ++++++++++-------- capella_ros_tools/viewer/__init__.py | 3 - capella_ros_tools/viewer/app.py | 65 ---- .../viewer/static/icons/favicon.ico | Bin 1150 -> 0 bytes .../viewer/static/icons/favicon.ico.license | 2 - capella_ros_tools/viewer/static/scripts.js | 125 ------- capella_ros_tools/viewer/static/styles.css | 157 --------- capella_ros_tools/viewer/templates/class.html | 56 --- capella_ros_tools/viewer/templates/enum.html | 51 --- .../viewer/templates/package.html | 78 ----- docs/source/messages.rst | 157 ++------- pyproject.toml | 2 +- tests/conftest.py | 241 +++++++++++++ tests/data/data_model/example_msgs.yaml | 230 +++++++++++++ .../example_msgs/package1/msg/SampleClass.msg | 30 ++ .../package1/msg/SampleClass.msg.license | 2 + .../example_msgs/package1/msg/SampleEnum.msg | 21 ++ .../package1/msg/SampleEnum.msg.license | 2 + .../package2/msg/SampleClassEnum.msg | 21 ++ .../package2/msg/SampleClassEnum.msg.license | 2 + tests/data/empty_model/.project.license | 2 - .../data/empty_model/empty_model.afm.license | 2 - .../data/empty_model/empty_model.aird.license | 2 - .../empty_model/empty_model.capella.license | 2 - .../.project | 2 +- tests/data/empty_project_52/.project.license | 2 + .../empty_project_52.afm} | 4 +- .../empty_project_52.afm.license | 2 + .../empty_project_52.aird} | 33 +- .../empty_project_52.aird.license | 2 + .../empty_project_52.capella} | 252 +++++++------- .../empty_project_52.capella.license | 2 + tests/data/example_msgs/msg/CameraInfo.msg | 134 -------- .../example_msgs/msg/DiagnosticStatus.msg | 21 -- tests/data/example_msgs/msg/PointCloud2.msg | 29 -- tests/test_capella.py | 204 ----------- tests/test_data_model.py | 293 ++++++++++++++++ tests/test_import_msgs.py | 315 +++++++++++++++++ tests/test_messages.py | 135 -------- 43 files changed, 1696 insertions(+), 1922 deletions(-) delete mode 100644 capella_ros_tools/capella.py rename capella_ros_tools/{messages.py => data_model.py} (57%) delete mode 100644 capella_ros_tools/viewer/__init__.py delete mode 100644 capella_ros_tools/viewer/app.py delete mode 100644 capella_ros_tools/viewer/static/icons/favicon.ico delete mode 100644 capella_ros_tools/viewer/static/icons/favicon.ico.license delete mode 100644 capella_ros_tools/viewer/static/scripts.js delete mode 100644 capella_ros_tools/viewer/static/styles.css delete mode 100644 capella_ros_tools/viewer/templates/class.html delete mode 100644 capella_ros_tools/viewer/templates/enum.html delete mode 100644 capella_ros_tools/viewer/templates/package.html create mode 100644 tests/conftest.py create mode 100644 tests/data/data_model/example_msgs.yaml create mode 100644 tests/data/data_model/example_msgs/package1/msg/SampleClass.msg create mode 100644 tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license create mode 100644 tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg create mode 100644 tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg.license create mode 100644 tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg create mode 100644 tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license delete mode 100644 tests/data/empty_model/.project.license delete mode 100644 tests/data/empty_model/empty_model.afm.license delete mode 100644 tests/data/empty_model/empty_model.aird.license delete mode 100644 tests/data/empty_model/empty_model.capella.license rename tests/data/{empty_model => empty_project_52}/.project (88%) create mode 100644 tests/data/empty_project_52/.project.license rename tests/data/{empty_model/empty_model.afm => empty_project_52/empty_project_52.afm} (54%) create mode 100644 tests/data/empty_project_52/empty_project_52.afm.license rename tests/data/{empty_model/empty_model.aird => empty_project_52/empty_project_52.aird} (59%) create mode 100644 tests/data/empty_project_52/empty_project_52.aird.license rename tests/data/{empty_model/empty_model.capella => empty_project_52/empty_project_52.capella} (59%) create mode 100644 tests/data/empty_project_52/empty_project_52.capella.license delete mode 100644 tests/data/example_msgs/msg/CameraInfo.msg delete mode 100644 tests/data/example_msgs/msg/DiagnosticStatus.msg delete mode 100644 tests/data/example_msgs/msg/PointCloud2.msg delete mode 100644 tests/test_capella.py create mode 100644 tests/test_data_model.py create mode 100644 tests/test_import_msgs.py delete mode 100644 tests/test_messages.py diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 62f50ca..2c124bb 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -2,10 +2,12 @@ # SPDX-License-Identifier: Apache-2.0 """Main entry point into Capella ROS Tools.""" +import io import pathlib -import sys +import capellambse import click +from capellambse import cli_helpers, decl import capella_ros_tools @@ -22,13 +24,13 @@ def cli(): @cli.command("import") @click.argument( - "msg_path", - type=click.Path(), + "messages", + type=str, required=True, ) @click.argument( - "capella_path", - type=click.Path(exists=True), + "model", + type=cli_helpers.ModelCLI(), required=True, ) @click.argument( @@ -36,15 +38,6 @@ def cli(): type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, ) -@click.option( - "--exists-action", - "action", - type=click.Choice( - ["skip", "replace", "abort", "ask"], case_sensitive=False - ), - default="ask" if sys.stdin.isatty() else "abort", - help="Default action when an element already exists.", -) @click.option( "--no-deps", "no_deps", @@ -53,47 +46,43 @@ def cli(): ) @click.option("--port", type=int, help="Open model viewer on given port.") def import_msgs( - msg_path: str, - capella_path: str, + messages: str, + model: capellambse.MelodyModel, layer: str, - action: str, no_deps: bool, port: int, ) -> None: """Import ROS messages into a Capella data package. - MSG_PATH: Path to folder with .msg files. - CAPELLA_PATH: Path to Capella model. + MESSAGES: File path or git URL to ROS messages. + MODEL: Path to Capella model. LAYER: Layer of Capella model to import elements to. """ - from capellambse import filehandler from capella_ros_tools.scripts import import_msgs as importer - from capella_ros_tools.viewer import app - msg_filehandler = filehandler.get_filehandler(msg_path).rootdir + root_uuid = getattr(model, layer).uuid + types_uuid = model.sa.data_package.uuid - converter = importer.Importer( - msg_filehandler, capella_path, layer, action, no_deps - ) - converter() + yml = importer.Importer(messages, no_deps)(root_uuid, types_uuid) + decl.apply(model, io.StringIO(yml)) if port: - app.start(converter.capella.model, layer, port) + raise NotImplementedError("Open model with model explorer.") @cli.command("export") -@click.argument("capella_path", type=click.Path(), required=True) +@click.argument("model", type=cli_helpers.ModelCLI, required=True) @click.argument( "layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, ) @click.argument( - "msg_path", type=click.Path(path_type=pathlib.Path), required=True + "messages", type=click.Path(path_type=pathlib.Path), required=True ) def export_capella( - capella_path: str, + model: capellambse.MelodyModel, layer: str, msg_path: pathlib.Path, ): @@ -101,12 +90,11 @@ def export_capella( CAPELLA_PATH: Path to Capella model. LAYER: Layer of Capella model to export elements from. - MSG_PATH: Path to output folder for .msg files. + MESSAGES: Path to output folder for .msg files. """ from capella_ros_tools.scripts import export_capella as exporter - converter = exporter.Exporter(capella_path, layer, msg_path) - converter() + exporter.Exporter(model, layer, msg_path)() if __name__ == "__main__": diff --git a/capella_ros_tools/capella.py b/capella_ros_tools/capella.py deleted file mode 100644 index 4b66175..0000000 --- a/capella_ros_tools/capella.py +++ /dev/null @@ -1,258 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""High-level interface for interacting with Capella data packages.""" - -import logging -import typing as t - -import capellambse -from capellambse.model import common -from capellambse.model.crosslayer import information - -from capella_ros_tools import messages - -logger = logging.getLogger(__name__) - - -class CapellaDataPackage: - """Capella data package wrapper.""" - - def __init__(self, capella_path: str, layer: str) -> None: - self.model = capellambse.MelodyModel(capella_path) - self.data_package = getattr(self.model, layer).data_package - try: - self.data_types = self.model.sa.data_package.packages.by_name( - "Data Types" - ) - except KeyError: - self.data_types = self.model.sa.data_package.packages.create( - name="Data Types" - ) - - def _remove_element( - self, - obj: common.GenericElement, - remove_from: information.DataPkg, - attr: str, - ): - try: - getattr(remove_from, attr).remove(obj) - logger.info("%s deleted.", obj._short_repr_()) - except ValueError: - pass - - def remove_class( - self, cls_obj: information.Class, remove_from: information.DataPkg - ): - """Remove class from Capella package.""" - self._remove_element(cls_obj, remove_from, "classes") - - def remove_package( - self, pkg_obj: information.DataPkg, remove_from: information.DataPkg - ): - """Remove package from Capella package.""" - self._remove_element(pkg_obj, remove_from, "packages") - - def remove_enum( - self, - enum_obj: information.datatype.Enumeration, - remove_from: information.DataPkg, - ): - """Remove enum from Capella package.""" - self._remove_element(enum_obj, remove_from, "datatypes") - - def create_package( - self, - pkg_def: messages.MessagePkgDef, - create_in: information.DataPkg, - ) -> information.DataPkg | None: - """Create package in Capella package. - - Returns - ------- - Package object if package already exists, else None. - """ - try: - pkg_obj = self.model.search( - "DataPkg", below=self.data_package - ).by_name(pkg_def.name) - logger.info("%s already exists.", pkg_obj._short_repr_()) - return pkg_obj - except KeyError: - pkg_obj = create_in.packages.create( - name=pkg_def.name, - ) - logger.info("%s created.", pkg_obj._short_repr_()) - return None - - def create_class( - self, - cls_def: messages.MessageDef, - create_in: information.DataPkg, - ) -> information.Class | None: - """Create class in Capella package. - - Returns - ------- - Class object if class already exists, else None. - """ - try: - cls_obj = create_in.classes.by_name(cls_def.name) - logger.info("%s already exists.", cls_obj._short_repr_()) - return cls_obj - except KeyError: - cls_obj = create_in.classes.create( - name=cls_def.name, description=cls_def.description - ) - logger.info("%s created.", cls_obj._short_repr_()) - return None - - def create_enum( - self, enum_def: messages.EnumDef, create_in: information.DataPkg - ) -> information.datatype.Enumeration | None: - """Create enum in Capella package. - - Returns - ------- - Enumeration object if enumeration already exists, else None. - """ - try: - enum_obj = create_in.datatypes.by_name(enum_def.name) - logger.info("%s already exists.", enum_obj._short_repr_()) - return enum_obj - except KeyError: - enum_obj = create_in.datatypes.create( - "Enumeration", - name=enum_def.name, - description=enum_def.description, - ) - for literal in enum_def.literals: - literal_obj = enum_obj.owned_literals.create( - "EnumerationLiteral", - name=literal.name, - description=literal.description, - ) - literal_obj.value = capellambse.new_object( - "LiteralNumericValue", - value=str(literal.value), - ) - logger.info("%s created.", enum_obj._short_repr_()) - return None - - def _get_parent( - self, package_name: str | None, default: information.DataPkg - ) -> information.DataPkg: - try: - return self.model.search( - "DataPkg", below=self.data_package - ).by_name(package_name) - except KeyError: - return default - - def create_properties( - self, - cls_def: messages.MessageDef, - create_in: information.DataPkg, - ) -> None: - """Create properties for Capella class.""" - superclass = create_in.classes.by_name(cls_def.name) - - for prop in cls_def.fields: - try: - parent = self._get_parent(prop.type.package, create_in) - partclass = parent.classes.by_name(prop.type.name) - composition = self._create_composition( - superclass, prop, partclass - ) - association = create_in.owned_associations.create( - navigable_members=[composition] - ) - association.members.create( - "Property", - type=superclass, - kind="ASSOCIATION", - min_card=capellambse.new_object( - "LiteralNumericValue", value="1" - ), - max_card=capellambse.new_object( - "LiteralNumericValue", value="1" - ), - ) - except KeyError: - composition = self._create_attribute( - superclass, prop, create_in - ) - - self._set_range( - composition, ("min_card", "max_card"), prop.type.card - ) - if prop.type.range: - self._set_range(composition, ("min", "max"), prop.type.range) - logger.info("Created properties for %s.", cls_def.name) - - def _create_attribute( - self, - superclass: information.Class, - attr: messages.FieldDef, - parent: information.DataPkg, - ) -> information.Property: - type_name = attr.type.name - try: - attr_type = parent.datatypes.by_name(type_name) - except KeyError: - if "char" in type_name or "string" in type_name: - type = "StringType" - elif "bool" in type_name or "boolean" in type_name: - type = "BooleanType" - else: - type = "NumericType" - - attr_type = self.data_types.datatypes.create(type, name=type_name) - - composition = self._create_composition(superclass, attr, attr_type) - return composition - - def _create_composition( - self, - superclass: information.Class, - prop_def: messages.FieldDef, - property_type: ( - information.Class | t.Type[information.datatype.DataType] - ), - ) -> information.Property: - """Create composition for Capella class.""" - try: - overlap = superclass.owned_properties.by_name(prop_def.name) - superclass.owned_properties.remove(overlap) - except KeyError: - pass - composition = superclass.owned_properties.create( - name=prop_def.name, - type=property_type, - kind="COMPOSITION", - description=prop_def.description, - ) - return composition - - def _set_range( - self, - composition: information.Property, - attrs: t.Tuple[str, str], - range: messages.Range, - ) -> None: - """Set range for composition in Capella model.""" - min_attr, max_attr = attrs - setattr( - composition, - min_attr, - capellambse.new_object("LiteralNumericValue", value=range.min), - ) - setattr( - composition, - max_attr, - capellambse.new_object("LiteralNumericValue", value=range.max), - ) - - def save_changes(self) -> None: - """Save changes to Capella model.""" - self.model.save() diff --git a/capella_ros_tools/messages.py b/capella_ros_tools/data_model.py similarity index 57% rename from capella_ros_tools/messages.py rename to capella_ros_tools/data_model.py index 38be4de..195cc2d 100644 --- a/capella_ros_tools/messages.py +++ b/capella_ros_tools/data_model.py @@ -8,6 +8,7 @@ import pathlib import re import typing as t +from dataclasses import dataclass from capellambse.filehandler import abc @@ -19,19 +20,24 @@ VALID_MESSAGE_NAME_PATTERN = "[A-Z][A-Za-z0-9]*" VALID_CONSTANT_NAME_PATTERN = "[A-Z](?:[A-Z0-9_]*[A-Z0-9])?" VALID_REF_COMMENT_PATTERN = re.compile( - r"cf\.\s*" + r".*cf\.\s*" rf"({VALID_MESSAGE_NAME_PATTERN})" r"(?:,\s*" rf"({VALID_CONSTANT_NAME_PATTERN}))?" + r"\s*.*" ) HTML_TAG_PATTERN = re.compile("<.*?>") -def _cleanhtml(raw_html: str): +def _clean_html(raw_html: str): return re.sub(HTML_TAG_PATTERN, "", raw_html) +def _clean_comment(comment: str) -> str: + return comment.strip(COMMENT_DELIMITER).strip() + + class Range(t.NamedTuple): """Define range of values.""" @@ -39,20 +45,14 @@ class Range(t.NamedTuple): max: str +@dataclass class TypeDef: """Type definition.""" - def __init__( - self, - name: str, - card: Range, - range: Range | None = None, - package: str | None = None, - ) -> None: - self.name = name - self.card = card - self.range = range - self.package = package + name: str + card: Range + range: Range | None = None + package: str | None = None def __str__(self) -> str: """Return string representation of the type.""" @@ -69,10 +69,10 @@ def __str__(self) -> str: def from_string(cls, type_str: str) -> TypeDef: """Create a type definition from a string.""" if type_str.endswith("]"): - name, max_card = type_str.split("[") + name, _, max_card = type_str.partition("[") max_card = max_card.rstrip("]") if max_card.startswith(UPPER_BOUND_TOKEN): - range = Range("0", max_card[len(UPPER_BOUND_TOKEN) :]) + range = Range("0", max_card.strip(UPPER_BOUND_TOKEN)) card = Range("1", "1") else: range = None @@ -83,128 +83,129 @@ def from_string(cls, type_str: str) -> TypeDef: card = Range("1", "1") range = None - if ( - len(name_split := name.split(PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR)) - > 1 - ): - package, name = name_split + if len(temp := name.split(PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR)) == 2: + package, name = temp else: package = None return cls(name, card, range, package) +@dataclass class FieldDef: """Definition of a field in a ROS message.""" - def __init__(self, type: TypeDef, name: str, description: str) -> None: - self.type = type - self.name = name - self.description = description + type: TypeDef + name: str + description: str def __str__(self) -> str: """Return string representation of the field.""" out = f"{self.type} {self.name}" if self.description: - out += f" # {_cleanhtml(self.description)}" + out += f" # {_clean_html(self.description)}" return out +@dataclass class ConstantDef: """Definition of a constant in a ROS message.""" - def __init__( - self, - type: TypeDef, - name: str, - value: str, - description: str, - ) -> None: - self.type = type - self.name = name - self.value = value - self.description = description + type: TypeDef + name: str + value: str + description: str def __str__(self) -> str: """Return string representation of the constant.""" out = f"{self.type} {self.name} = {self.value}" if self.description: - out += f" # {_cleanhtml(self.description)}" + out += f" # {_clean_html(self.description)}" return out +@dataclass class EnumDef: """Definition of an enum in a ROS message.""" - def __init__( - self, name: str, literals: list[ConstantDef], description: str - ) -> None: - self.name = name - self.literals = literals - self.description = description + name: str + literals: list[ConstantDef] + description: str def __str__(self) -> str: """Return string representation of the enum.""" - out = f"\n# name: {self.name}" - if self.description: - out += f"\n# info: {_cleanhtml(self.description)}" + out = f"# {_clean_html(self.description)}" if self.description else "" for literal in self.literals: out += f"\n{literal}" - out += "\n" return out + def __eq__(self, other: object) -> bool: + """Return whether the enum is equal to another.""" + if not isinstance(other, EnumDef): + return NotImplemented + return ( + other.name == self.name + and all(literal in self.literals for literal in other.literals) + and other.description == self.description + ) + def _extract_file_level_comments( - message_string: str, + msg_string: str, ) -> t.Tuple[str, list[str]]: """Extract comments at the beginning of the message.""" - message_string = message_string.lstrip("\n") - lines = message_string.splitlines() + lines = msg_string.lstrip("\n").splitlines() + lines.append("") file_level_comments = "" - - index = 0 - for index, line in enumerate(lines): + i = 0 + for i, line in enumerate(lines): + line = line.strip() if not line.startswith(COMMENT_DELIMITER): - break - if line: - file_level_comments += ( - f"{'

                                          '+line.rstrip(COMMENT_DELIMITER).strip()+'

                                          '}" - ) + if line: + return "", lines + else: + break + file_level_comments += f"

                                          {_clean_comment(line)}

                                          " - file_content = lines[index:] + [""] + file_content = lines[i:] return file_level_comments, file_content +@dataclass class MessageDef: """Definition of a ROS message.""" - def __init__( - self, - name: str, - fields: list[FieldDef], - enums: list[EnumDef], - description: str, - ) -> None: - self.name = name - self.fields = fields - self.enums = enums - self.description = description + name: str + fields: list[FieldDef] + enums: list[EnumDef] + description: str def __str__(self) -> str: """Return string representation of the message.""" - out = f"\n# name: {self.name}" if self.description: - out += f"\n# info: {_cleanhtml(self.description)}" - out += "\n" + out = f"# {_clean_html(self.description)}\n\n" + else: + out = "" for enum in self.enums: - out += f"{enum}" + out += f"{enum}\n\n" for field in self.fields: - out += f"\n{field}" + out += f"{field}\n" return out + def __eq__(self, other: object) -> bool: + """Return whether the message is equal to another.""" + if not isinstance(other, MessageDef): + return NotImplemented + return ( + other.name == self.name + and all(field in self.fields for field in other.fields) + and all(enum in self.enums for enum in other.enums) + and other.description == self.description + ) + @classmethod def from_file( - cls, file: pathlib.Path | abc.AbstractFilePath + cls, file: abc.AbstractFilePath | pathlib.Path ) -> MessageDef: """Create message definition from a .msg file.""" msg_name = file.stem @@ -216,60 +217,57 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: """Create message definition from a string.""" msg_comments, lines = _extract_file_level_comments(msg_string) msg = cls(msg_name, [], [], msg_comments) - last_element: t.Any = msg + last_element: t.Any = None block_comments = "" - index = 0 + index = -1 + last_value = float("inf") for line in lines: line = line.rstrip() if not line: # new block - if index == 0: - continue - if isinstance(last_element, ConstantDef): - last_element = msg.enums[-1] - block_comments = "" + if index != 0: + block_comments = "" continue last_index = index index = line.find(COMMENT_DELIMITER) if index == -1: # no comment - comment = block_comments + comment = "" elif index == 0: # block comment - if last_index != 0: - # new block comment + if last_index > 0: + # block comments were used block_comments = "" - block_comments += ( - f"

                                          {line[index:].rstrip(COMMENT_DELIMITER).strip()}

                                          " - ) + block_comments += f"

                                          {_clean_comment(line)}

                                          " continue else: - comment = ( - f"

                                          {line[index:].rstrip(COMMENT_DELIMITER).strip()}

                                          " - ) + # inline comment + comment = f"

                                          {_clean_comment(line[index:])}

                                          " line = line[:index].rstrip() if not line: # indented comment last_element.description += comment continue - comment = block_comments + comment type_string, _, rest = line.partition(" ") name, _, value = rest.partition(CONSTANT_SEPARATOR) - name = name.rstrip() + name = name.strip() + value = value.strip() if value: # constant - value = value.lstrip() - if not isinstance(last_element, ConstantDef): - enum_def = EnumDef("", [], "") + if int(value) <= last_value: + # new enum + enum_def = EnumDef("", [], block_comments) + block_comments = "" msg.enums.append(enum_def) + last_value = int(value) constant_def = ConstantDef( TypeDef.from_string(type_string), name, value, - comment, + block_comments + comment, ) msg.enums[-1].literals.append(constant_def) last_element = constant_def @@ -278,32 +276,15 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: field_def = FieldDef( TypeDef.from_string(type_string), name, - comment, + block_comments + comment, ) msg.fields.append(field_def) last_element = field_def for field in msg.fields: - if match := VALID_REF_COMMENT_PATTERN.match(field.description): - ref_msg_name, ref_const_name = match.groups() - if ref_const_name: - field.type.name = _get_enum_identifier( - ref_const_name.rstrip("_XXX") - ) - else: - field.type.name = ref_msg_name - - for i, enum in enumerate(msg.enums): - next_enum = msg.enums[i + 1] if i < len(msg.enums) - 1 else None - enum_value_type = enum.literals[0].type.name - if ( - next_enum - and next_enum.literals[0].type.name == enum_value_type - and (len(enum.literals) == 1 or len(next_enum.literals) == 1) - ): - enum.literals.extend(next_enum.literals) - del next_enum + _process_comment(field) + for enum in msg.enums: common_prefix = os.path.commonprefix( [literal.name for literal in enum.literals] ) @@ -314,43 +295,64 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: else: enum.name = msg_name if not msg.fields else msg_name + "Type" - name_matched = False for field in msg.fields: if field.name.lower() == enum.name.lower(): + # name match found field.type.name = enum.name - name_matched = True + field.type.package = "types" break - - if not name_matched: + else: + # no name match found for field in msg.fields: - if field.type.name == enum_value_type: + if field.type.name == enum.literals[0].type.name: + # type match found + enum.name = msg_name + field.name.capitalize() field.type.name = enum.name + field.type.package = "types" break return msg +def _process_comment(field: FieldDef) -> None: + """Process comment of a field.""" + if match := VALID_REF_COMMENT_PATTERN.match(field.description): + field.type.package = "types" + ref_msg_name, ref_const_name = match.groups() + if ref_const_name: + field.type.name = _get_enum_identifier( + ref_const_name.rstrip("_XXX") + ) + else: + field.type.name = ref_msg_name + + def _get_enum_identifier(common_prefix: str) -> str: """Get the identifier of an enum.""" return "".join([x.capitalize() for x in common_prefix.split("_")]) +@dataclass class MessagePkgDef: """Definition of a ROS message package.""" - def __init__( - self, - name: str, - messages: list[MessageDef], - packages: list[MessagePkgDef], - ) -> None: - self.name = name - self.messages = messages - self.packages = packages + name: str + messages: list[MessageDef] + packages: list[MessagePkgDef] + + def __eq__(self, other: object) -> bool: + """Return whether the message package is equal to another.""" + if not isinstance(other, MessagePkgDef): + return NotImplemented + return ( + other.name == self.name + and all(message in self.messages for message in other.messages) + and all(package in self.packages for package in other.packages) + ) @classmethod def from_msg_folder( - cls, pkg_name: str, msg_path: pathlib.Path | abc.AbstractFilePath + cls, pkg_name: str, msg_path: abc.AbstractFilePath | pathlib.Path ) -> MessagePkgDef: """Create a message package definition from a folder.""" out = cls(pkg_name, [], []) diff --git a/capella_ros_tools/scripts/export_capella.py b/capella_ros_tools/scripts/export_capella.py index 20a2d64..a63ba35 100644 --- a/capella_ros_tools/scripts/export_capella.py +++ b/capella_ros_tools/scripts/export_capella.py @@ -5,9 +5,10 @@ import pathlib import re +import capellambse from capellambse.model.crosslayer import information -from capella_ros_tools import capella, messages +from capella_ros_tools import data_model logger = logging.getLogger(__name__) @@ -20,11 +21,14 @@ class Exporter: """Class for exporting a Capella data package as ROS messages.""" def __init__( - self, capella_path: str, layer: str, output_path: pathlib.Path + self, + model: capellambse.MelodyModel, + layer: str, + output_path: pathlib.Path, ): - self.capella = capella.CapellaDataPackage(capella_path, layer) + self._data_package = getattr(model, layer).data_package output_path.mkdir(parents=True, exist_ok=True) - self.msg_path = output_path + self._output_path = output_path def _handle_pkg( self, @@ -32,17 +36,17 @@ def _handle_pkg( current_path: pathlib.Path, ): for cls_obj in current_pkg.classes: - cls_def = messages.MessageDef( + cls_def = data_model.MessageDef( cls_obj.name, [], [], cls_obj.description ) for prop_obj in cls_obj.owned_properties: - type_def = messages.TypeDef( + type_def = data_model.TypeDef( prop_obj.type.name, - messages.Range( + data_model.Range( prop_obj.min_card.value, prop_obj.max_card.value ), ) - prop_def = messages.FieldDef( + prop_def = data_model.FieldDef( type_def, prop_obj.name, prop_obj.description ) cls_def.fields.append(prop_def) @@ -51,7 +55,7 @@ def _handle_pkg( ) for enum_obj in current_pkg.enumerations: - enum_def = messages.EnumDef( + enum_def = data_model.EnumDef( enum_obj.name, [], enum_obj.description ) for i, lit_obj in enumerate(enum_obj.owned_literals): @@ -63,10 +67,10 @@ def _handle_pkg( literal_value = lit_obj.value.value except AttributeError: literal_value = i - type_def = messages.TypeDef( - type_name, messages.Range("1", "1") + type_def = data_model.TypeDef( + type_name, data_model.Range("1", "1") ) - lit_def = messages.ConstantDef( + lit_def = data_model.ConstantDef( type_def, lit_obj.name, literal_value, @@ -84,4 +88,4 @@ def _handle_pkg( def __call__(self): """Export the Capella data package as ROS messages.""" - self._handle_pkg(self.capella.data_package, self.msg_path) + self._handle_pkg(self._data_package, self._output_path) diff --git a/capella_ros_tools/scripts/import_msgs.py b/capella_ros_tools/scripts/import_msgs.py index 8c311d0..b4e5af8 100644 --- a/capella_ros_tools/scripts/import_msgs.py +++ b/capella_ros_tools/scripts/import_msgs.py @@ -4,11 +4,11 @@ import logging -import click +import capellambse +from capellambse import decl, filehandler, helpers from capellambse.filehandler import abc -from capellambse.model.crosslayer import information -from capella_ros_tools import capella, messages +from capella_ros_tools import data_model ROS2_INTERFACES = { "common_interfaces": "git+https://github.com/ros2/common_interfaces", @@ -26,161 +26,192 @@ class Importer: def __init__( self, - msg_path: abc.AbstractFilePath, - capella_path: str, - layer: str, - action: str, + msg_path: str, no_deps: bool, ): - pkg_name = msg_path.stem if msg_path.stem else "ros_msgs" - pkg_def = messages.MessagePkgDef.from_msg_folder(pkg_name, msg_path) - - self.messages = messages.MessagePkgDef("", [], [pkg_def]) - self.capella = capella.CapellaDataPackage(capella_path, layer) - self.action = action + self.messages = data_model.MessagePkgDef("root", [], []) + self._promise_ids: set[str] = set() + self._promise_id_refs: set[str] = set() + self._add_packages("ros_msgs", msg_path) if no_deps: return - from capellambse import filehandler for interface_name, interface_url in ROS2_INTERFACES.items(): - interface_path = filehandler.get_filehandler(interface_url).rootdir - for dir in interface_path.rglob("msg"): - pkg_name = dir.parent.name or interface_name - pkg_def = messages.MessagePkgDef.from_msg_folder(pkg_name, dir) - self.messages.packages.append(pkg_def) - - def _handle_objects_skip( + self._add_packages(interface_name, interface_url) + + def _add_packages(self, name: str, path: str) -> None: + root = filehandler.get_filehandler(path).rootdir + for dir in root.rglob("msg"): + pkg_name = dir.parent.name or name + pkg_def = data_model.MessagePkgDef.from_msg_folder(pkg_name, dir) + self.messages.packages.append(pkg_def) + + def _convert_datatype(self, promise_id: str) -> dict: + name = promise_id.split(".", 1)[-1] + if any(t in name for t in ["char", "str"]): + _type = "StringType" + elif any(t in name for t in ["bool", "byte"]): + _type = "BooleanType" + else: + _type = "NumericType" + yml = { + "promise_id": promise_id, + "find": { + "name": name, + "_type": _type, + }, + } + return yml + + def _convert_package( self, - elem_def_list: list, - attr_name: str, - current_root: information.DataPkg, - ): - for elem_def in elem_def_list: - getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root + parent: decl.Promise | decl.UUIDReference, + pkg_def: data_model.MessagePkgDef, + ) -> list[dict]: + instructions = [] + classes = [] + enums = [] + packages = [] + + for msg_def in pkg_def.messages: + if msg_def.fields: + classes.append(self._convert_class(pkg_def.name, msg_def)) + for enum_def in msg_def.enums: + enums.append(self._convert_enum(enum_def)) + + for new_pkg in pkg_def.packages: + promise_id = f"{pkg_def.name}.{new_pkg.name}" + self._promise_ids.add(promise_id) + packages.append( + { + "promise_id": promise_id, + "find": { + "name": new_pkg.name, + }, + } + ) + instructions.extend( + self._convert_package(decl.Promise(promise_id), new_pkg) ) - def _handle_objects_replace( - self, - elem_def_list: list, - attr_name: str, - current_root: information.DataPkg, - ): - for elem_def in elem_def_list: - if elem_obj := getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root - ): - getattr(self.capella, f"remove_{attr_name}")( - elem_obj, current_root - ) - getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root - ) - - def _handle_objects_abort( - self, - elem_def_list: list, - attr_name: str, - current_root: information.DataPkg, - ): - for elem_def in elem_def_list: - if getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root - ): - raise click.Abort() + sync = {} + if classes: + sync["classes"] = classes + if enums: + sync["enumerations"] = enums + if packages: + sync["packages"] = packages + + if sync: + instructions.append( + { + "parent": parent, + "sync": sync, + } + ) - def _handle_objects_ask( - self, - elem_def_list: list, - attr_name: str, - current_root: information.DataPkg, - ): - for i, elem_def in enumerate(elem_def_list): - if elem_obj := getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root - ): - confirm = click.prompt( - f"{elem_def.name} already exists. Overwrite? [y]es / [Y]es to all / [n]o / [N]o to all", - type=click.Choice( - ["y", "Y", "n", "N"], - case_sensitive=True, - ), + return instructions + + def _convert_class( + self, pkg_name: str, msg_def: data_model.MessageDef + ) -> dict: + promise_id = f"{pkg_name}.{msg_def.name}" + self._promise_ids.add(promise_id) + props = [] + for field_def in msg_def.fields: + promise_ref = ( + f"{field_def.type.package or pkg_name}.{field_def.type.name}" + ) + self._promise_id_refs.add(promise_ref) + prop_yml = { + "name": field_def.name, + "type": decl.Promise(promise_ref), + "description": field_def.description, + "min_card": decl.NewObject( + "LiteralNumericValue", value=field_def.type.card.min + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value=field_def.type.card.max + ), + } + if field_def.type.range: + prop_yml["min_value"] = decl.NewObject( + "LiteralNumericValue", value=field_def.type.range.min ) - if confirm == "n": - continue - elif confirm == "N": - for elem_def in elem_def_list[(i + 1) :]: - getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root - ) - self.action = "skip" - break - elif confirm == "y": - getattr(self.capella, f"remove_{attr_name}")( - elem_obj, current_root - ) - getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root - ) - elif confirm == "Y": - for elem_def in elem_def_list[i:]: - if elem_obj := getattr( - self.capella, f"create_{attr_name}" - )(elem_def, current_root): - getattr(self.capella, f"remove_{attr_name}")( - elem_obj, current_root - ) - getattr(self.capella, f"create_{attr_name}")( - elem_def, current_root - ) - self.action = "replace" - break - - def _handle_objects( - self, - current_pkg_def: messages.MessagePkgDef, - current_root: information.DataPkg, - ): - elem_types = [ - ("package", current_pkg_def.packages), - ("class", current_pkg_def.messages), - ( - "enum", - [ - enum - for msg in current_pkg_def.messages - for enum in msg.enums + prop_yml["max_value"] = decl.NewObject( + "LiteralNumericValue", value=field_def.type.range.max + ) + props.append(prop_yml) + + yml = { + "promise_id": promise_id, + "find": { + "name": msg_def.name, + }, + "set": { + "description": msg_def.description, + "properties": props, + }, + } + return yml + + def _convert_enum(self, enum_def: data_model.EnumDef) -> dict: + promise_id = f"types.{enum_def.name}" + self._promise_ids.add(promise_id) + yml = { + "promise_id": promise_id, + "find": { + "name": enum_def.name, + }, + "set": { + "description": enum_def.description, + "literals": [ + { + "name": literal.name, + "description": literal.description, + "value": decl.NewObject( + "LiteralNumericValue", value=literal.value + ), + } + for literal in enum_def.literals ], - ), - ] - - for elem_type, elem_def_list in elem_types: - getattr(self, f"_handle_objects_{self.action}")( - elem_def_list, elem_type, current_root + }, + } + + return yml + + def __call__(self, layer_data_uuid: str, sa_data_uuid) -> str: + """Import ROS messages into a Capella data package.""" + instructions = self._convert_package( + decl.UUIDReference(helpers.UUIDString(layer_data_uuid)), + self.messages, + ) + + if needed_types := self._promise_id_refs - self._promise_ids: + datatypes = [ + self._convert_datatype(promise_id) + for promise_id in needed_types + ] + instructions.extend( + [ + { + "parent": decl.UUIDReference( + helpers.UUIDString(sa_data_uuid) + ), + "sync": { + "packages": [ + { + "promise_id": "root.DataTypes", + "find": {"name": "Data Types"}, + } + ], + }, + }, + { + "parent": decl.Promise("root.DataTypes"), + "sync": {"datatypes": datatypes}, + }, + ] ) - - for new_pkg_def in current_pkg_def.packages: - new_root = current_root.packages.by_name(new_pkg_def.name) - self._handle_objects(new_pkg_def, new_root) - - def _handle_relations( - self, - current_pkg_def: messages.MessagePkgDef, - current_root: information.DataPkg, - ): - for msg in current_pkg_def.messages: - self.capella.create_properties(msg, current_root) - - for new_pkg_def in current_pkg_def.packages: - new_root = current_root.packages.by_name(new_pkg_def.name) - self._handle_relations(new_pkg_def, new_root) - - def __call__(self): - """Convert JSON to Capella data package.""" - current_root = self.capella.data_package - - self._handle_objects(self.messages, current_root) - self._handle_relations(self.messages, current_root) - - self.capella.save_changes() + return decl.dump(instructions) diff --git a/capella_ros_tools/viewer/__init__.py b/capella_ros_tools/viewer/__init__.py deleted file mode 100644 index 248637b..0000000 --- a/capella_ros_tools/viewer/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""The viewer package.""" diff --git a/capella_ros_tools/viewer/app.py b/capella_ros_tools/viewer/app.py deleted file mode 100644 index 00fb876..0000000 --- a/capella_ros_tools/viewer/app.py +++ /dev/null @@ -1,65 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Web view of Capella data package.""" - -import pathlib -import typing as t - -import fastapi -import uvicorn -from fastapi import responses, staticfiles, templating - -PATH = pathlib.Path(__file__).parent - - -app = fastapi.FastAPI(title="Capella JSON Tools") -app.mount( - "/static", - staticfiles.StaticFiles(directory=PATH.joinpath("static")), - name="static", -) -templates = templating.Jinja2Templates(directory=PATH.joinpath("templates")) - - -def get_type(xtype: str) -> str: - """Return type name from xtype.""" - return xtype.rpartition(":")[2] - - -templates.env.globals.update(get_type=get_type) - - -@app.get("/", response_class=responses.HTMLResponse) -def root(request: fastapi.Request): - """Display root data package.""" - element = app.state.data_package - context = { - "request": request, - "element": element, - "get_type": get_type, - } - return templates.TemplateResponse("package.html", context) - - -@app.get("/{type}/{uuid}.html", response_class=responses.HTMLResponse) -def view(request: fastapi.Request, type: str, uuid: str): - """Display element by uuid.""" - element = app.state.model.by_uuid(uuid) - template = type + ".html" - - context = { - "request": request, - "element": element, - "get_type": get_type, - } - return templates.TemplateResponse(template, context) - - -def start(model: t.Any, layer: str, port: int): - """Start the app.""" "" - app.state.model = model - app.state.data_package = getattr(model, layer).data_package - uvicorn.run( - app, - port=port, - ) diff --git a/capella_ros_tools/viewer/static/icons/favicon.ico b/capella_ros_tools/viewer/static/icons/favicon.ico deleted file mode 100644 index a0c9c57790ad59936eb10aae1125145b7895a798..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmb7@KS;w+5XP@bS~^%M{#&h^f|K3cTwI+LoQpJRwNzaEGnj%X4kCh3oZY&(I#vo6 z#L3yE*u_OCh;}HR-`U)w4Heo~F4ya<~!wChc5VcmdvL$rE->7hgR$mne@3-^7tz)WA+Yt@G{-p`u) z@eb=+m;Z)4e4<=4p2f#{nuvGR$vx%XqCwxXa%jE+Z4-P`>Yl@=S|25&PeJ_1N2B<9 zvgQy|<`11WoH#aVc TT4zM1QkPZ1+cm^n5E-Ih_${+; diff --git a/capella_ros_tools/viewer/static/icons/favicon.ico.license b/capella_ros_tools/viewer/static/icons/favicon.ico.license deleted file mode 100644 index f6f3181..0000000 --- a/capella_ros_tools/viewer/static/icons/favicon.ico.license +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 diff --git a/capella_ros_tools/viewer/static/scripts.js b/capella_ros_tools/viewer/static/scripts.js deleted file mode 100644 index 5ac8f29..0000000 --- a/capella_ros_tools/viewer/static/scripts.js +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright DB InfraGO AG and contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import * as d3 from "https://cdn.jsdelivr.net/npm/d3@7/+esm"; - -export function initializeDiagram() { - // Select the SVG container - const svg = d3.select(".ClassDiagramBlank"); - svg.attr("width", "100%").attr("height", "100%"); - - // Create a new group element - const svgContainer = svg.append("g"); - - svgContainer.attr("id", "svgContainer"); - - // Select all children of the SVG container except the new group - const children = svg.selectAll(":scope > *:not(#svgContainer)"); - - // Move all children into the group - children.each(function () { - svgContainer.node().appendChild(this); - }); - - svgContainer.select("rect").remove(); - - function escapeUUIDForCSSSelector(uuid) { - // Escape first character if it's a digit - let escapedUUID = uuid[0].match(/^\d/) - ? "\\3" + uuid[0] + " " + uuid.slice(1) - : uuid; - // Escape hyphens - return escapedUUID.replace(/-/g, "\\-"); - } - - let groupedNodes = []; - - svgContainer.selectAll(".Box").each(function () { - if (groupedNodes.includes(this.id)) { - return; - } - groupedNodes.push(this.id); - - var contextGroup = svgContainer.append("g"); - contextGroup.attr("class", "contextGroup"); - this.classList.forEach((id) => { - let uuid = id.replace("context-", ""); - if (id == uuid) { - // Not a context class - return; - } - groupedNodes.push(uuid); - let escapedUUID = escapeUUIDForCSSSelector(uuid); - contextGroup - .node() - .appendChild(d3.select("#" + escapedUUID).node()); - }); - }); - - const draggableElements = svgContainer.selectAll(".contextGroup"); - - // Zoom and pan - svg.call( - d3.zoom().on("zoom", (event) => { - svgContainer.attr("transform", event.transform); - }) - ); - - // Create an array of data with the same length as your selection - let data = Array.from(draggableElements.nodes(), () => ({ - currentX: 0, - currentY: 0, - deltaX: 0, - deltaY: 0, - })); - - // Bind the data to your elements - draggableElements.data(data); - - // Apply the drag behavior to the selected elements - draggableElements.call( - d3 - .drag() - .on("start", dragStarted) - .on("drag", dragged) - .on("end", dragEnded) - ); - - function dragStarted(event, d) { - // Implement any custom behavior on drag start if needed - d.deltaX = event.x - d.currentX; - d.deltaY = event.y - d.currentY; - } - - function dragged(event, d) { - // Implement any custom behavior on drag - d.currentX = event.x - d.deltaX; - d.currentY = event.y - d.deltaY; - - d3.select(this).attr( - "transform", - `translate(${d.currentX},${d.currentY})` - ); - - var boundingBox = svgContainer.node().getBBox(); - svgContainer - .attr("width", boundingBox.width) - .attr("height", boundingBox.height) - .attr( - "viewBox", - `${boundingBox.x} ${boundingBox.y} ${boundingBox.width} ${boundingBox.height}` - ); - } - - function dragEnded(event, d) { - d.deltaX = event.x; - d.deltaY = event.y; - } -} - -// Call initializeDiagram() when the DOM content is loaded -document.addEventListener("DOMContentLoaded", function () { - initializeDiagram(); -}); diff --git a/capella_ros_tools/viewer/static/styles.css b/capella_ros_tools/viewer/static/styles.css deleted file mode 100644 index e82af9e..0000000 --- a/capella_ros_tools/viewer/static/styles.css +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright DB InfraGO AG and contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -:root { - --vt-c-white: #ffffff; - --vt-c-white-soft: #f8f8f8; - --vt-c-white-mute: #f2f2f2; - - --vt-c-indigo: #2c3e50; - - --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); - --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); - - --vt-c-text-light-1: var(--vt-c-indigo); - --vt-c-text-light-2: rgba(60, 60, 60, 0.66); - --pink: #ffaccd; - --pink-dark: rgb(255, 0, 153); -} - -/* semantic color variables for this project */ -:root { - --color-background: var(--vt-c-white); - --color-background-soft: var(--vt-c-white-soft); - --color-background-mute: var(--vt-c-white-mute); - - --color-border: var(--vt-c-divider-light-2); - --color-border-hover: var(--vt-c-divider-light-1); - - --color-heading: var(--vt-c-text-light-1); - --color-text: var(--vt-c-text-light-1); - - --color-accent: var(--pink); - --color-accent-hover: var(--pink-dark); - - --section-gap: 160px; -} - -*, -*::before, -*::after { - box-sizing: border-box; - margin: 0; - font-weight: normal; -} - -html, -body { - width: 100vw; - height: 100vh; - margin: 0; - padding: 0; -} - -body { - display: flex; - flex-direction: row; - color: var(--color-text); - background: var(--color-background-soft); - line-height: 1.6; - font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, - Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; - font-size: 15px; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - color: inherit; - text-decoration: none; - border-bottom: 3px solid var(--color-accent); -} - -a:hover { - border-bottom-color: var(--color-accent-hover); -} -strong { - font-weight: 500; -} -.description { - display: flex; - flex-direction: column; -} - -.description > p { - white-space: pre-wrap; - display: inline-flex; - opacity: 0.75; -} - -main { - padding: 0.5rem 1rem; -} - -main, -aside { - max-height: 100%; - overflow-y: auto; - flex: 1; - display: flex; - flex-direction: column; -} - -aside { - background-color: white; -} - -aside > div { - height: 100%; - width: 100%; -} - -table { - border-spacing: 0 1.5rem; - table-layout: fixed; - width: 100%; -} - -tr > td:first-child { - font-weight: bold; - text-align: right; - padding-right: 2rem; - white-space: nowrap; - width: 8em; -} - -tr > td:last-child { - text-align: left; -} - -ol { - padding: 0; - counter-reset: list; -} -ol > li { - list-style: none; -} -ol > li:before { - content: "[" counter(list) "] "; - counter-increment: list; - margin-right: 0.5em; -} - -::-webkit-scrollbar { - display: none; -} - -/* Media query for landscape mode */ -@media screen and (orientation: portrait) { - body { - display: flex; - flex-direction: column; - } -} diff --git a/capella_ros_tools/viewer/templates/class.html b/capella_ros_tools/viewer/templates/class.html deleted file mode 100644 index 19ca8f5..0000000 --- a/capella_ros_tools/viewer/templates/class.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - {{ element.name }} - Overview - - - -
                                          -

                                          - {{ element.name }} - {{ element.xtype }} -

                                          - - - - - - - - - - - - - - - - - -
                                          uuid{{ element.uuid }}
                                          parent{{ element.parent._short_html_() }}
                                          description{{ element.description }}
                                          properties -
                                            - {% for prop in element.properties %} -
                                          1. - Property "{{ prop.name }}": - {{prop.type.name}} - {{ prop.description }} -
                                          2. - {% endfor %} -
                                          -
                                          -
                                          - - - diff --git a/capella_ros_tools/viewer/templates/enum.html b/capella_ros_tools/viewer/templates/enum.html deleted file mode 100644 index 595a3a7..0000000 --- a/capella_ros_tools/viewer/templates/enum.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - {{ element.name }} - Overview - - - - -
                                          -

                                          - {{ element.name }} - ({{ element.xtype }}) -

                                          - - - - - - - - - - - - - - - - - -
                                          uuid{{ element.uuid }}
                                          parent{{ element.parent._short_html_() }}
                                          description{{ element.description }}
                                          literals -
                                            - {% for lit in element.literals %} -
                                          1. - EnumerationLiteral "{{ - lit.name }}": {{lit.value.type.name}} = - {{lit.value.value}} -
                                          2. - {% endfor %} -
                                          -
                                          -
                                          - - diff --git a/capella_ros_tools/viewer/templates/package.html b/capella_ros_tools/viewer/templates/package.html deleted file mode 100644 index b8f88c7..0000000 --- a/capella_ros_tools/viewer/templates/package.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - {{ element.name }} - Overview - - - -
                                          -

                                          - {{ element.name }} - ({{ element.xtype }}) -

                                          - - - - - - - - - - - - - - - - - - - - - - - - - -
                                          uuid{{ element.uuid }}
                                          parent{{ element.parent._short_html_() }}
                                          description{{ element.description }}
                                          classes -
                                            - {% for cls in element.classes %} -
                                          1. - {{ cls._short_html_() }} -
                                          2. - {% endfor %} -
                                          -
                                          datatypes -
                                            - {% for enum in element.datatypes %} -
                                          1. - {{ enum._short_html_() }} -
                                          2. - {% endfor %} -
                                          -
                                          packages -
                                            - {% for pkg in element.packages %} -
                                          1. - {{ pkg._short_html_() }} -
                                          2. - {% endfor %} -
                                          -
                                          -
                                          - - diff --git a/docs/source/messages.rst b/docs/source/messages.rst index 2b05965..6301af8 100644 --- a/docs/source/messages.rst +++ b/docs/source/messages.rst @@ -13,94 +13,41 @@ The Capella ROS Tools API expects ROS2 messages to be organized in a specific wa Class Definition ================ * A `.msg` file can contain one class definition. -* Comments at the top of the file are appended to the class description. -* **Inline Comments:** Comments on the same line as a property definition are directly appended to that property's description. -* **Indented Comment Lines:** Comments on a line of their own but indented are appended to the description of the last encountered property. -* **Block Comments:** Comments on a line of their own and not indented are prepended to the description of the next properties until an empty line or a new block comment is encountered. -* **Unused Comments:** If a block comment has no properties after it before the next empty line or block comment, it is added to the class description itself. +* The comment at the top of the file followed by an empty line is added to the class description. +* **Inline Comments:** Comments on the same line as a property definition are directly added to that property's description. +* **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered property. +* **Block Comments:** Comments on a line of their own and not indented are added to the description of the next properties until an empty line and the block comment has been used. -.. code-block:: python +.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClass.msg + :language: python - # MyClass.msg - # The first comment block at the top of the file - # is appended to the class description of MyClass. - - # This block comment is appended to the - # property description of my_field. - uint8 my_field - - # This block comment is appended to - # class description of MyClass. - - # This block comment is appended to the property descriptions - # of my_other_field and my_third_field. - uint8 my_other_field # This inline comment - # is appended to the - # property description of - # my_other_field. - uint8 my_third_field Enum definition =============== * A `.msg` file can contain multiple enum definitions. * Multiple enum definitions are separated by an empty line. -* Enum names are determined based on the longest common prefix of all enum values in the definition. +* Enum names are determined based on the longest common prefix of all enum literals in the enum definition. * If no common prefix exists, the enum name is derived from the file name (excluding the extension). -* Only one or no enum should have value names without a common prefix. -* Comments at the top of the file and unused comments are ignored. -* **Inline Comments:** Comments on the same line as an enum value definition are directly appended to the that enum value's description. -* **Indented Comment Lines:** Comments on a line of their own but indented are appended to the description of the last encountered enum value. -* **Block Comments:** Comments on a line of their own and not indented are appended to the description of the next/current enum definition until an empty line or a new block comment is encountered. - -.. code-block:: python - - # MyEnum.msg - # This block comment is appended to the - # enum description of MyEnumValue. - uint8 MY_ENUM_VALUE_RED = 0 - uint8 MY_ENUM_VALUE_BLUE = 1 # This inline comment is - # appended to the - # enum value description - # of BLUE. - # This block comment is also appended to the - # enum description of MyEnumValue. - uint8 MY_ENUM_VALUE_YELLOW = 2 - uint8 MY_ENUM_VALUE_GREEN = 3 - - # This block comment is appended to the - # enum description of MyEnum. - # In a file, there can only be one or no enum - # whose value names do not share a common prefix. - byte OK = 0 - byte WARN = 1 - byte ERROR = 2 - byte STALE = 3 +* Two or more enums must not have literal names without a common prefix. +* **Inline Comments:** Comments on the same line as an enum literal definition are directly added to the that enum literal's description. +* **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered enum literal. +* **Block Comments:** Comments on a line of their own and not indented are added to the description of the next/current enum definition until an empty line and the block comment has been used. + +.. literalinclude:: ../../tests/data/example_msgs/msg/SampleEnum.msg + :language: python Enum and Class Definition ========================= * A `.msg` file can contain one class definition and multiple enum definitions. -* Enums without a common value name prefix are named using the file name plus the suffix "Type." -* There can only be one or no enum whose value names do not share a common prefix. -* Comments at the top of the file are appended to the class description. -* **Inline Comments:** Comments on the same line as a property or enum value are directly appended to the description of that element. -* **Indented Comment Lines:** Comments on a line of their own but indented are appended to the description of the last encountered property or enum value. -* **Block Comments:** Comments on a line of their own and not indented are prepended to the descriptions of the next properties or appended to the descriptions of the next/current enum until an empty line or a new block comment is encountered. -* **Unused Comments:** If a block comment has no following properties or enums before the next empty line or block comment, it is added to the class description. - -.. code-block:: python +* Enums without a common literal name prefix are named using the file name plus the suffix "Type". +* There can only be one or no enum whose literal names do not share a common prefix. +* Comments at the top of the file are added to the class description. +* **Inline Comments:** Comments on the same line as a property or enum literal are directly added to the description of that element. +* **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered property or enum literal. +* **Block Comments:** Comments on a line of their own and not indented are added to the descriptions of the next properties or added to the descriptions of the next/current enum until an empty line and the block comment has been used. - # MyMessage.msg - # The first comment block at the top of the file - # is appended to the class description of MyMessage. - - uint8 my_field - - # This block comment is appended to the - # enum description of MyMessageType. - byte OK = 0 - byte WARN = 1 - byte ERROR = 2 - byte STALE = 3 +.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClassEnum.msg + :language: python Referencing enums ================= @@ -110,63 +57,23 @@ In the Same File * In files that define a class along with enums, the class properties can reference enums defined in the same file. This can be achieved in two ways: * **Name Match:** The property name matches the enum name. - * **Type Match:** The property type matches the enum values type, in which case the updated enum name is derived from the file name plus the property name. + * **Type Match:** The property type matches the enum literals type, in which case the updated enum name is derived from the file name plus the property name. * Name matching takes precedence over type matching. -.. code-block:: python - - # MyMessage.msg - # Properties in MyMessage can reference enums in the same file. - - # This block comment is appended to the - # enum description of MyMessageStatus. - byte OK = 0 - byte WARN = 1 - byte ERROR = 2 - byte STALE = 3 - - # This block comment is appended to the - # enum description of Color. - byte COLOR_RED = 0 - byte COLOR_BLUE = 1 - byte COLOR_YELLOW = 2 - - byte status # The property status is of type MyMessageStatus - byte color # The property color is of type Color - +.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClassEnum.msg + :language: python In another file --------------- -* If a property definition has a primitive type, it searches for a reference to an enum in the comments and updates the type of the property based on this reference. +* If a property definition references an enum in the comments, the property type is updated based on this reference. * The reference should follow either of the following formats: - * **cf. :** The enum name is derived from the file name (excluding the extension). - * **cf. , _XXX:** The enum name is derived from the longest common prefix of all enum values in the definition. - -.. code-block:: python - - # MyEnum.msg - # This block comment is appended to the - # enum description of MyEnum. - byte OK = 0 - byte WARN = 1 - byte ERROR = 2 - byte STALE = 3 - - # This block comment is appended to the - # enum description of MyEnumValue. - uint8 MY_ENUM_VALUE_1 = 0 - uint8 MY_ENUM_VALUE_2 = 1 - uint8 MY_ENUM_VALUE_3 = 2 - -.. code-block:: python - - # MyMessage.msg - # Fields in MyMessage can reference enums in MyEnum. + * **cf. :** The enum name was derived from the file name (excluding the extension). + * **cf. , _XXX:** The enum name was derived from the longest common prefix of all enum literals in the definition. - # The property my_enum_field is of type MyEnum - byte my_enum_field # cf. MyEnum +.. literalinclude:: ../../tests/data/example_msgs/msg/SampleEnum.msg + :language: python - # The property my_other_enum_field is of type MyEnumValue - uint8 my_other_enum_field # cf. MyEnum, MY_ENUM_VALUE_XXX +.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClass.msg + :language: python diff --git a/pyproject.toml b/pyproject.toml index cd8ff7b..3931f60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ classifiers = [ ] dependencies = [ "click", - "capellambse", + "capellambse@ git+https://github.com/DSD-DBS/py-capellambse.git@decl-sync", "capellambse_context_diagrams", "fastapi", "uvicorn[standard]", diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..66ac66c --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,241 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +import pytest + +from capella_ros_tools.data_model import ( + ConstantDef, + EnumDef, + FieldDef, + MessageDef, + Range, + TypeDef, +) + + +@pytest.fixture +def sample_class_def(): + return MessageDef( + name="SampleClass", + fields=[ + FieldDef( + type=TypeDef("uint8", Range("1", "1"), Range("0", "10"), None), + name="sample_field1", + description="

                                          This block comment is added to the

                                          " + "

                                          property description of sample_field1.

                                          " + "

                                          This block comment is also added to the

                                          " + "

                                          property description of sample_field1.

                                          ", + ), + FieldDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="sample_field2", + description="

                                          This block comment is added to the property

                                          " + "

                                          descriptions of sample_field2 and sample_field3.

                                          ", + ), + FieldDef( + TypeDef("uint8", Range("0", "*"), None, None), + name="sample_field3", + description="

                                          This block comment is added to the property

                                          " + "

                                          descriptions of sample_field2 and sample_field3.

                                          ", + ), + FieldDef( + type=TypeDef("SampleEnum", Range("1", "1"), None, "types"), + name="sample_field4", + description="

                                          This block comment is added to the property

                                          " + "

                                          descriptions of sample_field4 and sample_field5.

                                          " + "

                                          Fields in SampleClass can reference

                                          " + "

                                          enums in other files.

                                          " + "

                                          The property sample_field4

                                          " + "

                                          is of type SampleEnum.

                                          " + "

                                          cf. SampleEnum

                                          ", + ), + FieldDef( + type=TypeDef( + "SampleEnumValue", Range("1", "1"), None, "types" + ), + name="sample_field5", + description="

                                          This block comment is added to the property

                                          " + "

                                          descriptions of sample_field4 and sample_field5.

                                          " + "

                                          This inline comment

                                          " + "

                                          is added to the

                                          " + "

                                          property description of

                                          " + "

                                          sample_field5.

                                          " + "

                                          The property sample_field5

                                          " + "

                                          is of type SampleEnumValue.

                                          " + "

                                          cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX

                                          ", + ), + ], + enums=[], + description="

                                          SampleClass.msg

                                          " + "

                                          The first comment block at the top of the file

                                          " + "

                                          is added to the class description of SampleClass.

                                          ", + ) + + +@pytest.fixture +def sample_enum_def(): + return MessageDef( + name="SampleEnum", + fields=[], + enums=[ + EnumDef( + name="SampleEnumValue", + literals=[ + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="RED", + value="0", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="BLUE", + value="1", + description="

                                          This inline comment

                                          " + "

                                          is added to the

                                          " + "

                                          enum literal

                                          " + "

                                          description of BLUE.

                                          ", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="YELLOW", + value="2", + description="

                                          This block comment is added to the

                                          " + "

                                          enum literal descriptions of YELLOW and GREEN.

                                          ", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="GREEN", + value="3", + description="

                                          This block comment is added to the

                                          " + "

                                          enum literal descriptions of YELLOW and GREEN.

                                          ", + ), + ], + description="

                                          SampleEnum.msg

                                          " + "

                                          This block comment is added to the

                                          " + "

                                          enum description of SampleEnumValue.

                                          ", + ), + EnumDef( + name="SampleEnum", + literals=[ + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="OK", + value="0", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="WARN", + value="1", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="ERROR", + value="2", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="STALE", + value="3", + description="", + ), + ], + description="

                                          This block comment is added to the

                                          " + "

                                          enum description of SampleEnum.

                                          " + "

                                          In a file, there can only be one or no enum

                                          " + "

                                          whose literal names do not share a common prefix.

                                          ", + ), + ], + description="", + ) + + +@pytest.fixture +def sample_class_enum_def(): + return MessageDef( + name="SampleClassEnum", + fields=[ + FieldDef( + type=TypeDef( + "SampleClassEnumStatus", Range("1", "1"), None, "types" + ), + name="status", + description="

                                          The property status is of type

                                          " + "

                                          SampleClassEnumStatus.

                                          ", + ), + FieldDef( + type=TypeDef("Color", Range("1", "1"), None, "types"), + name="color", + description="

                                          The property color is of type Color.

                                          ", + ), + FieldDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="field", + description="", + ), + ], + enums=[ + EnumDef( + name="SampleClassEnumStatus", + literals=[ + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="OK", + value="0", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="WARN", + value="1", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="ERROR", + value="2", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="STALE", + value="3", + description="", + ), + ], + description="

                                          This block comment is added to the

                                          " + "

                                          enum description of SampleClassEnumStatus.

                                          ", + ), + EnumDef( + name="Color", + literals=[ + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="RED", + value="0", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="BLUE", + value="1", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1"), None, None), + name="YELLOW", + value="2", + description="", + ), + ], + description="

                                          This block comment is added to the

                                          " + "

                                          enum description of Color.

                                          ", + ), + ], + description="

                                          SampleClassEnum.msg

                                          " + "

                                          Properties in SampleClassEnum can reference

                                          " + "

                                          enums in the same file.

                                          ", + ) diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml new file mode 100644 index 0000000..10c7196 --- /dev/null +++ b/tests/data/data_model/example_msgs.yaml @@ -0,0 +1,230 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +- parent: !promise root.package1 + sync: + classes: + - promise_id: package1.SampleClass + find: + name: SampleClass + set: + description: "

                                          SampleClass.msg

                                          The first comment block at the top of the file

                                          is added to the class description of SampleClass.

                                          " + properties: + - name: sample_field1 + description: "

                                          This block comment is added to the

                                          property description of sample_field1.

                                          This block comment is also added to the

                                          property description of sample_field1.

                                          " + type: !promise package1.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + min_value: !new_object + _type: LiteralNumericValue + value: "0" + max_value: !new_object + _type: LiteralNumericValue + value: "10" + - name: sample_field2 + description: "

                                          This block comment is added to the property

                                          descriptions of sample_field2 and sample_field3.

                                          " + type: !promise package1.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: sample_field3 + description: "

                                          This block comment is added to the property

                                          descriptions of sample_field2 and sample_field3.

                                          " + type: !promise package1.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "0" + max_card: !new_object + _type: LiteralNumericValue + value: "*" + - name: sample_field4 + description: "

                                          This block comment is added to the property

                                          descriptions of sample_field4 and sample_field5.

                                          Fields in SampleClass can reference

                                          enums in other files.

                                          The property sample_field4

                                          is of type SampleEnum.

                                          cf. SampleEnum

                                          " + type: !promise types.SampleEnum + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: sample_field5 + description: "

                                          This block comment is added to the property

                                          descriptions of sample_field4 and sample_field5.

                                          This inline comment

                                          is added to the

                                          property description of

                                          sample_field5.

                                          The property sample_field5

                                          is of type SampleEnumValue.

                                          cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX

                                          " + type: !promise types.SampleEnumValue + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + enumerations: + - promise_id: types.SampleEnumValue + find: + name: SampleEnumValue + set: + description: "

                                          SampleEnum.msg

                                          This block comment is added to the

                                          enum description of SampleEnumValue.

                                          " + literals: + - name: RED + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: BLUE + description: "

                                          This inline comment

                                          is added to the

                                          enum literal

                                          description of BLUE.

                                          " + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: YELLOW + description: "

                                          This block comment is added to the

                                          enum literal descriptions of YELLOW and GREEN.

                                          " + value: !new_object + _type: LiteralNumericValue + value: "2" + - name: GREEN + description: "

                                          This block comment is added to the

                                          enum literal descriptions of YELLOW and GREEN.

                                          " + value: !new_object + _type: LiteralNumericValue + value: "3" + - promise_id: types.SampleEnum + find: + name: SampleEnum + set: + description: "

                                          This block comment is added to the

                                          enum description of SampleEnum.

                                          In a file, there can only be one or no enum

                                          whose literal names do not share a common prefix.

                                          " + literals: + - name: OK + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: WARN + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: ERROR + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" + - name: STALE + description: "" + value: !new_object + _type: LiteralNumericValue + value: "3" + +- parent: !promise root.package2 + sync: + classes: + - promise_id: package2.SampleClassEnum + find: + name: SampleClassEnum + set: + description: "

                                          SampleClassEnum.msg

                                          Properties in SampleClassEnum can reference

                                          enums in the same file.

                                          " + properties: + - name: status + description: "

                                          The property status is of type

                                          SampleClassEnumStatus.

                                          " + type: !promise types.SampleClassEnumStatus + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: color + description: "

                                          The property color is of type Color.

                                          " + type: !promise types.Color + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: field + description: "" + type: !promise package2.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + enumerations: + - promise_id: types.SampleClassEnumStatus + find: + name: SampleClassEnumStatus + set: + description: "

                                          This block comment is added to the

                                          enum description of SampleClassEnumStatus.

                                          " + literals: + - name: OK + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: WARN + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: ERROR + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" + - name: STALE + description: "" + value: !new_object + _type: LiteralNumericValue + value: "3" + - promise_id: types.Color + find: + name: Color + set: + description: "

                                          This block comment is added to the

                                          enum description of Color.

                                          " + literals: + - name: RED + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: BLUE + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: YELLOW + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" + +- parent: !uuid "00000000-0000-0000-0000-000000000000" + sync: + packages: + - promise_id: root.package1 + find: + name: package1 + - promise_id: root.package2 + find: + name: package2 + +- parent: !uuid "00000000-0000-0000-0000-000000000001" + sync: + packages: + - promise_id: root.DataTypes + find: + name: "Data Types" + +- parent: !promise root.DataTypes + sync: + datatypes: + - promise_id: package1.uint8 + find: + name: uint8 + _type: NumericType + - promise_id: package2.uint8 + find: + name: uint8 + _type: NumericType diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg new file mode 100644 index 0000000..db9d858 --- /dev/null +++ b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg @@ -0,0 +1,30 @@ +# SampleClass.msg +# The first comment block at the top of the file +# is added to the class description of SampleClass. + +# This block comment is added to the +# property description of sample_field1. + +# This block comment is also added to the +# property description of sample_field1. +uint8[<=10] sample_field1 + +# This block comment is added to the property +# descriptions of sample_field2 and sample_field3. +uint8 sample_field2 +uint8[] sample_field3 + +# This block comment is added to the property +# descriptions of sample_field4 and sample_field5. +uint8 sample_field4 # Fields in SampleClass can reference + # enums in other files. + # The property sample_field4 + # is of type SampleEnum. + # cf. SampleEnum +uint8 sample_field5 # This inline comment + # is added to the + # property description of + # sample_field5. + # The property sample_field5 + # is of type SampleEnumValue. + # cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg b/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg new file mode 100644 index 0000000..f27cf23 --- /dev/null +++ b/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg @@ -0,0 +1,21 @@ +# SampleEnum.msg +# This block comment is added to the +# enum description of SampleEnumValue. +uint8 SAMPLE_ENUM_VALUE_RED = 0 +uint8 SAMPLE_ENUM_VALUE_BLUE = 1 # This inline comment + # is added to the + # enum literal + # description of BLUE. +# This block comment is added to the +# enum literal descriptions of YELLOW and GREEN. +uint8 SAMPLE_ENUM_VALUE_YELLOW = 2 +uint8 SAMPLE_ENUM_VALUE_GREEN = 3 + +# This block comment is added to the +# enum description of SampleEnum. +# In a file, there can only be one or no enum +# whose literal names do not share a common prefix. +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2 +uint8 STALE = 3 diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg.license b/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg new file mode 100644 index 0000000..cad7b7a --- /dev/null +++ b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg @@ -0,0 +1,21 @@ +# SampleClassEnum.msg +# Properties in SampleClassEnum can reference +# enums in the same file. + +# This block comment is added to the +# enum description of SampleClassEnumStatus. +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2 +uint8 STALE = 3 + +# This block comment is added to the +# enum description of Color. +uint8 COLOR_RED = 0 +uint8 COLOR_BLUE = 1 +uint8 COLOR_YELLOW = 2 + +uint8 status # The property status is of type + # SampleClassEnumStatus. +uint8 color # The property color is of type Color. +uint8 field diff --git a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/.project.license b/tests/data/empty_model/.project.license deleted file mode 100644 index 02c8c23..0000000 --- a/tests/data/empty_model/.project.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB InfraGO AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/empty_model.afm.license b/tests/data/empty_model/empty_model.afm.license deleted file mode 100644 index 02c8c23..0000000 --- a/tests/data/empty_model/empty_model.afm.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB InfraGO AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/empty_model.aird.license b/tests/data/empty_model/empty_model.aird.license deleted file mode 100644 index 02c8c23..0000000 --- a/tests/data/empty_model/empty_model.aird.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB InfraGO AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/empty_model.capella.license b/tests/data/empty_model/empty_model.capella.license deleted file mode 100644 index 02c8c23..0000000 --- a/tests/data/empty_model/empty_model.capella.license +++ /dev/null @@ -1,2 +0,0 @@ -Copyright DB InfraGO AG and contributors -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/.project b/tests/data/empty_project_52/.project similarity index 88% rename from tests/data/empty_model/.project rename to tests/data/empty_project_52/.project index 6c740f9..5315043 100644 --- a/tests/data/empty_model/.project +++ b/tests/data/empty_project_52/.project @@ -1,6 +1,6 @@ - empty_model + empty_project_52 diff --git a/tests/data/empty_project_52/.project.license b/tests/data/empty_project_52/.project.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/empty_project_52/.project.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/empty_model.afm b/tests/data/empty_project_52/empty_project_52.afm similarity index 54% rename from tests/data/empty_model/empty_model.afm rename to tests/data/empty_project_52/empty_project_52.afm index bf51fcc..33d102e 100644 --- a/tests/data/empty_model/empty_model.afm +++ b/tests/data/empty_project_52/empty_project_52.afm @@ -1,4 +1,4 @@ - - + + diff --git a/tests/data/empty_project_52/empty_project_52.afm.license b/tests/data/empty_project_52/empty_project_52.afm.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/empty_project_52/empty_project_52.afm.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/empty_model.aird b/tests/data/empty_project_52/empty_project_52.aird similarity index 59% rename from tests/data/empty_model/empty_model.aird rename to tests/data/empty_project_52/empty_project_52.aird index b1ef2d5..63f8ae5 100644 --- a/tests/data/empty_model/empty_model.aird +++ b/tests/data/empty_project_52/empty_project_52.aird @@ -1,26 +1,29 @@ - - empty_model.afm - empty_model.capella - + + empty_project_52.afm + empty_project_52.capella + - - - - - - - + - + + + + - + + + + + + + - - + + diff --git a/tests/data/empty_project_52/empty_project_52.aird.license b/tests/data/empty_project_52/empty_project_52.aird.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/empty_project_52/empty_project_52.aird.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/empty_model/empty_model.capella b/tests/data/empty_project_52/empty_project_52.capella similarity index 59% rename from tests/data/empty_model/empty_model.capella rename to tests/data/empty_project_52/empty_project_52.capella index 5877cd0..836b9e3 100644 --- a/tests/data/empty_model/empty_model.capella +++ b/tests/data/empty_project_52/empty_project_52.capella @@ -1,272 +1,272 @@ - + - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:libraries="http://www.polarsys.org/capella/common/libraries/5.0.0" + xmlns:org.polarsys.capella.core.data.capellacommon="http://www.polarsys.org/capella/core/common/5.0.0" + xmlns:org.polarsys.capella.core.data.capellacore="http://www.polarsys.org/capella/core/core/5.0.0" + xmlns:org.polarsys.capella.core.data.capellamodeller="http://www.polarsys.org/capella/core/modeller/5.0.0" + xmlns:org.polarsys.capella.core.data.cs="http://www.polarsys.org/capella/core/cs/5.0.0" + xmlns:org.polarsys.capella.core.data.ctx="http://www.polarsys.org/capella/core/ctx/5.0.0" + xmlns:org.polarsys.capella.core.data.epbs="http://www.polarsys.org/capella/core/epbs/5.0.0" + xmlns:org.polarsys.capella.core.data.fa="http://www.polarsys.org/capella/core/fa/5.0.0" + xmlns:org.polarsys.capella.core.data.information="http://www.polarsys.org/capella/core/information/5.0.0" + xmlns:org.polarsys.capella.core.data.information.datatype="http://www.polarsys.org/capella/core/information/datatype/5.0.0" + xmlns:org.polarsys.capella.core.data.information.datavalue="http://www.polarsys.org/capella/core/information/datavalue/5.0.0" + xmlns:org.polarsys.capella.core.data.la="http://www.polarsys.org/capella/core/la/5.0.0" + xmlns:org.polarsys.capella.core.data.oa="http://www.polarsys.org/capella/core/oa/5.0.0" + xmlns:org.polarsys.capella.core.data.pa="http://www.polarsys.org/capella/core/pa/5.0.0" + id="e6c61fb4-8832-4a82-bba1-41f0530f98df" + name="empty_project_52"> + + id="8721979f-15d1-49b1-8106-0579e30f6db5" name="ProgressStatus"> + id="f93b3999-246d-43da-a02c-f76131f6c834" name="DRAFT"/> + id="7390c4a0-ef13-4933-8cae-9e35ea93c857" name="TO_BE_REVIEWED"/> + id="a41dcc3a-40e4-4f3c-94c8-6a74fffa39aa" name="TO_BE_DISCUSSED"/> + id="28c38d9c-7edc-4eee-b6e0-732d9c414b20" name="REWORK_NECESSARY"/> + id="f16af4ad-5016-41ec-8ed1-975fedfc1b6f" name="UNDER_REWORK"/> + id="67682089-e4f4-4b55-9157-cd1e5877ff3c" name="REVIEWED_OK"/> - + id="2ba71196-f4ad-48cb-934d-e357ae142753" name="empty_project_52"> + id="c1abf2ee-a6e5-48a6-91ac-5a9d0393d9e9" name="Operational Analysis"> + id="0e3b6244-fa20-4c4c-95ac-87caaf1eb68d" name="Operational Activities"> + id="8a3e4111-53f2-450c-bb52-8c5856a2f2e0" name="Root Operational Activity"/> + id="933e29c4-f74c-4d59-9c6a-fc0554463ac2" name="Operational Capabilities"/> + id="4f9b6def-388f-4006-a97a-4aa7e8f9f5fd" name="Interfaces"/> - + - + id="8bd54dcb-81a2-4c22-91cb-e7253fd7c79f" name="System Analysis"> + id="8e6ef668-8f32-46d6-9843-c07bbceaab0c" name="System Functions"> + id="3f1dc838-274f-4553-a44b-877ca3958d24" name="Root System Function"> + id="1daedbf3-3788-45cb-9e49-da1b5ade2983" targetElement="#8a3e4111-53f2-450c-bb52-8c5856a2f2e0" + sourceElement="#3f1dc838-274f-4553-a44b-877ca3958d24"/> + id="bc7f17c6-57a9-4adf-8f01-5f71e830b6fa" name="Capabilities"/> + id="004f3475-1923-4206-97c5-8207a9d42b92" name="Interfaces"/> + id="b971d23b-fa3e-492a-8b35-b7150beb16a9" name="Data"> + id="bc3792e4-0979-44b9-8e21-c2b07122bdc2" name="Predefined Types"> + id="e0de98bf-6fbe-4371-93cf-830019022f7a" name="Boolean" visibility="PUBLIC"> + id="c87cad9f-09f8-4540-83a5-ad947446e3cf" name="False" abstractType="#e0de98bf-6fbe-4371-93cf-830019022f7a"/> + id="51504462-484f-4b21-8aa9-2eaebfdcaa39" name="Byte" visibility="PUBLIC"> + id="bc0c9b42-7dd1-4bac-aa05-6c18ea1bd187" name="Char" visibility="PUBLIC"> + id="120f7354-a5af-4d87-984a-7de059f9d9db" name="Hexadecimal" visibility="PUBLIC"> + id="35e086d0-6cbc-4454-8cda-169c448a9150" operator="POW"> + id="6c341b3d-5c06-4f8e-a120-acf50843aeb6" value="2"/> + id="418231d4-a0dd-4bc8-a7ba-9c010760b5cd" value="64"/> + id="a872be8b-5afd-4eff-84ab-7df60ff571f4" value="1"/> + id="4e08751d-2675-4237-8817-7bf0936f8a19" name="Integer" visibility="PUBLIC"/> + id="4313993a-1ca2-4638-96a9-6fe1066615b3" name="Long" visibility="PUBLIC"/> + id="26230caf-00f6-402c-a6ee-0b444f4c1e3f" name="LongLong" visibility="PUBLIC"/> + id="51f6e135-b32c-44d1-bf26-f860ed5d4771" name="Short" visibility="PUBLIC"/> + id="8e27ce3d-29ef-4f17-80ec-2438dea086c9" name="String" visibility="PUBLIC"/> - + id="09811574-6d09-4dad-8584-6e2d4f954b49" name="Structure"> + + id="7af5971f-1a6c-47d3-b9a8-4e709444113e" name="System"> + id="28009118-a16a-47c5-9aaa-9c5391bc5a00" name="System State Machine"> + id="bc4bb044-4873-4449-9b26-cff529943ac4" name="Default Region"/> - + id="48a149f7-e8fd-4250-bef9-52c76a63a949" targetElement="#c1abf2ee-a6e5-48a6-91ac-5a9d0393d9e9" + sourceElement="#8bd54dcb-81a2-4c22-91cb-e7253fd7c79f"/> + id="56d2c105-cb15-4a0a-8800-120ddbb426fc" name="Logical Architecture"> + id="d2dfd572-8549-4b2b-9388-556c90b1d8aa" name="Logical Functions"> + id="894f4504-85ce-4d1b-9189-02cb8d234355" name="Root Logical Function"> + id="bb8f2dd7-395e-40a7-8291-6c86bd3bfbf3" targetElement="#3f1dc838-274f-4553-a44b-877ca3958d24" + sourceElement="#894f4504-85ce-4d1b-9189-02cb8d234355"/> + id="291083d5-8708-4734-9861-72a6c09b4445" name="Capabilities"/> + id="1ed34c92-799e-48fe-9f5b-247242151f09" name="Interfaces"/> + id="d755d151-7b1f-4df3-b4b8-329953b177dc" name="Data"/> - + id="474e84b1-3485-4012-86ba-c638767cb529" name="Structure"> + + id="495208df-e9d1-48b8-8258-17f62184ab90" name="Logical System"> + id="6d7e2a8a-43f7-4aa8-b331-ddc3cba3191e" targetElement="#7af5971f-1a6c-47d3-b9a8-4e709444113e" + sourceElement="#495208df-e9d1-48b8-8258-17f62184ab90"/> + id="0e5346ab-f7d4-4438-92be-bea3e5c50de3" targetElement="#8bd54dcb-81a2-4c22-91cb-e7253fd7c79f" + sourceElement="#56d2c105-cb15-4a0a-8800-120ddbb426fc"/> + id="aa49e2c8-b754-49f4-9528-d2aea0e89648" name="Physical Architecture"> + id="71e0a9c8-29bf-4e18-a664-746213bea06d" name="Physical Functions"> + id="979c84d7-a19c-4806-9743-3c4bf6a60684" name="Root Physical Function"> + id="7702ef35-7257-4c66-81ff-8f525cf37ff1" targetElement="#894f4504-85ce-4d1b-9189-02cb8d234355" + sourceElement="#979c84d7-a19c-4806-9743-3c4bf6a60684"/> + id="82a7a1de-9410-477e-aa78-c641b373a423" name="Capabilities"/> + id="4228c41b-05c7-4c99-a248-d742a04bcfa5" name="Interfaces"/> + id="b1bb0291-e569-41f9-b629-2b0b89c1ffd4" name="Data"/> - + id="494fd973-8168-4c0e-bc0e-0c3d604a7009" name="Structure"> + + id="c4d19ab1-7f2b-41a1-8ecb-9f372dc9a41d" name="Physical System"> + id="47e8fd62-8a15-4440-96d3-f68263a097dd" targetElement="#495208df-e9d1-48b8-8258-17f62184ab90" + sourceElement="#c4d19ab1-7f2b-41a1-8ecb-9f372dc9a41d"/> + id="312c4cda-3123-4209-8d06-006af3464bff" targetElement="#56d2c105-cb15-4a0a-8800-120ddbb426fc" + sourceElement="#aa49e2c8-b754-49f4-9528-d2aea0e89648"/> + id="07424d25-4b15-4fe7-8635-26a68987e2ff" name="EPBS Architecture"> + id="21b1e4c3-895a-4001-95b0-f55c51deb5a3" name="Capabilities"/> - + id="05fa6cf2-c4ad-44f8-b43c-86ba67cdcebd" name="Structure"> + + id="b871fd0f-9cee-4eb1-af4c-adec649c9a37" name="System" kind="SystemCI"> + id="dff27b9b-67f2-48c8-a1bf-44ea53e87ff0" targetElement="#c4d19ab1-7f2b-41a1-8ecb-9f372dc9a41d" + sourceElement="#b871fd0f-9cee-4eb1-af4c-adec649c9a37"/> + id="689e8f15-e46c-4572-95be-ff6d4e38506a" targetElement="#aa49e2c8-b754-49f4-9528-d2aea0e89648" + sourceElement="#07424d25-4b15-4fe7-8635-26a68987e2ff"/> diff --git a/tests/data/empty_project_52/empty_project_52.capella.license b/tests/data/empty_project_52/empty_project_52.capella.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/empty_project_52/empty_project_52.capella.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/example_msgs/msg/CameraInfo.msg b/tests/data/example_msgs/msg/CameraInfo.msg deleted file mode 100644 index 0c75a90..0000000 --- a/tests/data/example_msgs/msg/CameraInfo.msg +++ /dev/null @@ -1,134 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 -# -# This message defines meta information for a camera. It should be in a -# camera namespace on topic "camera_info" and accompanied by up to five -# image topics named: -# -# image_raw - raw data from the camera driver, possibly Bayer encoded -# image - monochrome, distorted -# image_color - color, distorted -# image_rect - monochrome, rectified -# image_rect_color - color, rectified -# -# The image_pipeline contains packages (image_proc, stereo_image_proc) -# for producing the four processed image topics from image_raw and -# camera_info. The meaning of the camera parameters are described in -# detail at http://www.ros.org/wiki/image_pipeline/CameraInfo. -# -# The image_geometry package provides a user-friendly interface to -# common operations using this meta information. If you want to, e.g., -# project a 3d point into image coordinates, we strongly recommend -# using image_geometry. -# -# If the camera is uncalibrated, the matrices D, K, R, P should be left -# zeroed out. In particular, clients may assume that K[0] == 0.0 -# indicates an uncalibrated camera. - -####################################################################### -# Image acquisition info # -####################################################################### - -# Time of image acquisition, camera coordinate frame ID -std_msgs/Header header # Header timestamp should be acquisition time of image - # Header frame_id should be optical frame of camera - # origin of frame should be optical center of camera - # +x should point to the right in the image - # +y should point down in the image - # +z should point into the plane of the image - - -####################################################################### -# Calibration Parameters # -####################################################################### -# These are fixed during camera calibration. Their values will be the # -# same in all messages until the camera is recalibrated. Note that # -# self-calibrating systems may "recalibrate" frequently. # -# # -# The internal parameters can be used to warp a raw (distorted) image # -# to: # -# 1. An undistorted image (requires D and K) # -# 2. A rectified image (requires D, K, R) # -# The projection matrix P projects 3D points into the rectified image.# -####################################################################### - -# The image dimensions with which the camera was calibrated. -# Normally this will be the full camera resolution in pixels. -uint32 height -uint32 width - -# The distortion model used. Supported models are listed in -# sensor_msgs/distortion_models.hpp. For most cameras, "plumb_bob" - a -# simple model of radial and tangential distortion - is sufficent. -string distortion_model - -# The distortion parameters, size depending on the distortion model. -# For "plumb_bob", the 5 parameters are: (k1, k2, t1, t2, k3). -float64[] d - -# Intrinsic camera matrix for the raw (distorted) images. -# [fx 0 cx] -# K = [ 0 fy cy] -# [ 0 0 1] -# Projects 3D points in the camera coordinate frame to 2D pixel -# coordinates using the focal lengths (fx, fy) and principal point -# (cx, cy). -float64[9] k # 3x3 row-major matrix - -# Rectification matrix (stereo cameras only) -# A rotation matrix aligning the camera coordinate system to the ideal -# stereo image plane so that epipolar lines in both stereo images are -# parallel. -float64[9] r # 3x3 row-major matrix - -# Projection/camera matrix -# [fx' 0 cx' Tx] -# P = [ 0 fy' cy' Ty] -# [ 0 0 1 0] -# By convention, this matrix specifies the intrinsic (camera) matrix -# of the processed (rectified) image. That is, the left 3x3 portion -# is the normal camera intrinsic matrix for the rectified image. -# It projects 3D points in the camera coordinate frame to 2D pixel -# coordinates using the focal lengths (fx', fy') and principal point -# (cx', cy') - these may differ from the values in K. -# For monocular cameras, Tx = Ty = 0. Normally, monocular cameras will -# also have R = the identity and P[1:3,1:3] = K. -# For a stereo pair, the fourth column [Tx Ty 0]' is related to the -# position of the optical center of the second camera in the first -# camera's frame. We assume Tz = 0 so both cameras are in the same -# stereo image plane. The first camera always has Tx = Ty = 0. For -# the right (second) camera of a horizontal stereo pair, Ty = 0 and -# Tx = -fx' * B, where B is the baseline between the cameras. -# Given a 3D point [X Y Z]', the projection (x, y) of the point onto -# the rectified image is given by: -# [u v w]' = P * [X Y Z 1]' -# x = u / w -# y = v / w -# This holds for both images of a stereo pair. -float64[12] p # 3x4 row-major matrix - - -####################################################################### -# Operational Parameters # -####################################################################### -# These define the image region actually captured by the camera # -# driver. Although they affect the geometry of the output image, they # -# may be changed freely without recalibrating the camera. # -####################################################################### - -# Binning refers here to any camera setting which combines rectangular -# neighborhoods of pixels into larger "super-pixels." It reduces the -# resolution of the output image to -# (width / binning_x) x (height / binning_y). -# The default values binning_x = binning_y = 0 is considered the same -# as binning_x = binning_y = 1 (no subsampling). -uint32 binning_x -uint32 binning_y - -# Region of interest (subwindow of full camera resolution), given in -# full resolution (unbinned) image coordinates. A particular ROI -# always denotes the same window of pixels on the camera sensor, -# regardless of binning settings. -# The default setting of roi (all values 0) is considered the same as -# full resolution (roi.width = width, roi.height = height). -RegionOfInterest roi diff --git a/tests/data/example_msgs/msg/DiagnosticStatus.msg b/tests/data/example_msgs/msg/DiagnosticStatus.msg deleted file mode 100644 index 7ebc47c..0000000 --- a/tests/data/example_msgs/msg/DiagnosticStatus.msg +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 -# -# This message holds the status of an individual component of the robot. - -# Possible levels of operations. -byte OK=0 -byte WARN=1 -byte ERROR=2 -byte STALE=3 - -# Level of operation enumerated above. -byte level -# A description of the test/component reporting. -string name -# A description of the status. -string message -# A hardware unique string. -string hardware_id -# An array of values associated with the status. -KeyValue[] values diff --git a/tests/data/example_msgs/msg/PointCloud2.msg b/tests/data/example_msgs/msg/PointCloud2.msg deleted file mode 100644 index 1353f3f..0000000 --- a/tests/data/example_msgs/msg/PointCloud2.msg +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: CC0-1.0 -# -# This message holds a collection of N-dimensional points, which may -# contain additional information such as normals, intensity, etc. The -# point data is stored as a binary blob, its layout described by the -# contents of the "fields" array. -# -# The point cloud data may be organized 2d (image-like) or 1d (unordered). -# Point clouds organized as 2d images may be produced by camera depth sensors -# such as stereo or time-of-flight. - -# Time of sensor data acquisition, and the coordinate frame ID (for 3d points). -std_msgs/Header header - -# 2D structure of the point cloud. If the cloud is unordered, height is -# 1 and width is the length of the point cloud. -uint32 height -uint32 width - -# Describes the channels and their layout in the binary data blob. -PointField[] fields - -bool is_bigendian # Is this data bigendian? -uint32 point_step # Length of a point in bytes -uint32 row_step # Length of a row in bytes -uint8[] data # Actual point data, size is (row_step*height) - -bool is_dense # True if there are no invalid points diff --git a/tests/test_capella.py b/tests/test_capella.py deleted file mode 100644 index 3cce86c..0000000 --- a/tests/test_capella.py +++ /dev/null @@ -1,204 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 - -import pathlib - -import pytest - -from capella_ros_tools import capella, messages - -EXAMPLE_CAPELLA_PATH = pathlib.Path(__file__).parent.joinpath( - "data/empty_model" -) - - -@pytest.fixture -def sample_capella_data_package(): - capella_path = EXAMPLE_CAPELLA_PATH.as_posix() - return capella.CapellaDataPackage(capella_path, "la") - - -sample_message_person = messages.MessageDef( - "Person", - [ - messages.FieldDef( - messages.TypeDef( - "string", - messages.Range("1", "1"), - ), - "name", - "", - ), - messages.FieldDef( - messages.TypeDef( - "uint8", - messages.Range("1", "1"), - messages.Range("0", "150"), - None, - ), - "age", - "", - ), - messages.FieldDef( - messages.TypeDef( - "Pet", - messages.Range("0", "*"), - ), - "pet", - "", - ), - ], - [], - "", -) - - -sample_message_pet = messages.MessageDef( - "Pet", - [ - messages.FieldDef( - messages.TypeDef( - "string", - messages.Range("1", "1"), - ), - "name", - "", - ), - messages.FieldDef( - messages.TypeDef( - "PetType", - messages.Range("1", "1"), - ), - "type", - "", - ), - ], - [ - messages.EnumDef( - "PetType", - [ - messages.ConstantDef( - messages.TypeDef( - "uint8", - messages.Range("1", "1"), - ), - "CAT", - "0", - "", - ), - messages.ConstantDef( - messages.TypeDef("uint8", messages.Range("1", "1")), - "DOG", - "1", - "", - ), - ], - "", - ), - ], - "", -) - - -@pytest.mark.parametrize( - "sample_pkg_name", ["test_pkg_name", "test_pkg_name_2"] -) -def test_package(sample_capella_data_package, sample_pkg_name): - pkg_def = messages.MessagePkgDef(sample_pkg_name, [], []) - sample_capella_data_package.create_package( - pkg_def, sample_capella_data_package.data_package - ) - - pkg_obj = sample_capella_data_package.create_package( - pkg_def, sample_capella_data_package.data_package - ) - - assert pkg_obj in sample_capella_data_package.data_package.packages - assert pkg_obj.name == sample_pkg_name - - sample_capella_data_package.remove_package( - pkg_obj, sample_capella_data_package.data_package - ) - - assert pkg_obj not in sample_capella_data_package.data_package.packages - - -def _create_and_return_class(sample_capella_data_package, sample_message_def): - sample_capella_data_package.create_class( - sample_message_def, sample_capella_data_package.data_package - ) - cls_obj = sample_capella_data_package.create_class( - sample_message_def, sample_capella_data_package.data_package - ) - return cls_obj - - -@pytest.mark.parametrize( - "sample_message_def", [sample_message_person, sample_message_pet] -) -def test_class(sample_capella_data_package, sample_message_def): - cls_obj = _create_and_return_class( - sample_capella_data_package, sample_message_def - ) - - assert cls_obj in sample_capella_data_package.data_package.classes - assert cls_obj.name == sample_message_def.name - - sample_capella_data_package.remove_class( - cls_obj, sample_capella_data_package.data_package - ) - - assert cls_obj not in sample_capella_data_package.data_package.classes - - -def _create_and_return_enum(sample_capella_data_package, sample_enum_def): - sample_capella_data_package.create_enum( - sample_enum_def, sample_capella_data_package.data_package - ) - enum_obj = sample_capella_data_package.create_enum( - sample_enum_def, sample_capella_data_package.data_package - ) - return enum_obj - - -@pytest.mark.parametrize("sample_enum_def", [sample_message_pet.enums[0]]) -def test_enum(sample_capella_data_package, sample_enum_def): - enum_obj = _create_and_return_enum( - sample_capella_data_package, sample_enum_def - ) - - assert enum_obj in sample_capella_data_package.data_package.datatypes - assert enum_obj.name == sample_enum_def.name - assert len(enum_obj.literals) == len(sample_enum_def.literals) - assert enum_obj.literals[0].name == sample_enum_def.literals[0].name - - sample_capella_data_package.remove_enum( - enum_obj, sample_capella_data_package.data_package - ) - - assert enum_obj not in sample_capella_data_package.data_package.datatypes - - -@pytest.mark.parametrize( - "sample_message_def", - [sample_message_person, sample_message_pet], -) -def test_create_properties(sample_capella_data_package, sample_message_def): - cls_obj = _create_and_return_class( - sample_capella_data_package, sample_message_def - ) - sample_capella_data_package.create_properties( - sample_message_def, sample_capella_data_package.data_package - ) - - assert len(cls_obj.owned_properties) == len(sample_message_def.fields) - for prop, field in zip( - cls_obj.owned_properties, sample_message_def.fields - ): - assert prop.name == field.name - - sample_capella_data_package.remove_class( - cls_obj, sample_capella_data_package.data_package - ) - - assert not cls_obj in sample_capella_data_package.data_package.classes diff --git a/tests/test_data_model.py b/tests/test_data_model.py new file mode 100644 index 0000000..eea6b7a --- /dev/null +++ b/tests/test_data_model.py @@ -0,0 +1,293 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +import pathlib + +import pytest + +from capella_ros_tools import data_model +from capella_ros_tools.data_model import ( + CONSTANT_SEPARATOR, + UPPER_BOUND_TOKEN, + ConstantDef, + EnumDef, + FieldDef, + MessageDef, + MessagePkgDef, + Range, + TypeDef, +) + +PATH = pathlib.Path(__file__).parent + +SAMPLE_CLASS_PATH = PATH.joinpath( + "data/data_model/example_msgs/package1/msg/SampleClass.msg" +) +SAMPLE_ENUM_PATH = PATH.joinpath( + "data/data_model/example_msgs/package1/msg/SampleEnum.msg" +) +SAMPLE_CLASS_ENUM_PATH = PATH.joinpath( + "data/data_model/example_msgs/package2/msg/SampleClassEnum.msg" +) + +PACKAGE1_PATH = PATH.joinpath("data/data_model/example_msgs/package1") +PACKAGE2_PATH = PATH.joinpath("data/data_model/example_msgs/package2") + + +@pytest.mark.parametrize( + "params, expected", + [ + ( + ("test_name", Range("1", "1"), None, "test_package"), + "test_package/test_name", + ), + ( + ("test_name", Range("0", "10"), None, "test_package"), + "test_package/test_name[10]", + ), + ( + ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), + f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", + ), + ( + ("test_name", Range("1", "1"), None, None), + "test_name", + ), + ( + ("test_name", Range("0", "*"), None, None), + "test_name[]", + ), + ], +) +def test_TypeDef_str(params, expected): + type_def = TypeDef(*params) + + assert str(type_def) == expected + + +@pytest.mark.parametrize( + "type_str, params", + [ + ( + "test_package/test_name", + ("test_name", Range("1", "1"), None, "test_package"), + ), + ( + "test_package/test_name[10]", + ("test_name", Range("0", "10"), None, "test_package"), + ), + ( + f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", + ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), + ), + ( + "test_name[]", + ("test_name", Range("0", "*"), None, None), + ), + ], +) +def test_TypeDef_from_string(type_str, params): + type_def = TypeDef.from_string(type_str) + expected = TypeDef(*params) + + assert type_def == expected + + +@pytest.mark.parametrize( + "params, expected", + [ + ( + ("test_type", "test_name", "test_description"), + "test_type test_name # test_description", + ), + ( + ("test_type", "test_name", ""), + "test_type test_name", + ), + ], +) +def test_FieldDef_str(params, expected): + type_str, name, description = params + type_def = TypeDef.from_string(type_str) + + field_def = FieldDef(type_def, name, description) + + assert str(field_def) == expected + + +@pytest.mark.parametrize( + "params, expected", + [ + ( + ("test_type", "test_name", 1, "test_description"), + f"test_type test_name {CONSTANT_SEPARATOR} 1 # test_description", + ), + ( + ("test_type", "test_name", 10, ""), + f"test_type test_name {CONSTANT_SEPARATOR} 10", + ), + ], +) +def test_ConstantDef_str(params, expected): + type_str, name, value, description = params + type_def = TypeDef.from_string(type_str) + + constant_def = ConstantDef(type_def, name, value, description) + + assert str(constant_def) == expected + + +def test_extract_file_level_comments_no_comments(): + msg_string = """uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2""" + comments, _ = data_model._extract_file_level_comments(msg_string) + + assert comments == "" + + +def test_extract_file_level_comments_no_newline(): + msg_string = """# This is a comment +# This is another comment +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2""" + comments, _ = data_model._extract_file_level_comments(msg_string) + + assert comments == "" + + +def test_extract_file_level_comments(): + msg_string = """# This is a comment +# This is another comment + +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2""" + comments, _ = data_model._extract_file_level_comments(msg_string) + expected = "

                                          This is a comment

                                          This is another comment

                                          " + + assert comments == expected + + +class TestEnumDef: + @staticmethod + @pytest.fixture + def expected(): + type_def = TypeDef("uint8", Range("1", "1")) + enum_def = EnumDef( + name="enum_name", + literals=[ + ConstantDef( + type=type_def, + name="OK", + value="0", + description="", + ), + ConstantDef( + type=type_def, + name="WARN", + value="1", + description="", + ), + ConstantDef( + type=type_def, + name="ERROR", + value="2", + description="", + ), + ConstantDef( + type=type_def, + name="STALE", + value="3", + description="", + ), + ], + description="", + ) + return MessageDef("enum_name", [], [enum_def], "") + + @staticmethod + def test_merge_enums_before(expected): + + msg_string = """ +uint8 OK = 0 + +uint8 WARN = 1 +uint8 ERROR = 2 +uint8 STALE = 3 +""" + msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected + + @staticmethod + def test_merge_enums_after(expected): + msg_string = """ +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2 + +uint8 STALE = 3 + """ + msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected + + @staticmethod + def test_merge_enums_multiple_after(expected): + msg_string = """ +uint8 OK = 0 +uint8 WARN = 1 + +uint8 ERROR = 2 + +uint8 STALE = 3 + """ + msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected + + @staticmethod + def test_merge_enums_multiple_before(expected): + msg_string = """ +uint8 OK = 0 + +uint8 WARN = 1 + +uint8 ERROR = 2 +uint8 STALE = 3 + """ + msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected + + +def test_MessageDef_class(sample_class_def): + msg_path = SAMPLE_CLASS_PATH + msg_def = MessageDef.from_file(msg_path) + expected = sample_class_def + assert msg_def == expected + + +def test_MessageDef_enum(sample_enum_def): + msg_path = SAMPLE_ENUM_PATH + msg_def = MessageDef.from_file(msg_path) + expected = sample_enum_def + assert msg_def == expected + + +def test_MessageDef_class_enum(sample_class_enum_def): + msg_path = SAMPLE_CLASS_ENUM_PATH + msg_def = MessageDef.from_file(msg_path) + expected = sample_class_enum_def + assert msg_def == expected + + +@pytest.mark.parametrize( + "msg_pkg_path", + [ + PACKAGE1_PATH, + PACKAGE2_PATH, + ], +) +def test_MessagePkgDef_from_msg_folder(msg_pkg_path): + message_pkg_def = MessagePkgDef.from_msg_folder("", msg_pkg_path) + + assert message_pkg_def.messages diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py new file mode 100644 index 0000000..492e7a7 --- /dev/null +++ b/tests/test_import_msgs.py @@ -0,0 +1,315 @@ +# Copyright DB InfraGO AG and contributors +# SPDX-License-Identifier: Apache-2.0 + +import pathlib + +import pytest +from capellambse import decl, helpers + +from capella_ros_tools.data_model import ( + ConstantDef, + EnumDef, + FieldDef, + MessageDef, + MessagePkgDef, + Range, + TypeDef, +) +from capella_ros_tools.scripts.import_msgs import Importer + +PATH = pathlib.Path(__file__).parent + +SAMPLE_PACKAGE_PATH = PATH.joinpath("data/data_model/example_msgs") +SAMPLE_PACKAGE_YAML = PATH.joinpath("data/data_model/example_msgs.yaml") +DUMMY_PATH = PATH.joinpath("data/empty_project_52") + +ROOT = helpers.UUIDString("00000000-0000-0000-0000-000000000000") +SA_ROOT = helpers.UUIDString("00000000-0000-0000-0000-000000000001") + + +@pytest.fixture +def importer(): + return Importer(DUMMY_PATH.as_posix(), True) + + +@pytest.fixture +def class_def(): + return MessageDef( + name="MyMessage", + description="An example message", + fields=[ + FieldDef( + name="field", + type=TypeDef("uint8", Range("1", "1")), + description="Field", + ), + ], + enums=[], + ) + + +@pytest.fixture +def enum_def(): + return EnumDef( + name="MyEnum", + description="An example enum", + literals=[ + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="LITERAL_A", + value="0", + description="Literal A", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="LITERAL_B", + value="1", + description="Literal B", + ), + ], + ) + + +@pytest.fixture +def class_expected(): + return { + "promise_id": "my_package.MyMessage", + "find": { + "name": "MyMessage", + }, + "set": { + "description": "An example message", + "properties": [ + { + "name": "field", + "type": decl.Promise("my_package.uint8"), + "description": "Field", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + }, + ], + }, + } + + +@pytest.fixture +def enum_expected(): + return { + "promise_id": "types.MyEnum", + "find": { + "name": "MyEnum", + }, + "set": { + "description": "An example enum", + "literals": [ + { + "name": "LITERAL_A", + "description": "Literal A", + "value": decl.NewObject("LiteralNumericValue", value="0"), + }, + { + "name": "LITERAL_B", + "description": "Literal B", + "value": decl.NewObject("LiteralNumericValue", value="1"), + }, + ], + }, + } + + +def test_convert_datatype(importer): + promise_id = "std_msgs.uint8" + + expected = { + "promise_id": "std_msgs.uint8", + "find": { + "name": "uint8", + "_type": "NumericType", + }, + } + + actual = importer._convert_datatype(promise_id) + + assert decl.dump([actual]) == decl.dump([expected]) + + +def test_convert_enum(importer, enum_def, enum_expected): + actual = importer._convert_enum(enum_def) + + assert decl.dump([actual]) == decl.dump([enum_expected]) + assert "types.MyEnum" in importer._promise_ids + + +def test_convert_class(importer, class_def, class_expected): + actual = importer._convert_class("my_package", class_def) + + assert decl.dump([actual]) == decl.dump([class_expected]) + assert "my_package.MyMessage" in importer._promise_ids + assert "my_package.uint8" in importer._promise_id_refs + + +def test_convert_class_with_range(importer): + pkg_name = "my_package" + msg_def = MessageDef( + name="MyMessage", + description="An example message", + fields=[ + FieldDef( + name="field", + type=TypeDef("uint8", Range("1", "1"), Range("0", "10")), + description="Field", + ), + ], + enums=[], + ) + + expected = { + "promise_id": "my_package.MyMessage", + "find": { + "name": "MyMessage", + }, + "set": { + "description": "An example message", + "properties": [ + { + "name": "field", + "type": decl.Promise("my_package.uint8"), + "description": "Field", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "min_value": decl.NewObject( + "LiteralNumericValue", value="0" + ), + "max_value": decl.NewObject( + "LiteralNumericValue", value="10" + ), + }, + ], + }, + } + + actual = importer._convert_class(pkg_name, msg_def) + + assert decl.dump([actual]) == decl.dump([expected]) + assert "my_package.MyMessage" in importer._promise_ids + assert "my_package.uint8" in importer._promise_id_refs + + +def test_convert_class_with_ref(importer): + pkg_name = "my_package" + msg_def = MessageDef( + name="MyMessage", + description="An example message", + fields=[ + FieldDef( + name="field", + type=TypeDef("uint8", Range("1", "1"), None, "std_msgs"), + description="Field", + ), + ], + enums=[], + ) + + expected = { + "promise_id": "my_package.MyMessage", + "find": { + "name": "MyMessage", + }, + "set": { + "description": "An example message", + "properties": [ + { + "name": "field", + "type": decl.Promise("std_msgs.uint8"), + "description": "Field", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + }, + ], + }, + } + + actual = importer._convert_class(pkg_name, msg_def) + + assert decl.dump([actual]) == decl.dump([expected]) + assert "my_package.MyMessage" in importer._promise_ids + assert "std_msgs.uint8" in importer._promise_id_refs + + +def test_convert_package( + importer, class_def, enum_def, class_expected, enum_expected +): + subpkg_def = MessagePkgDef( + name="sub_package", + messages=[ + MessageDef( + name="MyEnum", + description="An example enum", + fields=[], + enums=[enum_def], + ), + ], + packages=[], + ) + subpkg2_def = MessagePkgDef( + name="sub_package2", + messages=[], + packages=[], + ) + pkg_def = MessagePkgDef( + name="my_package", + messages=[class_def], + packages=[subpkg_def, subpkg2_def], + ) + + expected = [ + { + "parent": decl.Promise("my_package.sub_package"), + "sync": { + "enumerations": [enum_expected], + }, + }, + { + "parent": decl.Promise("root.my_package"), + "sync": { + "classes": [class_expected], + "packages": [ + { + "promise_id": "my_package.sub_package", + "find": { + "name": "sub_package", + }, + }, + { + "promise_id": "my_package.sub_package2", + "find": { + "name": "sub_package2", + }, + }, + ], + }, + }, + ] + + actual = importer._convert_package( + decl.Promise("root.my_package"), pkg_def + ) + assert decl.dump(actual) == decl.dump(expected) + + +def test_import_msgs(): + expected = decl.dump(decl.load(SAMPLE_PACKAGE_YAML)) + actual = Importer(SAMPLE_PACKAGE_PATH.as_posix(), True)(ROOT, SA_ROOT) + assert actual == expected diff --git a/tests/test_messages.py b/tests/test_messages.py deleted file mode 100644 index 708df24..0000000 --- a/tests/test_messages.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 - -from pathlib import Path - -import pytest - -from capella_ros_tools.messages import ( - CONSTANT_SEPARATOR, - UPPER_BOUND_TOKEN, - ConstantDef, - FieldDef, - MessageDef, - MessagePkgDef, - Range, - TypeDef, -) - -PATH = Path(__file__).parent - - -@pytest.mark.parametrize( - "params, expected_output", - [ - ( - ("test_name", Range("1", "1"), None, "test_package"), - "test_package/test_name", - ), - ( - ("test_name", Range("0", "10"), None, "test_package"), - "test_package/test_name[10]", - ), - ( - ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), - f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", - ), - ], -) -def test_TypeDef_str(params, expected_output): - name, card, range, package = params - - type_def = TypeDef(name, card, range, package) - - assert str(type_def) == expected_output - - -@pytest.mark.parametrize( - "type_str, expected_output", - [ - ( - "test_package/test_name", - ("test_name", Range("1", "1"), None, "test_package"), - ), - ( - "test_package/test_name[10]", - ("test_name", Range("0", "10"), None, "test_package"), - ), - ( - f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", - ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), - ), - ], -) -def test_TypeDef_from_string(type_str, expected_output): - name, card, range, package = expected_output - type_def = TypeDef.from_string(type_str) - - assert type_def.name == name - assert type_def.card == card - assert type_def.range == range - assert type_def.package == package - - -@pytest.mark.parametrize( - "params, expected_output", - [ - ( - ("test_type", "test_name", "test_description"), - "test_type test_name # test_description", - ), - ], -) -def test_FieldDef_str(params, expected_output): - type_str, name, description = params - type_def = TypeDef.from_string(type_str) - - field_def = FieldDef(type_def, name, description) - - assert str(field_def) == expected_output - - -@pytest.mark.parametrize( - "params, expected_output", - [ - ( - ("test_type", "test_name", 1, "test_description"), - f"test_type test_name {CONSTANT_SEPARATOR} 1 # test_description", - ), - ], -) -def test_ConstantDef_str(params, expected_output): - type_str, name, value, description = params - type_def = TypeDef.from_string(type_str) - - constant_def = ConstantDef(type_def, name, value, description) - - assert str(constant_def) == expected_output - - -@pytest.mark.parametrize( - "msg_file_path", - [ - PATH.joinpath("data/example_msgs/msg/CameraInfo.msg"), - PATH.joinpath("data/example_msgs/msg/DiagnosticStatus.msg"), - PATH.joinpath("data/example_msgs/msg/PointCloud2.msg"), - ], -) -def test_MessageDef(msg_file_path): - message_def = MessageDef.from_file(msg_file_path) - - assert message_def.name == msg_file_path.stem - assert str(message_def) == msg_file_path.read_text() - - -@pytest.mark.parametrize( - "pkg_name, msg_path", - [ - ("example_msgs", PATH.joinpath("data/example_msgs")), - ], -) -def test_MessagePkgDef_from_msg_folder(pkg_name, msg_path): - message_pkg_def = MessagePkgDef.from_msg_folder(pkg_name, msg_path) - - assert message_pkg_def.name == pkg_name - assert len(message_pkg_def.messages) == len(list(msg_path.rglob("*.msg"))) From cad6dc68295ffb430cdb5746b66844840b83a0dd Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 6 Mar 2024 12:19:28 +0100 Subject: [PATCH 23/47] docs: Add type annotations to tests --- tests/test_data_model.py | 46 ++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/tests/test_data_model.py b/tests/test_data_model.py index eea6b7a..2f83052 100644 --- a/tests/test_data_model.py +++ b/tests/test_data_model.py @@ -4,6 +4,7 @@ import pathlib import pytest +from capellambse.filehandler import abc from capella_ros_tools import data_model from capella_ros_tools.data_model import ( @@ -59,7 +60,9 @@ ), ], ) -def test_TypeDef_str(params, expected): +def test_TypeDef_str( + params: tuple[str, Range, Range | None, str | None], expected: str +): type_def = TypeDef(*params) assert str(type_def) == expected @@ -86,7 +89,9 @@ def test_TypeDef_str(params, expected): ), ], ) -def test_TypeDef_from_string(type_str, params): +def test_TypeDef_from_string( + type_str: str, params: tuple[str, Range, Range | None, str | None] +): type_def = TypeDef.from_string(type_str) expected = TypeDef(*params) @@ -97,20 +102,21 @@ def test_TypeDef_from_string(type_str, params): "params, expected", [ ( - ("test_type", "test_name", "test_description"), + ( + TypeDef.from_string("test_type"), + "test_name", + "test_description", + ), "test_type test_name # test_description", ), ( - ("test_type", "test_name", ""), + (TypeDef.from_string("test_type"), "test_name", ""), "test_type test_name", ), ], ) -def test_FieldDef_str(params, expected): - type_str, name, description = params - type_def = TypeDef.from_string(type_str) - - field_def = FieldDef(type_def, name, description) +def test_FieldDef_str(params: tuple[TypeDef, str, str], expected: str): + field_def = FieldDef(*params) assert str(field_def) == expected @@ -119,20 +125,22 @@ def test_FieldDef_str(params, expected): "params, expected", [ ( - ("test_type", "test_name", 1, "test_description"), - f"test_type test_name {CONSTANT_SEPARATOR} 1 # test_description", + ( + TypeDef.from_string("test_type"), + "test_name", + "1", + "test", + ), + f"test_type test_name {CONSTANT_SEPARATOR} 1 # test", ), ( - ("test_type", "test_name", 10, ""), + (TypeDef.from_string("test_type"), "test_name", "10", ""), f"test_type test_name {CONSTANT_SEPARATOR} 10", ), ], ) -def test_ConstantDef_str(params, expected): - type_str, name, value, description = params - type_def = TypeDef.from_string(type_str) - - constant_def = ConstantDef(type_def, name, value, description) +def test_ConstantDef_str(params: tuple[TypeDef, str, str, str], expected: str): + constant_def = ConstantDef(*params) assert str(constant_def) == expected @@ -287,7 +295,9 @@ def test_MessageDef_class_enum(sample_class_enum_def): PACKAGE2_PATH, ], ) -def test_MessagePkgDef_from_msg_folder(msg_pkg_path): +def test_MessagePkgDef_from_msg_folder( + msg_pkg_path: abc.AbstractFilePat | pathlib.Path, +): message_pkg_def = MessagePkgDef.from_msg_folder("", msg_pkg_path) assert message_pkg_def.messages From 8214ada90b51a67b56f0827e38abadd2fc82e252 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 6 Mar 2024 16:24:40 +0100 Subject: [PATCH 24/47] docs: Fixed docs to reflect current implementation --- .vscode/launch.json | 66 +++++++++++ .vscode/launch.json.license | 2 + capella_ros_tools/__main__.py | 48 ++++---- capella_ros_tools/scripts/export_capella.py | 122 +++++++++----------- docs/source/howtos.rst | 21 +++- docs/source/index.rst | 27 +---- docs/source/messages.rst | 12 +- docs/source/usage.rst | 33 ++---- pyproject.toml | 3 - 9 files changed, 187 insertions(+), 147 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/launch.json.license diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..29152ba --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,66 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Export local", + "type": "debugpy", + "request": "launch", + "module": "capella_ros_tools", + "args": [ + "export", + "-m", + "tests/data/melody_model_60", + "-l", + "la", + "-o", + "tests/data/melody_msgs" + ] + }, + { + "name": "Export git", + "type": "debugpy", + "request": "launch", + "module": "capella_ros_tools", + "args": [ + "export", + "-m", + "git+https://github.com/DSD-DBS/coffee-machine", + "-l", + "oa", + "-o", + "tests/data/coffee_msgs" + ] + }, + { + "name": "Import local", + "type": "debugpy", + "request": "launch", + "module": "capella_ros_tools", + "args": [ + "import", + "-i", + "tests/data/data_model/example_msgs", + "-m", + "tests/data/empty_project_52", + "-l", + "la", + "--no-deps" + ] + }, + { + "name": "Import git", + "type": "debugpy", + "request": "launch", + "module": "capella_ros_tools", + "args": [ + "import", + "-i", + "git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss", + "-m", + "tests/data/empty_project_52", + "-l", + "la" + ] + } + ] +} diff --git a/.vscode/launch.json.license b/.vscode/launch.json.license new file mode 100644 index 0000000..544def3 --- /dev/null +++ b/.vscode/launch.json.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: CC0-1.0 diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 2c124bb..74f5dd1 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -23,18 +23,20 @@ def cli(): @cli.command("import") -@click.argument( - "messages", +@click.option( + "-i", + "--input", type=str, required=True, ) -@click.argument( - "model", +@click.option( + "-m" "--model", type=cli_helpers.ModelCLI(), required=True, ) -@click.argument( - "layer", +@click.option( + "-l", + "--layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, ) @@ -44,27 +46,24 @@ def cli(): is_flag=True, help="Don’t install message dependencies.", ) -@click.option("--port", type=int, help="Open model viewer on given port.") +@click.option( + "-p", "--port", type=int, help="Open model viewer on given port." +) def import_msgs( - messages: str, + input: str, model: capellambse.MelodyModel, layer: str, no_deps: bool, port: int, ) -> None: - """Import ROS messages into a Capella data package. - - MESSAGES: File path or git URL to ROS messages. - MODEL: Path to Capella model. - LAYER: Layer of Capella model to import elements to. - """ + """Import ROS messages into a Capella data package.""" from capella_ros_tools.scripts import import_msgs as importer root_uuid = getattr(model, layer).uuid types_uuid = model.sa.data_package.uuid - yml = importer.Importer(messages, no_deps)(root_uuid, types_uuid) + yml = importer.Importer(input, no_deps)(root_uuid, types_uuid) decl.apply(model, io.StringIO(yml)) if port: @@ -72,19 +71,23 @@ def import_msgs( @cli.command("export") -@click.argument("model", type=cli_helpers.ModelCLI, required=True) -@click.argument( - "layer", +@click.option("-m", "--model", type=cli_helpers.ModelCLI, required=True) +@click.option( + "-l", + "--layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, ) -@click.argument( - "messages", type=click.Path(path_type=pathlib.Path), required=True +@click.option( + "-o", + "--output", + type=click.Path(path_type=pathlib.Path), + default=pathlib.Path.cwd() / "export", ) def export_capella( model: capellambse.MelodyModel, layer: str, - msg_path: pathlib.Path, + output: pathlib.Path, ): """Export Capella data package to ROS messages. @@ -94,7 +97,8 @@ def export_capella( """ from capella_ros_tools.scripts import export_capella as exporter - exporter.Exporter(model, layer, msg_path)() + current_pkg = getattr(model, layer).data_package + exporter.export(current_pkg, output) if __name__ == "__main__": diff --git a/capella_ros_tools/scripts/export_capella.py b/capella_ros_tools/scripts/export_capella.py index a63ba35..a10ecb4 100644 --- a/capella_ros_tools/scripts/export_capella.py +++ b/capella_ros_tools/scripts/export_capella.py @@ -5,7 +5,6 @@ import pathlib import re -import capellambse from capellambse.model.crosslayer import information from capella_ros_tools import data_model @@ -17,75 +16,64 @@ def _clean_name(name: str) -> str: return re.sub(r"\W", "", name) -class Exporter: - """Class for exporting a Capella data package as ROS messages.""" - - def __init__( - self, - model: capellambse.MelodyModel, - layer: str, - output_path: pathlib.Path, - ): - self._data_package = getattr(model, layer).data_package - output_path.mkdir(parents=True, exist_ok=True) - self._output_path = output_path - - def _handle_pkg( - self, - current_pkg: information.DataPkg, - current_path: pathlib.Path, - ): - for cls_obj in current_pkg.classes: - cls_def = data_model.MessageDef( - cls_obj.name, [], [], cls_obj.description +def export(current_pkg: information.DataPkg, current_path: pathlib.Path): + """Export a Capella data package to ROS messages.""" + for cls_obj in current_pkg.classes: + fields = [] + for prop_obj in cls_obj.owned_properties: + type_def = data_model.TypeDef( + name=prop_obj.type.name, + card=data_model.Range( + prop_obj.min_card.value, prop_obj.max_card.value + ), ) - for prop_obj in cls_obj.owned_properties: - type_def = data_model.TypeDef( - prop_obj.type.name, - data_model.Range( - prop_obj.min_card.value, prop_obj.max_card.value - ), - ) - prop_def = data_model.FieldDef( - type_def, prop_obj.name, prop_obj.description - ) - cls_def.fields.append(prop_def) - (current_path / f"{_clean_name(cls_obj.name)}.msg").write_text( - str(cls_def) + prop_def = data_model.FieldDef( + type=type_def, + name=prop_obj.name, + description=prop_obj.description, ) + fields.append(prop_def) + cls_def = data_model.MessageDef( + name=cls_obj.name, + fields=fields, + enums=[], + description=cls_obj.description, + ) + (current_path / f"{_clean_name(cls_obj.name)}.msg").write_text( + str(cls_def) + ) - for enum_obj in current_pkg.enumerations: - enum_def = data_model.EnumDef( - enum_obj.name, [], enum_obj.description + for enum_obj in current_pkg.enumerations: + literals = [] + for i, lit_obj in enumerate(enum_obj.owned_literals): + try: + type_name = lit_obj.value.type.name + except AttributeError: + type_name = "uint8" + try: + literal_value = lit_obj.value.value + except AttributeError: + literal_value = i + type_def = data_model.TypeDef( + type_name, data_model.Range("1", "1") ) - for i, lit_obj in enumerate(enum_obj.owned_literals): - try: - type_name = lit_obj.value.type.name - except AttributeError: - type_name = "uint8" - try: - literal_value = lit_obj.value.value - except AttributeError: - literal_value = i - type_def = data_model.TypeDef( - type_name, data_model.Range("1", "1") - ) - lit_def = data_model.ConstantDef( - type_def, - lit_obj.name, - literal_value, - lit_obj.description, - ) - enum_def.literals.append(lit_def) - (current_path / f"{_clean_name(enum_obj.name)}.msg").write_text( - str(enum_def) + lit_def = data_model.ConstantDef( + type=type_def, + name=lit_obj.name, + value=literal_value, + description=lit_obj.description, ) + literals.append(lit_def) + enum_def = data_model.EnumDef( + name=enum_obj.name, + literals=literals, + description=enum_obj.description, + ) + (current_path / f"{_clean_name(enum_obj.name)}.msg").write_text( + str(enum_def) + ) - for pkg_obj in current_pkg.packages: - pkg_path = current_path / _clean_name(pkg_obj.name) - pkg_path.mkdir(parents=True, exist_ok=True) - self._handle_pkg(pkg_obj, pkg_path) - - def __call__(self): - """Export the Capella data package as ROS messages.""" - self._handle_pkg(self._data_package, self._output_path) + for pkg_obj in current_pkg.packages: + pkg_path = current_path / _clean_name(pkg_obj.name) + pkg_path.mkdir(parents=True, exist_ok=True) + export(pkg_obj, pkg_path) diff --git a/docs/source/howtos.rst b/docs/source/howtos.rst index 86a8e3d..6645fdd 100644 --- a/docs/source/howtos.rst +++ b/docs/source/howtos.rst @@ -17,24 +17,35 @@ Import ROS2 Messages: --------------------- .. code-block:: bash - $ python -m capella_ros_tools import tests/data/example_msgs tests/data/empty_model la --exists-action=skip --port=5000 --no-deps + python -m capella_ros_tools import \ + -i tests/data/data_model/example_msgs \ + -m tests/data/empty_project_52 -l la \ + --port=5000 --no-deps Import ROS2 Messages from Git Repository: ----------------------------------------- .. code-block:: bash - $ python -m capella_ros_tools import git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss tests/data/empty_model la --exists-action=skip --port=5000 + python -m capella_ros_tools import \ + -i git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss \ + -m tests/data/empty_project_52 -l la \ + --port=5000 Export Capella data package: ------------------------------------ .. code-block:: bash - $ python -m capella_ros_tools export tests/data/melody_model_60 la tests/data/melody_msgs + python -m capella_ros_tools export \ + -m tests/data/melody_model_60 -l la \ + -o tests/data/melody_msgs Export Capella data package from Git Repository: -------------------------------------------------------- .. code-block:: bash - $ python -m capella_ros_tools export git+https://github.com/DSD-DBS/coffee-machine oa tests/data/coffee_msgs + python -m capella_ros_tools export \ + -m git+https://github.com/DSD-DBS/coffee-machine -l oa \ + -o tests/data/coffee_msgs -Note: When exporting Capella enumerations, if the enumeration values are not defined in the Capella model, the values will be set to 0, 1, 2, 3, etc. and the datatype will be set to unit8. +.. note:: + When exporting Capella enumerations, if the enumeration literal values are not defined in the Capella model, the values will be set to 0, 1, 2, 3, etc. and the value's type will be set to unit8. diff --git a/docs/source/index.rst b/docs/source/index.rst index f872e4a..d4c6365 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -18,41 +18,22 @@ Overview Capella ROS Tools is a command-line application written in Python, designed to facilitate the seamless integration of ROS2 and Capella MBSE tools. Key features include: -* generate ROS2 message files (.msg) from Capella models -* generate Capella elements and objects from ROS2 message files -* support input sources through both local file paths and Git repositories -* display snapshots of Capella model elements in a tree structure - -If you want a quickstart at how to use this tool, head right into the -:ref:`Usage section `. +* Export Capella model elements as ROS2 message (.msg) files. +* Import ROS2 message (.msg) files as Capella model elements. +* Works with local and remote message files/Capella projects. .. toctree:: :maxdepth: 2 :caption: Contents: -.. toctree:: - :maxdepth: 2 - :caption: Usage - usage - - -.. toctree:: - :maxdepth: 2 - :caption: Examples - howtos - -.. toctree:: - :maxdepth: 2 - :caption: ROS2 Messages Layout - messages .. toctree:: :maxdepth: 3 - :caption: API reference + :caption: API reference: code/modules diff --git a/docs/source/messages.rst b/docs/source/messages.rst index 6301af8..5046270 100644 --- a/docs/source/messages.rst +++ b/docs/source/messages.rst @@ -18,7 +18,7 @@ Class Definition * **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered property. * **Block Comments:** Comments on a line of their own and not indented are added to the description of the next properties until an empty line and the block comment has been used. -.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClass.msg +.. literalinclude:: ../../tests/data/data_model/example_msgs/package1/msg/SampleClass.msg :language: python @@ -33,7 +33,7 @@ Enum definition * **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered enum literal. * **Block Comments:** Comments on a line of their own and not indented are added to the description of the next/current enum definition until an empty line and the block comment has been used. -.. literalinclude:: ../../tests/data/example_msgs/msg/SampleEnum.msg +.. literalinclude:: ../../tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg :language: python Enum and Class Definition @@ -46,7 +46,7 @@ Enum and Class Definition * **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered property or enum literal. * **Block Comments:** Comments on a line of their own and not indented are added to the descriptions of the next properties or added to the descriptions of the next/current enum until an empty line and the block comment has been used. -.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClassEnum.msg +.. literalinclude:: ../../tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg :language: python Referencing enums @@ -61,7 +61,7 @@ In the Same File * Name matching takes precedence over type matching. -.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClassEnum.msg +.. literalinclude:: ../../tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg :language: python In another file @@ -72,8 +72,8 @@ In another file * **cf. :** The enum name was derived from the file name (excluding the extension). * **cf. , _XXX:** The enum name was derived from the longest common prefix of all enum literals in the definition. -.. literalinclude:: ../../tests/data/example_msgs/msg/SampleEnum.msg +.. literalinclude:: ../../tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg :language: python -.. literalinclude:: ../../tests/data/example_msgs/msg/SampleClass.msg +.. literalinclude:: ../../tests/data/data_model/example_msgs/package1/msg/SampleClass.msg :language: python diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 26dd736..62739ad 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -14,33 +14,24 @@ Import ROS2 Messages: ---------------------- .. code-block:: bash - $ python -m capella_ros_tools import --port= --exists-action= --no-deps + python -m capella_ros_tools import -i -m -l -p --no-deps -* ****, import ROS2 messages from -* ****, export to Capella model -* ****, use Capella model layer -* **--port=**, start Capella model viewer at (optional) -* **--exists-action=**, action to take if a Capella element already exists (optional) +* **-i/--input**, import ROS2 messages from +* **-m/--model**, export to Capella model +* **-l/--layer**, use Capella model layer +* **-p/--port**, start Capella model explorer at (optional) +* **--no-deps**, do not import ROS2 dependencies (e.g. std_msgs) (flag) - * **skip**, skip elements - * **replace**, replace elements - * **abort**, abort import - * **ask**, ask the user (default) - -* **--no-deps**, do not import ROS2 dependencies (e.g. std_msgs) - -Tip: Use the `--port` option to start the Capella model viewer at a specific port. The Capella model viewer can then be downloaded to be viewed at a later time using the following command: -.. code-block:: bash - - $ wget http://localhost: -E -r +.. note:: + The `--port` option can be used to start the Capella model explorer on a specific port. The Capella model viewer can then be downloaded to be viewed at a later time using `wget` eg. `wget http://localhost: -E -r`. Export Capella Model (experimental): ------------------------------------ .. code-block:: bash - $ python -m capella_ros_tools export + python -m capella_ros_tools export -m -l -o -* ****, import Capella model from -* ****, use Capella model layer -* ****, export ROS2 messages to +* **-m/--model**, import Capella model from +* **-l/--layer**, use Capella model layer +* **-o/--output**, export ROS2 messages to diff --git a/pyproject.toml b/pyproject.toml index 3931f60..26b0c78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,9 +30,6 @@ classifiers = [ dependencies = [ "click", "capellambse@ git+https://github.com/DSD-DBS/py-capellambse.git@decl-sync", - "capellambse_context_diagrams", - "fastapi", - "uvicorn[standard]", ] [project.urls] From be6b070700973676c4ba266fd91cc6cb6fb5ab15 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Thu, 7 Mar 2024 16:08:46 +0100 Subject: [PATCH 25/47] fix: Accumulate comment lines --- capella_ros_tools/__main__.py | 47 +++-- capella_ros_tools/data_model.py | 23 ++- .../export_capella.py => exporter.py} | 0 .../{scripts/import_msgs.py => importer.py} | 9 +- capella_ros_tools/scripts/__init__.py | 3 - docs/source/messages.rst | 29 +++ tests/conftest.py | 104 +++++----- tests/data/data_model/example_msgs.yaml | 32 +-- .../package1/msg/{ => types}/SampleEnum.msg | 0 .../msg/{ => types}/SampleEnum.msg.license | 0 .../package2/msg/SampleClassEnum.msg | 2 +- tests/test_data_model.py | 193 +++++++++++++++--- tests/test_import_msgs.py | 6 +- 13 files changed, 313 insertions(+), 135 deletions(-) rename capella_ros_tools/{scripts/export_capella.py => exporter.py} (100%) rename capella_ros_tools/{scripts/import_msgs.py => importer.py} (96%) delete mode 100644 capella_ros_tools/scripts/__init__.py rename tests/data/data_model/example_msgs/package1/msg/{ => types}/SampleEnum.msg (100%) rename tests/data/data_model/example_msgs/package1/msg/{ => types}/SampleEnum.msg.license (100%) diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 74f5dd1..f09b01f 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -10,6 +10,7 @@ from capellambse import cli_helpers, decl import capella_ros_tools +from capella_ros_tools import exporter, importer @click.group() @@ -28,17 +29,21 @@ def cli(): "--input", type=str, required=True, + help="Path to the ROS message package.", ) @click.option( - "-m" "--model", + "-m", + "--model", type=cli_helpers.ModelCLI(), required=True, + help="Path to the Capella model.", ) @click.option( "-l", "--layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, + help="The layer to import the messages to.", ) @click.option( "--no-deps", @@ -47,56 +52,58 @@ def cli(): help="Don’t install message dependencies.", ) @click.option( - "-p", "--port", type=int, help="Open model viewer on given port." + "-o", + "--output", + type=click.Path(path_type=pathlib.Path, dir_okay=False), + help="Output file path for decl YAML.", ) def import_msgs( input: str, model: capellambse.MelodyModel, layer: str, no_deps: bool, - port: int, + output: pathlib.Path, ) -> None: """Import ROS messages into a Capella data package.""" - from capella_ros_tools.scripts import import_msgs as importer - root_uuid = getattr(model, layer).uuid types_uuid = model.sa.data_package.uuid - yml = importer.Importer(input, no_deps)(root_uuid, types_uuid) - decl.apply(model, io.StringIO(yml)) - - if port: - raise NotImplementedError("Open model with model explorer.") + yml = importer.Importer(input, no_deps).to_yaml(root_uuid, types_uuid) + if output: + output.write_text(yml, encoding="utf-8") + else: + decl.apply(model, io.StringIO(yml)) @cli.command("export") -@click.option("-m", "--model", type=cli_helpers.ModelCLI, required=True) +@click.option( + "-m", + "--model", + type=cli_helpers.ModelCLI, + required=True, + help="Path to the Capella model.", +) @click.option( "-l", "--layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), required=True, + help="The layer to export the model objects from.", ) @click.option( "-o", "--output", - type=click.Path(path_type=pathlib.Path), + type=click.Path(path_type=pathlib.Path, file_okay=False), default=pathlib.Path.cwd() / "export", + help="Output directory for the .msg files.", ) def export_capella( model: capellambse.MelodyModel, layer: str, output: pathlib.Path, ): - """Export Capella data package to ROS messages. - - CAPELLA_PATH: Path to Capella model. - LAYER: Layer of Capella model to export elements from. - MESSAGES: Path to output folder for .msg files. - """ - from capella_ros_tools.scripts import export_capella as exporter - + """Export Capella data package to ROS messages.""" current_pkg = getattr(model, layer).data_package exporter.export(current_pkg, output) diff --git a/capella_ros_tools/data_model.py b/capella_ros_tools/data_model.py index 195cc2d..1eccab4 100644 --- a/capella_ros_tools/data_model.py +++ b/capella_ros_tools/data_model.py @@ -150,6 +150,13 @@ def __eq__(self, other: object) -> bool: ) +def _process_block_comment(line: str) -> str: + if comment := _clean_comment(line): + return f"{comment} " + else: + return "
                                          " + + def _extract_file_level_comments( msg_string: str, ) -> t.Tuple[str, list[str]]: @@ -165,7 +172,7 @@ def _extract_file_level_comments( return "", lines else: break - file_level_comments += f"

                                          {_clean_comment(line)}

                                          " + file_level_comments += _process_block_comment(line) file_content = lines[i:] return file_level_comments, file_content @@ -240,16 +247,19 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: if last_index > 0: # block comments were used block_comments = "" - block_comments += f"

                                          {_clean_comment(line)}

                                          " + block_comments += _process_block_comment(line) continue else: # inline comment - comment = f"

                                          {_clean_comment(line[index:])}

                                          " + comment = _clean_comment(line[index:]) line = line[:index].rstrip() if not line: # indented comment - last_element.description += comment + last_element.description += ( + f"{comment} " if comment else "
                                          " + ) continue + comment = f"{comment} " type_string, _, rest = line.partition(" ") name, _, value = rest.partition(CONSTANT_SEPARATOR) @@ -288,6 +298,11 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: common_prefix = os.path.commonprefix( [literal.name for literal in enum.literals] ) + if not common_prefix.endswith("_"): + if index := common_prefix.rfind("_"): + common_prefix = common_prefix[: index + 1] + else: + common_prefix = "" if common_prefix: enum.name = _get_enum_identifier(common_prefix) for literal in enum.literals: diff --git a/capella_ros_tools/scripts/export_capella.py b/capella_ros_tools/exporter.py similarity index 100% rename from capella_ros_tools/scripts/export_capella.py rename to capella_ros_tools/exporter.py diff --git a/capella_ros_tools/scripts/import_msgs.py b/capella_ros_tools/importer.py similarity index 96% rename from capella_ros_tools/scripts/import_msgs.py rename to capella_ros_tools/importer.py index b4e5af8..f3f3b51 100644 --- a/capella_ros_tools/scripts/import_msgs.py +++ b/capella_ros_tools/importer.py @@ -4,17 +4,16 @@ import logging -import capellambse from capellambse import decl, filehandler, helpers -from capellambse.filehandler import abc from capella_ros_tools import data_model ROS2_INTERFACES = { "common_interfaces": "git+https://github.com/ros2/common_interfaces", "rcl_interfaces": "git+https://github.com/ros2/rcl_interfaces", - "unique_identifier_msgs": "git+https://github.com" - "/ros2/unique_identifier_msgs", + "unique_identifier_msgs": ( + "git+https://github.com/ros2/unique_identifier_msgs" + ), } @@ -181,7 +180,7 @@ def _convert_enum(self, enum_def: data_model.EnumDef) -> dict: return yml - def __call__(self, layer_data_uuid: str, sa_data_uuid) -> str: + def to_yaml(self, layer_data_uuid: str, sa_data_uuid) -> str: """Import ROS messages into a Capella data package.""" instructions = self._convert_package( decl.UUIDReference(helpers.UUIDString(layer_data_uuid)), diff --git a/capella_ros_tools/scripts/__init__.py b/capella_ros_tools/scripts/__init__.py deleted file mode 100644 index c4eb8e6..0000000 --- a/capella_ros_tools/scripts/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright DB InfraGO AG and contributors -# SPDX-License-Identifier: Apache-2.0 -"""Conversion scripts for Capella ROS Tools.""" diff --git a/docs/source/messages.rst b/docs/source/messages.rst index 5046270..8ede46b 100644 --- a/docs/source/messages.rst +++ b/docs/source/messages.rst @@ -10,6 +10,35 @@ ROS2 Message Layout The Capella ROS Tools API expects ROS2 messages to be organized in a specific way: +Package Definition +================== +* A package is a directory containing a `msg` directory. +* The `msg` directory contains `.msg` files which contain class and enum definitions. + +:: + + folders + ├── package1 + │ └── msg + │ ├── class1.msg + │ └── types + │ └── enum1.msg + └── package2 + └── msg + └── class2.msg + +The above folder structure would translate to the following package definition (assuming class1.msg, class2.msg contain class definitions and enum1.msg contains an enum definition): + +:: + + packages + ├── Package: package1 + │ ├── Class: class1 + │ └── Enum: enum1 + └── Package: package2 + └── Class: class3 + + Class Definition ================ * A `.msg` file can contain one class definition. diff --git a/tests/conftest.py b/tests/conftest.py index 66ac66c..8a5449a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -21,54 +21,54 @@ def sample_class_def(): FieldDef( type=TypeDef("uint8", Range("1", "1"), Range("0", "10"), None), name="sample_field1", - description="

                                          This block comment is added to the

                                          " - "

                                          property description of sample_field1.

                                          " - "

                                          This block comment is also added to the

                                          " - "

                                          property description of sample_field1.

                                          ", + description="This block comment is added to the " + "property description of sample_field1. " + "This block comment is also added to the " + "property description of sample_field1. ", ), FieldDef( type=TypeDef("uint8", Range("1", "1"), None, None), name="sample_field2", - description="

                                          This block comment is added to the property

                                          " - "

                                          descriptions of sample_field2 and sample_field3.

                                          ", + description="This block comment is added to the property " + "descriptions of sample_field2 and sample_field3. ", ), FieldDef( TypeDef("uint8", Range("0", "*"), None, None), name="sample_field3", - description="

                                          This block comment is added to the property

                                          " - "

                                          descriptions of sample_field2 and sample_field3.

                                          ", + description="This block comment is added to the property " + "descriptions of sample_field2 and sample_field3. ", ), FieldDef( type=TypeDef("SampleEnum", Range("1", "1"), None, "types"), name="sample_field4", - description="

                                          This block comment is added to the property

                                          " - "

                                          descriptions of sample_field4 and sample_field5.

                                          " - "

                                          Fields in SampleClass can reference

                                          " - "

                                          enums in other files.

                                          " - "

                                          The property sample_field4

                                          " - "

                                          is of type SampleEnum.

                                          " - "

                                          cf. SampleEnum

                                          ", + description="This block comment is added to the property " + "descriptions of sample_field4 and sample_field5. " + "Fields in SampleClass can reference " + "enums in other files. " + "The property sample_field4 " + "is of type SampleEnum. " + "cf. SampleEnum ", ), FieldDef( type=TypeDef( "SampleEnumValue", Range("1", "1"), None, "types" ), name="sample_field5", - description="

                                          This block comment is added to the property

                                          " - "

                                          descriptions of sample_field4 and sample_field5.

                                          " - "

                                          This inline comment

                                          " - "

                                          is added to the

                                          " - "

                                          property description of

                                          " - "

                                          sample_field5.

                                          " - "

                                          The property sample_field5

                                          " - "

                                          is of type SampleEnumValue.

                                          " - "

                                          cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX

                                          ", + description="This block comment is added to the property " + "descriptions of sample_field4 and sample_field5. " + "This inline comment " + "is added to the " + "property description of " + "sample_field5. " + "The property sample_field5 " + "is of type SampleEnumValue. " + "cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX ", ), ], enums=[], - description="

                                          SampleClass.msg

                                          " - "

                                          The first comment block at the top of the file

                                          " - "

                                          is added to the class description of SampleClass.

                                          ", + description="SampleClass.msg " + "The first comment block at the top of the file " + "is added to the class description of SampleClass. ", ) @@ -91,29 +91,29 @@ def sample_enum_def(): type=TypeDef("uint8", Range("1", "1"), None, None), name="BLUE", value="1", - description="

                                          This inline comment

                                          " - "

                                          is added to the

                                          " - "

                                          enum literal

                                          " - "

                                          description of BLUE.

                                          ", + description="This inline comment " + "is added to the " + "enum literal " + "description of BLUE. ", ), ConstantDef( type=TypeDef("uint8", Range("1", "1"), None, None), name="YELLOW", value="2", - description="

                                          This block comment is added to the

                                          " - "

                                          enum literal descriptions of YELLOW and GREEN.

                                          ", + description="This block comment is added to the " + "enum literal descriptions of YELLOW and GREEN. ", ), ConstantDef( type=TypeDef("uint8", Range("1", "1"), None, None), name="GREEN", value="3", - description="

                                          This block comment is added to the

                                          " - "

                                          enum literal descriptions of YELLOW and GREEN.

                                          ", + description="This block comment is added to the " + "enum literal descriptions of YELLOW and GREEN. ", ), ], - description="

                                          SampleEnum.msg

                                          " - "

                                          This block comment is added to the

                                          " - "

                                          enum description of SampleEnumValue.

                                          ", + description="SampleEnum.msg " + "This block comment is added to the " + "enum description of SampleEnumValue. ", ), EnumDef( name="SampleEnum", @@ -143,10 +143,10 @@ def sample_enum_def(): description="", ), ], - description="

                                          This block comment is added to the

                                          " - "

                                          enum description of SampleEnum.

                                          " - "

                                          In a file, there can only be one or no enum

                                          " - "

                                          whose literal names do not share a common prefix.

                                          ", + description="This block comment is added to the " + "enum description of SampleEnum. " + "In a file, there can only be one or no enum " + "whose literal names do not share a common prefix. ", ), ], description="", @@ -163,13 +163,13 @@ def sample_class_enum_def(): "SampleClassEnumStatus", Range("1", "1"), None, "types" ), name="status", - description="

                                          The property status is of type

                                          " - "

                                          SampleClassEnumStatus.

                                          ", + description="The property status is of type " + "SampleClassEnumStatus. ", ), FieldDef( type=TypeDef("Color", Range("1", "1"), None, "types"), name="color", - description="

                                          The property color is of type Color.

                                          ", + description="The property color is of type Color. ", ), FieldDef( type=TypeDef("uint8", Range("1", "1"), None, None), @@ -206,8 +206,8 @@ def sample_class_enum_def(): description="", ), ], - description="

                                          This block comment is added to the

                                          " - "

                                          enum description of SampleClassEnumStatus.

                                          ", + description="This block comment is added to the " + "enum description of SampleClassEnumStatus. ", ), EnumDef( name="Color", @@ -231,11 +231,11 @@ def sample_class_enum_def(): description="", ), ], - description="

                                          This block comment is added to the

                                          " - "

                                          enum description of Color.

                                          ", + description="This block comment is added to the " + "enum description of Color. ", ), ], - description="

                                          SampleClassEnum.msg

                                          " - "

                                          Properties in SampleClassEnum can reference

                                          " - "

                                          enums in the same file.

                                          ", + description="SampleClassEnum.msg " + "Properties in SampleClassEnum can reference " + "enums in the same file. ", ) diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index 10c7196..b052207 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -8,10 +8,10 @@ find: name: SampleClass set: - description: "

                                          SampleClass.msg

                                          The first comment block at the top of the file

                                          is added to the class description of SampleClass.

                                          " + description: "SampleClass.msg The first comment block at the top of the file is added to the class description of SampleClass. " properties: - name: sample_field1 - description: "

                                          This block comment is added to the

                                          property description of sample_field1.

                                          This block comment is also added to the

                                          property description of sample_field1.

                                          " + description: "This block comment is added to the property description of sample_field1. This block comment is also added to the property description of sample_field1. " type: !promise package1.uint8 min_card: !new_object _type: LiteralNumericValue @@ -26,7 +26,7 @@ _type: LiteralNumericValue value: "10" - name: sample_field2 - description: "

                                          This block comment is added to the property

                                          descriptions of sample_field2 and sample_field3.

                                          " + description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " type: !promise package1.uint8 min_card: !new_object _type: LiteralNumericValue @@ -35,7 +35,7 @@ _type: LiteralNumericValue value: "1" - name: sample_field3 - description: "

                                          This block comment is added to the property

                                          descriptions of sample_field2 and sample_field3.

                                          " + description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " type: !promise package1.uint8 min_card: !new_object _type: LiteralNumericValue @@ -44,7 +44,7 @@ _type: LiteralNumericValue value: "*" - name: sample_field4 - description: "

                                          This block comment is added to the property

                                          descriptions of sample_field4 and sample_field5.

                                          Fields in SampleClass can reference

                                          enums in other files.

                                          The property sample_field4

                                          is of type SampleEnum.

                                          cf. SampleEnum

                                          " + description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " type: !promise types.SampleEnum min_card: !new_object _type: LiteralNumericValue @@ -53,7 +53,7 @@ _type: LiteralNumericValue value: "1" - name: sample_field5 - description: "

                                          This block comment is added to the property

                                          descriptions of sample_field4 and sample_field5.

                                          This inline comment

                                          is added to the

                                          property description of

                                          sample_field5.

                                          The property sample_field5

                                          is of type SampleEnumValue.

                                          cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX

                                          " + description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " type: !promise types.SampleEnumValue min_card: !new_object _type: LiteralNumericValue @@ -66,7 +66,7 @@ find: name: SampleEnumValue set: - description: "

                                          SampleEnum.msg

                                          This block comment is added to the

                                          enum description of SampleEnumValue.

                                          " + description: "SampleEnum.msg This block comment is added to the enum description of SampleEnumValue. " literals: - name: RED description: "" @@ -74,17 +74,17 @@ _type: LiteralNumericValue value: "0" - name: BLUE - description: "

                                          This inline comment

                                          is added to the

                                          enum literal

                                          description of BLUE.

                                          " + description: "This inline comment is added to the enum literal description of BLUE. " value: !new_object _type: LiteralNumericValue value: "1" - name: YELLOW - description: "

                                          This block comment is added to the

                                          enum literal descriptions of YELLOW and GREEN.

                                          " + description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " value: !new_object _type: LiteralNumericValue value: "2" - name: GREEN - description: "

                                          This block comment is added to the

                                          enum literal descriptions of YELLOW and GREEN.

                                          " + description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " value: !new_object _type: LiteralNumericValue value: "3" @@ -92,7 +92,7 @@ find: name: SampleEnum set: - description: "

                                          This block comment is added to the

                                          enum description of SampleEnum.

                                          In a file, there can only be one or no enum

                                          whose literal names do not share a common prefix.

                                          " + description: "This block comment is added to the enum description of SampleEnum. In a file, there can only be one or no enum whose literal names do not share a common prefix. " literals: - name: OK description: "" @@ -122,10 +122,10 @@ find: name: SampleClassEnum set: - description: "

                                          SampleClassEnum.msg

                                          Properties in SampleClassEnum can reference

                                          enums in the same file.

                                          " + description: "SampleClassEnum.msg Properties in SampleClassEnum can reference enums in the same file. " properties: - name: status - description: "

                                          The property status is of type

                                          SampleClassEnumStatus.

                                          " + description: "The property status is of type SampleClassEnumStatus. " type: !promise types.SampleClassEnumStatus min_card: !new_object _type: LiteralNumericValue @@ -134,7 +134,7 @@ _type: LiteralNumericValue value: "1" - name: color - description: "

                                          The property color is of type Color.

                                          " + description: "The property color is of type Color. " type: !promise types.Color min_card: !new_object _type: LiteralNumericValue @@ -156,7 +156,7 @@ find: name: SampleClassEnumStatus set: - description: "

                                          This block comment is added to the

                                          enum description of SampleClassEnumStatus.

                                          " + description: "This block comment is added to the enum description of SampleClassEnumStatus. " literals: - name: OK description: "" @@ -182,7 +182,7 @@ find: name: Color set: - description: "

                                          This block comment is added to the

                                          enum description of Color.

                                          " + description: "This block comment is added to the enum description of Color. " literals: - name: RED description: "" diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg b/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg similarity index 100% rename from tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg rename to tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg.license b/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg.license similarity index 100% rename from tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg.license rename to tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg.license diff --git a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg index cad7b7a..59a2911 100644 --- a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg +++ b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg @@ -15,7 +15,7 @@ uint8 COLOR_RED = 0 uint8 COLOR_BLUE = 1 uint8 COLOR_YELLOW = 2 -uint8 status # The property status is of type +uint8 status # The property status is of type # SampleClassEnumStatus. uint8 color # The property color is of type Color. uint8 field diff --git a/tests/test_data_model.py b/tests/test_data_model.py index 2f83052..69249af 100644 --- a/tests/test_data_model.py +++ b/tests/test_data_model.py @@ -25,7 +25,7 @@ "data/data_model/example_msgs/package1/msg/SampleClass.msg" ) SAMPLE_ENUM_PATH = PATH.joinpath( - "data/data_model/example_msgs/package1/msg/SampleEnum.msg" + "data/data_model/example_msgs/package1/msg/types/SampleEnum.msg" ) SAMPLE_CLASS_ENUM_PATH = PATH.joinpath( "data/data_model/example_msgs/package2/msg/SampleClassEnum.msg" @@ -145,40 +145,138 @@ def test_ConstantDef_str(params: tuple[TypeDef, str, str, str], expected: str): assert str(constant_def) == expected -def test_extract_file_level_comments_no_comments(): - msg_string = """uint8 OK = 0 +class TestComments: + @staticmethod + def test_extract_file_level_comments_no_comments(): + msg_string = """uint8 OK = 0 uint8 WARN = 1 uint8 ERROR = 2""" - comments, _ = data_model._extract_file_level_comments(msg_string) + comments, _ = data_model._extract_file_level_comments(msg_string) - assert comments == "" + assert comments == "" + @staticmethod + def test_extract_file_level_comments_no_newline(): + msg_string = """# This is a comment + # This is another comment + uint8 OK = 0 + uint8 WARN = 1 + uint8 ERROR = 2""" + comments, _ = data_model._extract_file_level_comments(msg_string) -def test_extract_file_level_comments_no_newline(): - msg_string = """# This is a comment -# This is another comment -uint8 OK = 0 -uint8 WARN = 1 -uint8 ERROR = 2""" - comments, _ = data_model._extract_file_level_comments(msg_string) + assert comments == "" - assert comments == "" + @staticmethod + def test_extract_file_level_comments(): + msg_string = """# This is a comment + # This is another comment + uint8 OK = 0 + uint8 WARN = 1 + uint8 ERROR = 2""" + comments, _ = data_model._extract_file_level_comments(msg_string) + expected = "This is a comment This is another comment " -def test_extract_file_level_comments(): - msg_string = """# This is a comment -# This is another comment + assert comments == expected -uint8 OK = 0 -uint8 WARN = 1 -uint8 ERROR = 2""" - comments, _ = data_model._extract_file_level_comments(msg_string) - expected = "

                                          This is a comment

                                          This is another comment

                                          " + @staticmethod + def test_extract_file_level_comments_with_newline(): + msg_string = """# This is a comment +# +# This is another comment""" + comments, _ = data_model._extract_file_level_comments(msg_string) + expected = "This is a comment
                                          This is another comment" + + @staticmethod + def test_parse_comments_no_comments(): + msg_string = """uint8 field""" + + msg_def = MessageDef.from_string("test_name", msg_string) + expected = MessageDef( + name="test_name", + fields=[ + FieldDef( + type=TypeDef.from_string("uint8"), + name="field", + description="", + ) + ], + enums=[], + description="", + ) + assert msg_def == expected + + @staticmethod + def test_parse_comments_block_comments(): + msg_string = """# Here is text. +# Here is more text. +# +# This is unrelated text. +uint8 field""" + msg_def = MessageDef.from_string("test_name", msg_string) + expected = MessageDef( + name="test_name", + fields=[ + FieldDef( + type=TypeDef.from_string("uint8"), + name="field", + description="Here is text. Here is more text.
                                          " + "This is unrelated text. ", + ) + ], + enums=[], + description="", + ) + assert msg_def == expected + + @staticmethod + def test_parse_comments_inline_comments(): + msg_string = """uint8 field # Here is text. + # Here is more text. + # + # This is unrelated text.""" + msg_def = MessageDef.from_string("test_name", msg_string) + expected = MessageDef( + name="test_name", + fields=[ + FieldDef( + type=TypeDef.from_string("uint8"), + name="field", + description="Here is text. Here is more text.
                                          " + "This is unrelated text. ", + ) + ], + enums=[], + description="", + ) + assert msg_def == expected - assert comments == expected + @staticmethod + def test_parse_comments_mixed_comments(): + msg_string = """# This is a block comment. +# This is still a block comment. +uint8 field # This is an inline comment. + # This is still an inline comment.""" + msg_def = MessageDef.from_string("test_name", msg_string) + expected = MessageDef( + name="test_name", + fields=[ + FieldDef( + type=TypeDef.from_string("uint8"), + name="field", + description="This is a block comment. " + "This is still a block comment. " + "This is an inline comment. " + "This is still an inline comment. ", + ) + ], + enums=[], + description="", + ) + assert msg_def == expected -class TestEnumDef: +class TestMergeEnumDef: @staticmethod @pytest.fixture def expected(): @@ -223,8 +321,7 @@ def test_merge_enums_before(expected): uint8 WARN = 1 uint8 ERROR = 2 -uint8 STALE = 3 -""" +uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) assert msg_def == expected @@ -235,8 +332,7 @@ def test_merge_enums_after(expected): uint8 WARN = 1 uint8 ERROR = 2 -uint8 STALE = 3 - """ +uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) assert msg_def == expected @@ -248,8 +344,7 @@ def test_merge_enums_multiple_after(expected): uint8 ERROR = 2 -uint8 STALE = 3 - """ +uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) assert msg_def == expected @@ -261,12 +356,46 @@ def test_merge_enums_multiple_before(expected): uint8 WARN = 1 uint8 ERROR = 2 -uint8 STALE = 3 - """ +uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) assert msg_def == expected +class TestEnumName: + @staticmethod + def test_enum_name_commonprefix_no_underscore(): + msg_string = """ +uint8 START = 0 +uint8 STOP = 1""" + msg_def = MessageDef.from_string("enum_name", msg_string) + actual = msg_def.enums[0].name + expected = "enum_name" + + assert actual == expected + + @staticmethod + def test_enum_name_commonprefix_with_underscore(): + msg_string = """ +uint8 ST_ART = 0 +uint8 ST_OP = 1""" + msg_def = MessageDef.from_string("enum_name", msg_string) + actual = msg_def.enums[0].name + expected = "St" + + assert actual == expected + + @staticmethod + def test_enum_name_commonprefix_with_multiple_underscore(): + msg_string = """ +uint8 S_T_ART = 0 +uint8 S_T_OP = 1""" + msg_def = MessageDef.from_string("enum_name", msg_string) + actual = msg_def.enums[0].name + expected = "ST" + + assert actual == expected + + def test_MessageDef_class(sample_class_def): msg_path = SAMPLE_CLASS_PATH msg_def = MessageDef.from_file(msg_path) @@ -296,7 +425,7 @@ def test_MessageDef_class_enum(sample_class_enum_def): ], ) def test_MessagePkgDef_from_msg_folder( - msg_pkg_path: abc.AbstractFilePat | pathlib.Path, + msg_pkg_path: abc.AbstractFilePath | pathlib.Path, ): message_pkg_def = MessagePkgDef.from_msg_folder("", msg_pkg_path) diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index 492e7a7..f0d72f9 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -15,7 +15,7 @@ Range, TypeDef, ) -from capella_ros_tools.scripts.import_msgs import Importer +from capella_ros_tools.importer import Importer PATH = pathlib.Path(__file__).parent @@ -311,5 +311,7 @@ def test_convert_package( def test_import_msgs(): expected = decl.dump(decl.load(SAMPLE_PACKAGE_YAML)) - actual = Importer(SAMPLE_PACKAGE_PATH.as_posix(), True)(ROOT, SA_ROOT) + actual = Importer(SAMPLE_PACKAGE_PATH.as_posix(), True).to_yaml( + ROOT, SA_ROOT + ) assert actual == expected From f4c6ae362fbd1a94e49d578bc2c32abdc3a18687 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Thu, 7 Mar 2024 16:24:20 +0100 Subject: [PATCH 26/47] docs: Update docs regarding comments --- docs/source/messages.rst | 30 +++++++++++++++---- .../package1/msg/types/SampleEnum.msg | 1 + 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/docs/source/messages.rst b/docs/source/messages.rst index 8ede46b..4949ad1 100644 --- a/docs/source/messages.rst +++ b/docs/source/messages.rst @@ -54,13 +54,12 @@ Class Definition Enum definition =============== * A `.msg` file can contain multiple enum definitions. -* Multiple enum definitions are separated by an empty line. -* Enum names are determined based on the longest common prefix of all enum literals in the enum definition. +* Enum names are determined based on the common prefix of all enum literals in the enum definition. * If no common prefix exists, the enum name is derived from the file name (excluding the extension). * Two or more enums must not have literal names without a common prefix. * **Inline Comments:** Comments on the same line as an enum literal definition are directly added to the that enum literal's description. * **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered enum literal. -* **Block Comments:** Comments on a line of their own and not indented are added to the description of the next/current enum definition until an empty line and the block comment has been used. +* **Block Comments:** Comments on a line of their own and not indented are added to the description of the next enum definition or the next enum literal definitions until an empty line and the block comment has been used. .. literalinclude:: ../../tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg :language: python @@ -75,8 +74,29 @@ Enum and Class Definition * **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered property or enum literal. * **Block Comments:** Comments on a line of their own and not indented are added to the descriptions of the next properties or added to the descriptions of the next/current enum until an empty line and the block comment has been used. -.. literalinclude:: ../../tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg - :language: python +.. code-block:: python + + # SampleClassEnum.msg + # Properties in SampleClassEnum can reference + # enums in the same file. + + # This block comment is added to the + # enum description of SampleClassEnumType. + byte OK = 0 + byte WARN = 1 + byte ERROR = 2 + byte STALE = 3 + + # This block comment is added to the + # enum description of Color. + byte COLOR_RED = 0 + byte COLOR_BLUE = 1 + byte COLOR_YELLOW = 2 + + uint8 field1 # This inline comment is added to + # the description of field1. + uint8 field2 + Referencing enums ================= diff --git a/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg b/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg index f27cf23..14f42a8 100644 --- a/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg +++ b/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg @@ -18,4 +18,5 @@ uint8 SAMPLE_ENUM_VALUE_GREEN = 3 uint8 OK = 0 uint8 WARN = 1 uint8 ERROR = 2 + uint8 STALE = 3 From ba2f42969c00e641c4a7b9b2b62baf3c497a6fe9 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Mon, 11 Mar 2024 14:36:57 +0100 Subject: [PATCH 27/47] fix: Use nested sync --- .vscode/launch.json | 4 +- capella_ros_tools/__main__.py | 2 +- capella_ros_tools/exporter.py | 4 +- capella_ros_tools/importer.py | 86 ++-- docs/source/howtos.rst | 4 +- docs/source/messages.rst | 4 +- tests/data/data_model/example_msgs.yaml | 419 +++++++++--------- .../.project | 2 +- .../.project.license | 0 .../empty_project_60.afm} | 4 +- .../empty_project_60.afm.license} | 0 .../empty_project_60.aird} | 31 +- .../empty_project_60.aird.license} | 0 .../empty_project_60.capella} | 252 +++++------ .../empty_project_60.capella.license} | 0 tests/test_import_msgs.py | 52 +-- 16 files changed, 412 insertions(+), 452 deletions(-) rename tests/data/{empty_project_52 => empty_project_60}/.project (88%) rename tests/data/{empty_project_52 => empty_project_60}/.project.license (100%) rename tests/data/{empty_project_52/empty_project_52.afm => empty_project_60/empty_project_60.afm} (54%) rename tests/data/{empty_project_52/empty_project_52.afm.license => empty_project_60/empty_project_60.afm.license} (100%) rename tests/data/{empty_project_52/empty_project_52.aird => empty_project_60/empty_project_60.aird} (59%) rename tests/data/{empty_project_52/empty_project_52.aird.license => empty_project_60/empty_project_60.aird.license} (100%) rename tests/data/{empty_project_52/empty_project_52.capella => empty_project_60/empty_project_60.capella} (59%) rename tests/data/{empty_project_52/empty_project_52.capella.license => empty_project_60/empty_project_60.capella.license} (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index 29152ba..41d117f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -41,7 +41,7 @@ "-i", "tests/data/data_model/example_msgs", "-m", - "tests/data/empty_project_52", + "tests/data/ empty_project_60", "-l", "la", "--no-deps" @@ -57,7 +57,7 @@ "-i", "git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss", "-m", - "tests/data/empty_project_52", + "tests/data/ empty_project_60", "-l", "la" ] diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index f09b01f..47792b0 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -95,7 +95,7 @@ def import_msgs( "-o", "--output", type=click.Path(path_type=pathlib.Path, file_okay=False), - default=pathlib.Path.cwd() / "export", + default=pathlib.Path.cwd() / "data-package", help="Output directory for the .msg files.", ) def export_capella( diff --git a/capella_ros_tools/exporter.py b/capella_ros_tools/exporter.py index a10ecb4..7eb76a5 100644 --- a/capella_ros_tools/exporter.py +++ b/capella_ros_tools/exporter.py @@ -1,7 +1,7 @@ # Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """Tool for exporting a Capella data package to ROS messages.""" -import logging + import pathlib import re @@ -9,8 +9,6 @@ from capella_ros_tools import data_model -logger = logging.getLogger(__name__) - def _clean_name(name: str) -> str: return re.sub(r"\W", "", name) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index f3f3b51..b110f3f 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -2,8 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 """Tool for importing ROS messages to a Capella data package.""" -import logging - from capellambse import decl, filehandler, helpers from capella_ros_tools import data_model @@ -17,9 +15,6 @@ } -logger = logging.getLogger(__name__) - - class Importer: """Class for importing ROS messages to a Capella data package.""" @@ -65,10 +60,8 @@ def _convert_datatype(self, promise_id: str) -> dict: def _convert_package( self, - parent: decl.Promise | decl.UUIDReference, pkg_def: data_model.MessagePkgDef, - ) -> list[dict]: - instructions = [] + ) -> dict: classes = [] enums = [] packages = [] @@ -82,17 +75,17 @@ def _convert_package( for new_pkg in pkg_def.packages: promise_id = f"{pkg_def.name}.{new_pkg.name}" self._promise_ids.add(promise_id) - packages.append( - { - "promise_id": promise_id, - "find": { - "name": new_pkg.name, - }, - } - ) - instructions.extend( - self._convert_package(decl.Promise(promise_id), new_pkg) - ) + yml = { + "promise_id": promise_id, + "find": { + "name": new_pkg.name, + }, + } + + if new_sync := self._convert_package(new_pkg): + yml["sync"] = new_sync + + packages.append(yml) sync = {} if classes: @@ -102,15 +95,7 @@ def _convert_package( if packages: sync["packages"] = packages - if sync: - instructions.append( - { - "parent": parent, - "sync": sync, - } - ) - - return instructions + return sync def _convert_class( self, pkg_name: str, msg_def: data_model.MessageDef @@ -182,35 +167,32 @@ def _convert_enum(self, enum_def: data_model.EnumDef) -> dict: def to_yaml(self, layer_data_uuid: str, sa_data_uuid) -> str: """Import ROS messages into a Capella data package.""" - instructions = self._convert_package( - decl.UUIDReference(helpers.UUIDString(layer_data_uuid)), - self.messages, - ) - + instructions = [ + { + "parent": decl.UUIDReference( + helpers.UUIDString(layer_data_uuid) + ), + "sync": self._convert_package(self.messages), + } + ] if needed_types := self._promise_id_refs - self._promise_ids: datatypes = [ self._convert_datatype(promise_id) for promise_id in needed_types ] - instructions.extend( - [ - { - "parent": decl.UUIDReference( - helpers.UUIDString(sa_data_uuid) - ), - "sync": { - "packages": [ - { - "promise_id": "root.DataTypes", - "find": {"name": "Data Types"}, - } - ], - }, - }, - { - "parent": decl.Promise("root.DataTypes"), - "sync": {"datatypes": datatypes}, + instructions.append( + { + "parent": decl.UUIDReference( + helpers.UUIDString(sa_data_uuid) + ), + "sync": { + "packages": [ + { + "find": {"name": "Data Types"}, + "sync": {"datatypes": datatypes}, + } + ], }, - ] + } ) return decl.dump(instructions) diff --git a/docs/source/howtos.rst b/docs/source/howtos.rst index 6645fdd..5f2eacc 100644 --- a/docs/source/howtos.rst +++ b/docs/source/howtos.rst @@ -19,7 +19,7 @@ Import ROS2 Messages: python -m capella_ros_tools import \ -i tests/data/data_model/example_msgs \ - -m tests/data/empty_project_52 -l la \ + -m tests/data/empty_project_60 -l la \ --port=5000 --no-deps Import ROS2 Messages from Git Repository: @@ -28,7 +28,7 @@ Import ROS2 Messages from Git Repository: python -m capella_ros_tools import \ -i git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss \ - -m tests/data/empty_project_52 -l la \ + -m tests/data/ empty_project_60 -l la \ --port=5000 Export Capella data package: diff --git a/docs/source/messages.rst b/docs/source/messages.rst index 4949ad1..c987a43 100644 --- a/docs/source/messages.rst +++ b/docs/source/messages.rst @@ -61,7 +61,7 @@ Enum definition * **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered enum literal. * **Block Comments:** Comments on a line of their own and not indented are added to the description of the next enum definition or the next enum literal definitions until an empty line and the block comment has been used. -.. literalinclude:: ../../tests/data/data_model/example_msgs/package1/msg/SampleEnum.msg +.. literalinclude:: ../../tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg :language: python Enum and Class Definition @@ -72,7 +72,7 @@ Enum and Class Definition * Comments at the top of the file are added to the class description. * **Inline Comments:** Comments on the same line as a property or enum literal are directly added to the description of that element. * **Indented Comment Lines:** Comments on a line of their own but indented are added to the description of the last encountered property or enum literal. -* **Block Comments:** Comments on a line of their own and not indented are added to the descriptions of the next properties or added to the descriptions of the next/current enum until an empty line and the block comment has been used. +* **Block Comments:** Comments on a line of their own and not indented are added to the descriptions of the next properties, enum or enum literal until an empty line and the block comment has been used. .. code-block:: python diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index b052207..61c9778 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -1,230 +1,223 @@ # Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 -- parent: !promise root.package1 - sync: - classes: - - promise_id: package1.SampleClass - find: - name: SampleClass - set: - description: "SampleClass.msg The first comment block at the top of the file is added to the class description of SampleClass. " - properties: - - name: sample_field1 - description: "This block comment is added to the property description of sample_field1. This block comment is also added to the property description of sample_field1. " - type: !promise package1.uint8 - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - min_value: !new_object - _type: LiteralNumericValue - value: "0" - max_value: !new_object - _type: LiteralNumericValue - value: "10" - - name: sample_field2 - description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " - type: !promise package1.uint8 - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - name: sample_field3 - description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " - type: !promise package1.uint8 - min_card: !new_object - _type: LiteralNumericValue - value: "0" - max_card: !new_object - _type: LiteralNumericValue - value: "*" - - name: sample_field4 - description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " - type: !promise types.SampleEnum - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - name: sample_field5 - description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " - type: !promise types.SampleEnumValue - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - enumerations: - - promise_id: types.SampleEnumValue - find: - name: SampleEnumValue - set: - description: "SampleEnum.msg This block comment is added to the enum description of SampleEnumValue. " - literals: - - name: RED - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: BLUE - description: "This inline comment is added to the enum literal description of BLUE. " - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: YELLOW - description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " - value: !new_object - _type: LiteralNumericValue - value: "2" - - name: GREEN - description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " - value: !new_object - _type: LiteralNumericValue - value: "3" - - promise_id: types.SampleEnum - find: - name: SampleEnum - set: - description: "This block comment is added to the enum description of SampleEnum. In a file, there can only be one or no enum whose literal names do not share a common prefix. " - literals: - - name: OK - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: WARN - description: "" - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: ERROR - description: "" - value: !new_object - _type: LiteralNumericValue - value: "2" - - name: STALE - description: "" - value: !new_object - _type: LiteralNumericValue - value: "3" - -- parent: !promise root.package2 - sync: - classes: - - promise_id: package2.SampleClassEnum - find: - name: SampleClassEnum - set: - description: "SampleClassEnum.msg Properties in SampleClassEnum can reference enums in the same file. " - properties: - - name: status - description: "The property status is of type SampleClassEnumStatus. " - type: !promise types.SampleClassEnumStatus - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - name: color - description: "The property color is of type Color. " - type: !promise types.Color - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - name: field - description: "" - type: !promise package2.uint8 - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - enumerations: - - promise_id: types.SampleClassEnumStatus - find: - name: SampleClassEnumStatus - set: - description: "This block comment is added to the enum description of SampleClassEnumStatus. " - literals: - - name: OK - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: WARN - description: "" - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: ERROR - description: "" - value: !new_object - _type: LiteralNumericValue - value: "2" - - name: STALE - description: "" - value: !new_object - _type: LiteralNumericValue - value: "3" - - promise_id: types.Color - find: - name: Color - set: - description: "This block comment is added to the enum description of Color. " - literals: - - name: RED - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: BLUE - description: "" - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: YELLOW - description: "" - value: !new_object - _type: LiteralNumericValue - value: "2" - - parent: !uuid "00000000-0000-0000-0000-000000000000" sync: packages: - promise_id: root.package1 find: name: package1 + sync: + classes: + - promise_id: package1.SampleClass + find: + name: SampleClass + set: + description: "SampleClass.msg The first comment block at the top of the file is added to the class description of SampleClass. " + properties: + - name: sample_field1 + description: "This block comment is added to the property description of sample_field1. This block comment is also added to the property description of sample_field1. " + type: !promise package1.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + min_value: !new_object + _type: LiteralNumericValue + value: "0" + max_value: !new_object + _type: LiteralNumericValue + value: "10" + - name: sample_field2 + description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " + type: !promise package1.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: sample_field3 + description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " + type: !promise package1.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "0" + max_card: !new_object + _type: LiteralNumericValue + value: "*" + - name: sample_field4 + description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " + type: !promise types.SampleEnum + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: sample_field5 + description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " + type: !promise types.SampleEnumValue + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + enumerations: + - promise_id: types.SampleEnumValue + find: + name: SampleEnumValue + set: + description: "SampleEnum.msg This block comment is added to the enum description of SampleEnumValue. " + literals: + - name: RED + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: BLUE + description: "This inline comment is added to the enum literal description of BLUE. " + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: YELLOW + description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " + value: !new_object + _type: LiteralNumericValue + value: "2" + - name: GREEN + description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " + value: !new_object + _type: LiteralNumericValue + value: "3" + - promise_id: types.SampleEnum + find: + name: SampleEnum + set: + description: "This block comment is added to the enum description of SampleEnum. In a file, there can only be one or no enum whose literal names do not share a common prefix. " + literals: + - name: OK + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: WARN + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: ERROR + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" + - name: STALE + description: "" + value: !new_object + _type: LiteralNumericValue + value: "3" - promise_id: root.package2 find: name: package2 + sync: + classes: + - promise_id: package2.SampleClassEnum + find: + name: SampleClassEnum + set: + description: "SampleClassEnum.msg Properties in SampleClassEnum can reference enums in the same file. " + properties: + - name: status + description: "The property status is of type SampleClassEnumStatus. " + type: !promise types.SampleClassEnumStatus + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: color + description: "The property color is of type Color. " + type: !promise types.Color + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - name: field + description: "" + type: !promise package2.uint8 + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + enumerations: + - promise_id: types.SampleClassEnumStatus + find: + name: SampleClassEnumStatus + set: + description: "This block comment is added to the enum description of SampleClassEnumStatus. " + literals: + - name: OK + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: WARN + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: ERROR + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" + - name: STALE + description: "" + value: !new_object + _type: LiteralNumericValue + value: "3" + - promise_id: types.Color + find: + name: Color + set: + description: "This block comment is added to the enum description of Color. " + literals: + - name: RED + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - name: BLUE + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - name: YELLOW + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" - parent: !uuid "00000000-0000-0000-0000-000000000001" sync: packages: - - promise_id: root.DataTypes - find: + - find: name: "Data Types" - -- parent: !promise root.DataTypes - sync: - datatypes: - - promise_id: package1.uint8 - find: - name: uint8 - _type: NumericType - - promise_id: package2.uint8 - find: - name: uint8 - _type: NumericType + sync: + datatypes: + - promise_id: package1.uint8 + find: + name: uint8 + _type: NumericType + - promise_id: package2.uint8 + find: + name: uint8 + _type: NumericType diff --git a/tests/data/empty_project_52/.project b/tests/data/empty_project_60/.project similarity index 88% rename from tests/data/empty_project_52/.project rename to tests/data/empty_project_60/.project index 5315043..4931a0e 100644 --- a/tests/data/empty_project_52/.project +++ b/tests/data/empty_project_60/.project @@ -1,6 +1,6 @@ - empty_project_52 + empty_project_60 diff --git a/tests/data/empty_project_52/.project.license b/tests/data/empty_project_60/.project.license similarity index 100% rename from tests/data/empty_project_52/.project.license rename to tests/data/empty_project_60/.project.license diff --git a/tests/data/empty_project_52/empty_project_52.afm b/tests/data/empty_project_60/empty_project_60.afm similarity index 54% rename from tests/data/empty_project_52/empty_project_52.afm rename to tests/data/empty_project_60/empty_project_60.afm index 33d102e..fe47ab6 100644 --- a/tests/data/empty_project_52/empty_project_52.afm +++ b/tests/data/empty_project_60/empty_project_60.afm @@ -1,4 +1,4 @@ - - + + diff --git a/tests/data/empty_project_52/empty_project_52.afm.license b/tests/data/empty_project_60/empty_project_60.afm.license similarity index 100% rename from tests/data/empty_project_52/empty_project_52.afm.license rename to tests/data/empty_project_60/empty_project_60.afm.license diff --git a/tests/data/empty_project_52/empty_project_52.aird b/tests/data/empty_project_60/empty_project_60.aird similarity index 59% rename from tests/data/empty_project_52/empty_project_52.aird rename to tests/data/empty_project_60/empty_project_60.aird index 63f8ae5..e156dda 100644 --- a/tests/data/empty_project_52/empty_project_52.aird +++ b/tests/data/empty_project_60/empty_project_60.aird @@ -1,29 +1,26 @@ - - empty_project_52.afm - empty_project_52.capella - + + empty_project_60.afm + empty_project_60.capella + - + - - + + - - + + - + - - - - - - - + + + + diff --git a/tests/data/empty_project_52/empty_project_52.aird.license b/tests/data/empty_project_60/empty_project_60.aird.license similarity index 100% rename from tests/data/empty_project_52/empty_project_52.aird.license rename to tests/data/empty_project_60/empty_project_60.aird.license diff --git a/tests/data/empty_project_52/empty_project_52.capella b/tests/data/empty_project_60/empty_project_60.capella similarity index 59% rename from tests/data/empty_project_52/empty_project_52.capella rename to tests/data/empty_project_60/empty_project_60.capella index 836b9e3..cff913f 100644 --- a/tests/data/empty_project_52/empty_project_52.capella +++ b/tests/data/empty_project_60/empty_project_60.capella @@ -1,272 +1,272 @@ - + - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:libraries="http://www.polarsys.org/capella/common/libraries/6.0.0" + xmlns:org.polarsys.capella.core.data.capellacommon="http://www.polarsys.org/capella/core/common/6.0.0" + xmlns:org.polarsys.capella.core.data.capellacore="http://www.polarsys.org/capella/core/core/6.0.0" + xmlns:org.polarsys.capella.core.data.capellamodeller="http://www.polarsys.org/capella/core/modeller/6.0.0" + xmlns:org.polarsys.capella.core.data.cs="http://www.polarsys.org/capella/core/cs/6.0.0" + xmlns:org.polarsys.capella.core.data.ctx="http://www.polarsys.org/capella/core/ctx/6.0.0" + xmlns:org.polarsys.capella.core.data.epbs="http://www.polarsys.org/capella/core/epbs/6.0.0" + xmlns:org.polarsys.capella.core.data.fa="http://www.polarsys.org/capella/core/fa/6.0.0" + xmlns:org.polarsys.capella.core.data.information="http://www.polarsys.org/capella/core/information/6.0.0" + xmlns:org.polarsys.capella.core.data.information.datatype="http://www.polarsys.org/capella/core/information/datatype/6.0.0" + xmlns:org.polarsys.capella.core.data.information.datavalue="http://www.polarsys.org/capella/core/information/datavalue/6.0.0" + xmlns:org.polarsys.capella.core.data.la="http://www.polarsys.org/capella/core/la/6.0.0" + xmlns:org.polarsys.capella.core.data.oa="http://www.polarsys.org/capella/core/oa/6.0.0" + xmlns:org.polarsys.capella.core.data.pa="http://www.polarsys.org/capella/core/pa/6.0.0" + id="954dcd44-8942-4f2f-bd56-c7aa1c423ddd" + name="empty_project_60"> + + id="99c1bd6f-0e94-475c-b99d-fb05a8d47099" name="ProgressStatus"> + id="14cbdafc-4cef-45f1-b42d-4a828e9cc404" name="DRAFT"/> + id="876c2b6c-11f9-4006-b6ea-716e45716fcf" name="TO_BE_REVIEWED"/> + id="29838cbd-892f-4c2a-bee5-69127d877401" name="TO_BE_DISCUSSED"/> + id="c9b3fd06-06ac-4a54-b072-f6b02e2050da" name="REWORK_NECESSARY"/> + id="21825414-7a7a-496f-847a-c18a2b094def" name="UNDER_REWORK"/> + id="5ef18b4c-3389-4fb2-8ea7-4a6c9b082b28" name="REVIEWED_OK"/> - + id="a20452cc-e1b0-40f3-b6e8-662f14663cb9" name="empty_project_60"> + id="b4382876-58d1-4317-8104-462bffd1597e" name="Operational Analysis"> + id="0f849976-e18e-466f-8f95-13f11fc4e506" name="Operational Activities"> + id="d30c824e-4d8a-47ba-bee4-51156cde2b76" name="Root Operational Activity"/> + id="b9042059-a0fd-458c-b485-d2022dcba289" name="Operational Capabilities"/> + id="4398a213-78f4-492c-ae2f-96186d30acdd" name="Interfaces"/> - + - + id="fab15140-74e2-47ec-b3a1-ef22c32db236" name="System Analysis"> + id="2b3f21aa-ab4f-4476-92f9-d13d88a90106" name="System Functions"> + id="6278ee6b-980e-4685-be3b-58ce0a9b7e37" name="Root System Function"> + id="d569158e-2c85-429d-a7fa-3347eb41508a" targetElement="#d30c824e-4d8a-47ba-bee4-51156cde2b76" + sourceElement="#6278ee6b-980e-4685-be3b-58ce0a9b7e37"/> + id="8b0eeb8b-e790-4f86-831b-cb50248161ac" name="Capabilities"/> + id="2c0e8d8a-f202-49c3-b231-ddc6bd05e742" name="Interfaces"/> + id="5ea4f364-2f04-496f-946e-b424cd37d57a" name="Data"> + id="e477737d-1767-477c-abd5-1a81f2fd2f91" name="Predefined Types"> + id="3e23d67d-086b-43b6-9e57-c767a87a29bb" name="Boolean" visibility="PUBLIC"> + id="5ad2fc24-680f-4986-b1e8-e7e4327fc17b" name="False" abstractType="#3e23d67d-086b-43b6-9e57-c767a87a29bb"/> + id="a8066cb5-4ac3-422f-86c1-a149da44d9dc" name="Byte" visibility="PUBLIC"> + id="73678598-71ef-450b-b33f-6f9284ce7fc5" name="Char" visibility="PUBLIC"> + id="bed78246-063d-443c-9f06-efa3cbb0e58b" name="Hexadecimal" visibility="PUBLIC"> + id="8721583e-32d0-459f-9649-a5df5e8050b0" operator="POW"> + id="4eeee524-ff02-4ba2-b2c9-9bdf6fd0e180" value="2"/> + id="5cef2f7c-71f5-4711-a696-aacad7f27e64" value="64"/> + id="43875e99-5ed4-42de-a36b-fc5c517e8a16" value="1"/> + id="a59a8f2c-330b-4597-9b95-d5518f163325" name="Integer" visibility="PUBLIC"/> + id="706e33fa-c1a7-467d-995f-bf24a4284c5d" name="Long" visibility="PUBLIC"/> + id="73d1d9ee-1936-4c65-b176-becea3922754" name="LongLong" visibility="PUBLIC"/> + id="6172dc17-e7a8-4f9d-b500-727dc52c65c0" name="Short" visibility="PUBLIC"/> + id="339f6446-98a6-4d99-817a-b39e7d9371a0" name="String" visibility="PUBLIC"/> - + id="9e384278-3a6c-4a93-881a-bd7ac6f4e51d" name="Structure"> + + id="aba557bb-7804-42c9-bbfc-a8990b20c152" name="System"> + id="1a907c03-c945-4403-b90d-bc714bd22a0a" name="System State Machine"> + id="f4980352-f195-4caa-9d78-4dfd23487a57" name="Default Region"/> - + id="c0906321-59da-4a9b-bae4-dca920cb6f4a" targetElement="#b4382876-58d1-4317-8104-462bffd1597e" + sourceElement="#fab15140-74e2-47ec-b3a1-ef22c32db236"/> + id="744121d2-ad26-4108-bba0-245c179ff49c" name="Logical Architecture"> + id="f3ed3edf-b562-4b4b-9010-3c17a9c1a7fd" name="Logical Functions"> + id="da762d68-2c41-4f75-adb7-e436916ddbd5" name="Root Logical Function"> + id="6cfc7cc5-2d09-4fd9-971a-f713562060e3" targetElement="#6278ee6b-980e-4685-be3b-58ce0a9b7e37" + sourceElement="#da762d68-2c41-4f75-adb7-e436916ddbd5"/> + id="c448ec5c-da05-4d49-a403-39bea7b0927c" name="Capabilities"/> + id="bf2721ca-4197-4fe7-a8e5-77ea7c9ce9f8" name="Interfaces"/> + id="03e7ba96-68f5-4c7f-85ed-8932b65f53a7" name="Data"/> - + id="848102a1-e340-460c-a20a-545379c15e1c" name="Structure"> + + id="1bc48e6b-588e-4a71-802f-8156e2ad4537" name="Logical System"> + id="d3241da7-c81f-4c87-974d-85e98919a174" targetElement="#aba557bb-7804-42c9-bbfc-a8990b20c152" + sourceElement="#1bc48e6b-588e-4a71-802f-8156e2ad4537"/> + id="d72ff7c3-d758-4db5-93b5-64eeebe7f726" targetElement="#fab15140-74e2-47ec-b3a1-ef22c32db236" + sourceElement="#744121d2-ad26-4108-bba0-245c179ff49c"/> + id="b5a6ef0b-ac77-4759-8207-890c2bee5e7e" name="Physical Architecture"> + id="67caae0d-6106-4e9c-a156-9c3f5d842a7a" name="Physical Functions"> + id="1cbc810c-566c-4d1d-b490-0c4ac458e93f" name="Root Physical Function"> + id="e0339507-d320-48db-923f-934c4c791ac6" targetElement="#da762d68-2c41-4f75-adb7-e436916ddbd5" + sourceElement="#1cbc810c-566c-4d1d-b490-0c4ac458e93f"/> + id="80378634-2561-4f94-8118-63d5c3622dcb" name="Capabilities"/> + id="43bd09c3-0162-486f-9383-486bfffe9f05" name="Interfaces"/> + id="6972425c-2312-4c00-a93e-e0aac30a176f" name="Data"/> - + id="5073ff73-35e2-4ce5-9885-45357744c9ae" name="Structure"> + + id="81a575b3-2944-4c33-832a-a23699f795f3" name="Physical System"> + id="e0eb794f-8c58-48dd-95b3-eabc73685e6f" targetElement="#1bc48e6b-588e-4a71-802f-8156e2ad4537" + sourceElement="#81a575b3-2944-4c33-832a-a23699f795f3"/> + id="fe5f64f4-ac88-4c9b-98da-82d88f8c47c8" targetElement="#744121d2-ad26-4108-bba0-245c179ff49c" + sourceElement="#b5a6ef0b-ac77-4759-8207-890c2bee5e7e"/> + id="d9ea2aef-ae27-4536-a416-647ca984248c" name="EPBS Architecture"> + id="f9a48c69-3d09-415a-bb4d-b0767a29a8d2" name="Capabilities"/> - + id="68e128c3-a56d-4261-9c17-e9c83e82fdf9" name="Structure"> + + id="4c0a9ac2-52a0-48b0-95c7-6fc51cd4a55e" name="System" kind="SystemCI"> + id="7f256267-9f64-430e-acdd-88ddc40185e8" targetElement="#81a575b3-2944-4c33-832a-a23699f795f3" + sourceElement="#4c0a9ac2-52a0-48b0-95c7-6fc51cd4a55e"/> + id="c0fd751c-f9af-4136-af90-66122eff3a40" targetElement="#b5a6ef0b-ac77-4759-8207-890c2bee5e7e" + sourceElement="#d9ea2aef-ae27-4536-a416-647ca984248c"/> diff --git a/tests/data/empty_project_52/empty_project_52.capella.license b/tests/data/empty_project_60/empty_project_60.capella.license similarity index 100% rename from tests/data/empty_project_52/empty_project_52.capella.license rename to tests/data/empty_project_60/empty_project_60.capella.license diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index f0d72f9..16d98a7 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -21,7 +21,7 @@ SAMPLE_PACKAGE_PATH = PATH.joinpath("data/data_model/example_msgs") SAMPLE_PACKAGE_YAML = PATH.joinpath("data/data_model/example_msgs.yaml") -DUMMY_PATH = PATH.joinpath("data/empty_project_52") +DUMMY_PATH = PATH.joinpath("data/empty_project_60") ROOT = helpers.UUIDString("00000000-0000-0000-0000-000000000000") SA_ROOT = helpers.UUIDString("00000000-0000-0000-0000-000000000001") @@ -274,39 +274,29 @@ def test_convert_package( packages=[subpkg_def, subpkg2_def], ) - expected = [ - { - "parent": decl.Promise("my_package.sub_package"), - "sync": { - "enumerations": [enum_expected], + expected = { + "classes": [class_expected], + "packages": [ + { + "promise_id": "my_package.sub_package", + "find": { + "name": "sub_package", + }, + "sync": { + "enumerations": [enum_expected], + }, }, - }, - { - "parent": decl.Promise("root.my_package"), - "sync": { - "classes": [class_expected], - "packages": [ - { - "promise_id": "my_package.sub_package", - "find": { - "name": "sub_package", - }, - }, - { - "promise_id": "my_package.sub_package2", - "find": { - "name": "sub_package2", - }, - }, - ], + { + "promise_id": "my_package.sub_package2", + "find": { + "name": "sub_package2", + }, }, - }, - ] + ], + } - actual = importer._convert_package( - decl.Promise("root.my_package"), pkg_def - ) - assert decl.dump(actual) == decl.dump(expected) + actual = importer._convert_package(pkg_def) + assert decl.dump([actual]) == decl.dump([expected]) def test_import_msgs(): From 9179d6e4dc218f1804e5add4d869b7af2e0c63bf Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 12 Mar 2024 15:36:00 +0100 Subject: [PATCH 28/47] fix: Add kind to props --- capella_ros_tools/importer.py | 4 +--- tests/data/data_model/example_msgs.yaml | 14 ++++++++++---- tests/test_import_msgs.py | 5 +++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index b110f3f..4743253 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -73,10 +73,7 @@ def _convert_package( enums.append(self._convert_enum(enum_def)) for new_pkg in pkg_def.packages: - promise_id = f"{pkg_def.name}.{new_pkg.name}" - self._promise_ids.add(promise_id) yml = { - "promise_id": promise_id, "find": { "name": new_pkg.name, }, @@ -111,6 +108,7 @@ def _convert_class( prop_yml = { "name": field_def.name, "type": decl.Promise(promise_ref), + "kind": "COMPOSITION", "description": field_def.description, "min_card": decl.NewObject( "LiteralNumericValue", value=field_def.type.card.min diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index 61c9778..339ddab 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -4,8 +4,7 @@ - parent: !uuid "00000000-0000-0000-0000-000000000000" sync: packages: - - promise_id: root.package1 - find: + - find: name: package1 sync: classes: @@ -18,6 +17,7 @@ - name: sample_field1 description: "This block comment is added to the property description of sample_field1. This block comment is also added to the property description of sample_field1. " type: !promise package1.uint8 + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "1" @@ -33,6 +33,7 @@ - name: sample_field2 description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " type: !promise package1.uint8 + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "1" @@ -42,6 +43,7 @@ - name: sample_field3 description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " type: !promise package1.uint8 + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "0" @@ -51,6 +53,7 @@ - name: sample_field4 description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " type: !promise types.SampleEnum + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "1" @@ -60,6 +63,7 @@ - name: sample_field5 description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " type: !promise types.SampleEnumValue + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "1" @@ -119,8 +123,7 @@ value: !new_object _type: LiteralNumericValue value: "3" - - promise_id: root.package2 - find: + - find: name: package2 sync: classes: @@ -133,6 +136,7 @@ - name: status description: "The property status is of type SampleClassEnumStatus. " type: !promise types.SampleClassEnumStatus + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "1" @@ -142,6 +146,7 @@ - name: color description: "The property color is of type Color. " type: !promise types.Color + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "1" @@ -151,6 +156,7 @@ - name: field description: "" type: !promise package2.uint8 + kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue value: "1" diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index 16d98a7..15f0177 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -83,6 +83,7 @@ def class_expected(): { "name": "field", "type": decl.Promise("my_package.uint8"), + "kind": "COMPOSITION", "description": "Field", "min_card": decl.NewObject( "LiteralNumericValue", value="1" @@ -178,6 +179,7 @@ def test_convert_class_with_range(importer): { "name": "field", "type": decl.Promise("my_package.uint8"), + "kind": "COMPOSITION", "description": "Field", "min_card": decl.NewObject( "LiteralNumericValue", value="1" @@ -229,6 +231,7 @@ def test_convert_class_with_ref(importer): { "name": "field", "type": decl.Promise("std_msgs.uint8"), + "kind": "COMPOSITION", "description": "Field", "min_card": decl.NewObject( "LiteralNumericValue", value="1" @@ -278,7 +281,6 @@ def test_convert_package( "classes": [class_expected], "packages": [ { - "promise_id": "my_package.sub_package", "find": { "name": "sub_package", }, @@ -287,7 +289,6 @@ def test_convert_package( }, }, { - "promise_id": "my_package.sub_package2", "find": { "name": "sub_package2", }, From 18b66482b787c0143460feb223dcaa9d69d49884 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 13 Mar 2024 15:25:52 +0100 Subject: [PATCH 29/47] fix: Add association for every composition --- .vscode/launch.json | 4 +- capella_ros_tools/__main__.py | 5 +- capella_ros_tools/importer.py | 67 ++++++--- tests/data/data_model/example_msgs.yaml | 124 ++++++++++++++-- tests/test_import_msgs.py | 182 ++++++++---------------- 5 files changed, 229 insertions(+), 153 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 41d117f..eb9053b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -41,7 +41,7 @@ "-i", "tests/data/data_model/example_msgs", "-m", - "tests/data/ empty_project_60", + "tests/data/empty_project_60", "-l", "la", "--no-deps" @@ -57,7 +57,7 @@ "-i", "git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss", "-m", - "tests/data/ empty_project_60", + "tests/data/empty_project_60", "-l", "la" ] diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 47792b0..ac83009 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -66,7 +66,7 @@ def import_msgs( ) -> None: """Import ROS messages into a Capella data package.""" - root_uuid = getattr(model, layer).uuid + root_uuid = getattr(model, layer).data_package.uuid types_uuid = model.sa.data_package.uuid yml = importer.Importer(input, no_deps).to_yaml(root_uuid, types_uuid) @@ -74,13 +74,14 @@ def import_msgs( output.write_text(yml, encoding="utf-8") else: decl.apply(model, io.StringIO(yml)) + model.save() @cli.command("export") @click.option( "-m", "--model", - type=cli_helpers.ModelCLI, + type=cli_helpers.ModelCLI(), required=True, help="Path to the Capella model.", ) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 4743253..22a29f5 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -65,26 +65,27 @@ def _convert_package( classes = [] enums = [] packages = [] + associations = [] for msg_def in pkg_def.messages: if msg_def.fields: - classes.append(self._convert_class(pkg_def.name, msg_def)) + cls_yml, cls_associations = self._convert_class( + pkg_def.name, msg_def + ) + classes.append(cls_yml) + associations.extend(cls_associations) for enum_def in msg_def.enums: enums.append(self._convert_enum(enum_def)) for new_pkg in pkg_def.packages: - yml = { + new_yml = { "find": { "name": new_pkg.name, }, - } - - if new_sync := self._convert_package(new_pkg): - yml["sync"] = new_sync - - packages.append(yml) + } | self._convert_package(new_pkg) + packages.append(new_yml) - sync = {} + sync: dict = {} if classes: sync["classes"] = classes if enums: @@ -92,20 +93,33 @@ def _convert_package( if packages: sync["packages"] = packages - return sync + extend: dict = {} + if associations: + extend["owned_associations"] = associations + + yml = {} + if sync: + yml["sync"] = sync + if extend: + yml["extend"] = extend + + return yml def _convert_class( self, pkg_name: str, msg_def: data_model.MessageDef - ) -> dict: + ) -> tuple[dict, list[dict]]: promise_id = f"{pkg_name}.{msg_def.name}" self._promise_ids.add(promise_id) props = [] + associations = [] for field_def in msg_def.fields: + prop_promise_id = f"{promise_id}.{field_def.name}" promise_ref = ( f"{field_def.type.package or pkg_name}.{field_def.type.name}" ) self._promise_id_refs.add(promise_ref) prop_yml = { + "promise_id": prop_promise_id, "name": field_def.name, "type": decl.Promise(promise_ref), "kind": "COMPOSITION", @@ -124,6 +138,25 @@ def _convert_class( prop_yml["max_value"] = decl.NewObject( "LiteralNumericValue", value=field_def.type.range.max ) + + associations.append( + { + "navigable_members": [decl.Promise(prop_promise_id)], + "members": [ + { + "_type": "Property", + "type": decl.Promise(promise_id), + "kind": "ASSOCIATION", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + } + ], + } + ) props.append(prop_yml) yml = { @@ -136,7 +169,7 @@ def _convert_class( "properties": props, }, } - return yml + return yml, associations def _convert_enum(self, enum_def: data_model.EnumDef) -> dict: promise_id = f"types.{enum_def.name}" @@ -163,15 +196,11 @@ def _convert_enum(self, enum_def: data_model.EnumDef) -> dict: return yml - def to_yaml(self, layer_data_uuid: str, sa_data_uuid) -> str: + def to_yaml(self, layer_data_uuid: str, sa_data_uuid: str) -> str: """Import ROS messages into a Capella data package.""" instructions = [ - { - "parent": decl.UUIDReference( - helpers.UUIDString(layer_data_uuid) - ), - "sync": self._convert_package(self.messages), - } + {"parent": decl.UUIDReference(helpers.UUIDString(layer_data_uuid))} + | self._convert_package(self.messages), ] if needed_types := self._promise_id_refs - self._promise_ids: datatypes = [ diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index 339ddab..e54c691 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -14,7 +14,8 @@ set: description: "SampleClass.msg The first comment block at the top of the file is added to the class description of SampleClass. " properties: - - name: sample_field1 + - promise_id: package1.SampleClass.sample_field1 + name: sample_field1 description: "This block comment is added to the property description of sample_field1. This block comment is also added to the property description of sample_field1. " type: !promise package1.uint8 kind: COMPOSITION @@ -30,7 +31,8 @@ max_value: !new_object _type: LiteralNumericValue value: "10" - - name: sample_field2 + - promise_id: package1.SampleClass.sample_field2 + name: sample_field2 description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " type: !promise package1.uint8 kind: COMPOSITION @@ -40,7 +42,8 @@ max_card: !new_object _type: LiteralNumericValue value: "1" - - name: sample_field3 + - promise_id: package1.SampleClass.sample_field3 + name: sample_field3 description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " type: !promise package1.uint8 kind: COMPOSITION @@ -50,7 +53,8 @@ max_card: !new_object _type: LiteralNumericValue value: "*" - - name: sample_field4 + - promise_id: package1.SampleClass.sample_field4 + name: sample_field4 description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " type: !promise types.SampleEnum kind: COMPOSITION @@ -60,7 +64,8 @@ max_card: !new_object _type: LiteralNumericValue value: "1" - - name: sample_field5 + - promise_id: package1.SampleClass.sample_field5 + name: sample_field5 description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " type: !promise types.SampleEnumValue kind: COMPOSITION @@ -123,6 +128,68 @@ value: !new_object _type: LiteralNumericValue value: "3" + extend: + owned_associations: + - navigable_members: + - !promise package1.SampleClass.sample_field1 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - navigable_members: + - !promise package1.SampleClass.sample_field2 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - navigable_members: + - !promise package1.SampleClass.sample_field3 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - navigable_members: + - !promise package1.SampleClass.sample_field4 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - navigable_members: + - !promise package1.SampleClass.sample_field5 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package2 sync: @@ -133,7 +200,8 @@ set: description: "SampleClassEnum.msg Properties in SampleClassEnum can reference enums in the same file. " properties: - - name: status + - promise_id: package2.SampleClassEnum.status + name: status description: "The property status is of type SampleClassEnumStatus. " type: !promise types.SampleClassEnumStatus kind: COMPOSITION @@ -143,7 +211,8 @@ max_card: !new_object _type: LiteralNumericValue value: "1" - - name: color + - promise_id: package2.SampleClassEnum.color + name: color description: "The property color is of type Color. " type: !promise types.Color kind: COMPOSITION @@ -153,7 +222,8 @@ max_card: !new_object _type: LiteralNumericValue value: "1" - - name: field + - promise_id: package2.SampleClassEnum.field + name: field description: "" type: !promise package2.uint8 kind: COMPOSITION @@ -211,6 +281,44 @@ value: !new_object _type: LiteralNumericValue value: "2" + extend: + owned_associations: + - navigable_members: + - !promise package2.SampleClassEnum.status + members: + - _type: Property + type: !promise package2.SampleClassEnum + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - navigable_members: + - !promise package2.SampleClassEnum.color + members: + - _type: Property + type: !promise package2.SampleClassEnum + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - navigable_members: + - !promise package2.SampleClassEnum.field + members: + - _type: Property + type: !promise package2.SampleClassEnum + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - parent: !uuid "00000000-0000-0000-0000-000000000001" sync: diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index 15f0177..ae43a94 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -11,7 +11,6 @@ EnumDef, FieldDef, MessageDef, - MessagePkgDef, Range, TypeDef, ) @@ -32,25 +31,24 @@ def importer(): return Importer(DUMMY_PATH.as_posix(), True) -@pytest.fixture -def class_def(): - return MessageDef( - name="MyMessage", - description="An example message", - fields=[ - FieldDef( - name="field", - type=TypeDef("uint8", Range("1", "1")), - description="Field", - ), - ], - enums=[], - ) +def test_convert_datatype(importer): + promise_id = "std_msgs.uint8" + expected = { + "promise_id": "std_msgs.uint8", + "find": { + "name": "uint8", + "_type": "NumericType", + }, + } -@pytest.fixture -def enum_def(): - return EnumDef( + actual = importer._convert_datatype(promise_id) + + assert decl.dump([actual]) == decl.dump([expected]) + + +def test_convert_enum(importer): + enum_def = EnumDef( name="MyEnum", description="An example enum", literals=[ @@ -68,38 +66,7 @@ def enum_def(): ), ], ) - - -@pytest.fixture -def class_expected(): - return { - "promise_id": "my_package.MyMessage", - "find": { - "name": "MyMessage", - }, - "set": { - "description": "An example message", - "properties": [ - { - "name": "field", - "type": decl.Promise("my_package.uint8"), - "kind": "COMPOSITION", - "description": "Field", - "min_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - "max_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - }, - ], - }, - } - - -@pytest.fixture -def enum_expected(): - return { + expected = { "promise_id": "types.MyEnum", "find": { "name": "MyEnum", @@ -120,35 +87,53 @@ def enum_expected(): ], }, } + actual = importer._convert_enum(enum_def) + assert decl.dump([actual]) == decl.dump([expected]) + assert "types.MyEnum" in importer._promise_ids -def test_convert_datatype(importer): - promise_id = "std_msgs.uint8" + +def test_convert_class(importer): + class_def = MessageDef( + name="MyMessage", + description="An example message", + fields=[ + FieldDef( + name="field", + type=TypeDef("uint8", Range("1", "1")), + description="Field", + ), + ], + enums=[], + ) expected = { - "promise_id": "std_msgs.uint8", + "promise_id": "my_package.MyMessage", "find": { - "name": "uint8", - "_type": "NumericType", + "name": "MyMessage", + }, + "set": { + "description": "An example message", + "properties": [ + { + "promise_id": "my_package.MyMessage.field", + "name": "field", + "type": decl.Promise("my_package.uint8"), + "kind": "COMPOSITION", + "description": "Field", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + }, + ], }, } - - actual = importer._convert_datatype(promise_id) + actual, _ = importer._convert_class("my_package", class_def) assert decl.dump([actual]) == decl.dump([expected]) - - -def test_convert_enum(importer, enum_def, enum_expected): - actual = importer._convert_enum(enum_def) - - assert decl.dump([actual]) == decl.dump([enum_expected]) - assert "types.MyEnum" in importer._promise_ids - - -def test_convert_class(importer, class_def, class_expected): - actual = importer._convert_class("my_package", class_def) - - assert decl.dump([actual]) == decl.dump([class_expected]) assert "my_package.MyMessage" in importer._promise_ids assert "my_package.uint8" in importer._promise_id_refs @@ -177,6 +162,7 @@ def test_convert_class_with_range(importer): "description": "An example message", "properties": [ { + "promise_id": "my_package.MyMessage.field", "name": "field", "type": decl.Promise("my_package.uint8"), "kind": "COMPOSITION", @@ -198,7 +184,7 @@ def test_convert_class_with_range(importer): }, } - actual = importer._convert_class(pkg_name, msg_def) + actual, _ = importer._convert_class(pkg_name, msg_def) assert decl.dump([actual]) == decl.dump([expected]) assert "my_package.MyMessage" in importer._promise_ids @@ -229,6 +215,7 @@ def test_convert_class_with_ref(importer): "description": "An example message", "properties": [ { + "promise_id": "my_package.MyMessage.field", "name": "field", "type": decl.Promise("std_msgs.uint8"), "kind": "COMPOSITION", @@ -244,63 +231,14 @@ def test_convert_class_with_ref(importer): }, } - actual = importer._convert_class(pkg_name, msg_def) + actual, _ = importer._convert_class(pkg_name, msg_def) assert decl.dump([actual]) == decl.dump([expected]) assert "my_package.MyMessage" in importer._promise_ids assert "std_msgs.uint8" in importer._promise_id_refs -def test_convert_package( - importer, class_def, enum_def, class_expected, enum_expected -): - subpkg_def = MessagePkgDef( - name="sub_package", - messages=[ - MessageDef( - name="MyEnum", - description="An example enum", - fields=[], - enums=[enum_def], - ), - ], - packages=[], - ) - subpkg2_def = MessagePkgDef( - name="sub_package2", - messages=[], - packages=[], - ) - pkg_def = MessagePkgDef( - name="my_package", - messages=[class_def], - packages=[subpkg_def, subpkg2_def], - ) - - expected = { - "classes": [class_expected], - "packages": [ - { - "find": { - "name": "sub_package", - }, - "sync": { - "enumerations": [enum_expected], - }, - }, - { - "find": { - "name": "sub_package2", - }, - }, - ], - } - - actual = importer._convert_package(pkg_def) - assert decl.dump([actual]) == decl.dump([expected]) - - -def test_import_msgs(): +def test_convert_package(): expected = decl.dump(decl.load(SAMPLE_PACKAGE_YAML)) actual = Importer(SAMPLE_PACKAGE_PATH.as_posix(), True).to_yaml( ROOT, SA_ROOT From 20e17ee2c9da3d3da39a4744402975c4fe28f4e6 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 15 Mar 2024 03:05:24 +0100 Subject: [PATCH 30/47] fix: Fix duplicate promise ids issue --- .vscode/launch.json | 4 + capella_ros_tools/__init__.py | 4 + capella_ros_tools/__main__.py | 9 +- capella_ros_tools/data_model.py | 93 +++++---- capella_ros_tools/exporter.py | 3 + capella_ros_tools/importer.py | 23 ++- tests/conftest.py | 17 +- tests/data/data_model/example_msgs.yaml | 20 +- .../example_msgs/package1/msg/SampleClass.msg | 2 +- tests/test_data_model.py | 191 +++++++++++++++++- tests/test_import_msgs.py | 6 +- 11 files changed, 298 insertions(+), 74 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index eb9053b..ee90f4b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,6 +6,7 @@ "type": "debugpy", "request": "launch", "module": "capella_ros_tools", + "justMyCode": false, "args": [ "export", "-m", @@ -21,6 +22,7 @@ "type": "debugpy", "request": "launch", "module": "capella_ros_tools", + "justMyCode": false, "args": [ "export", "-m", @@ -36,6 +38,7 @@ "type": "debugpy", "request": "launch", "module": "capella_ros_tools", + "justMyCode": false, "args": [ "import", "-i", @@ -52,6 +55,7 @@ "type": "debugpy", "request": "launch", "module": "capella_ros_tools", + "justMyCode": false, "args": [ "import", "-i", diff --git a/capella_ros_tools/__init__.py b/capella_ros_tools/__init__.py index b1ace6b..3d8be91 100644 --- a/capella_ros_tools/__init__.py +++ b/capella_ros_tools/__init__.py @@ -1,6 +1,7 @@ # Copyright DB InfraGO AG and contributors # SPDX-License-Identifier: Apache-2.0 """The capella_ros_tools package.""" +import logging from importlib import metadata try: @@ -8,3 +9,6 @@ except metadata.PackageNotFoundError: # pragma: no cover __version__ = "0.0.0+unknown" del metadata + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index ac83009..e655c8c 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -12,6 +12,8 @@ import capella_ros_tools from capella_ros_tools import exporter, importer +from . import logger + @click.group() @click.version_option( @@ -69,10 +71,15 @@ def import_msgs( root_uuid = getattr(model, layer).data_package.uuid types_uuid = model.sa.data_package.uuid - yml = importer.Importer(input, no_deps).to_yaml(root_uuid, types_uuid) + parsed = importer.Importer(input, no_deps) + logger.info("Loaded %d packages", len(parsed.messages.packages)) + + yml = parsed.to_yaml(root_uuid, types_uuid) if output: + logger.info("Writing to file %s", output) output.write_text(yml, encoding="utf-8") else: + logger.info("Writing to model %s", model.name) decl.apply(model, io.StringIO(yml)) model.save() diff --git a/capella_ros_tools/data_model.py b/capella_ros_tools/data_model.py index 1eccab4..8420e50 100644 --- a/capella_ros_tools/data_model.py +++ b/capella_ros_tools/data_model.py @@ -58,8 +58,8 @@ def __str__(self) -> str: """Return string representation of the type.""" out = self.name if self.range: - out += f"[{UPPER_BOUND_TOKEN}{self.range.max}]" - elif self.card.min != self.card.max: + out += f"{UPPER_BOUND_TOKEN}{self.range.max}" + if self.card.min != self.card.max: out += f"[{self.card.max if self.card.max != '*' else ''}]" if self.package: out = f"{self.package}{PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR}{out}" @@ -68,20 +68,17 @@ def __str__(self) -> str: @classmethod def from_string(cls, type_str: str) -> TypeDef: """Create a type definition from a string.""" + name = type_str + card = Range("1", "1") + range = None if type_str.endswith("]"): name, _, max_card = type_str.partition("[") max_card = max_card.rstrip("]") - if max_card.startswith(UPPER_BOUND_TOKEN): - range = Range("0", max_card.strip(UPPER_BOUND_TOKEN)) - card = Range("1", "1") - else: - range = None - max_card = max_card if max_card else "*" - card = Range("0", max_card) - else: - name = type_str - card = Range("1", "1") - range = None + max_card = max_card if max_card else "*" + card = Range("0", max_card) + if UPPER_BOUND_TOKEN in name: + name, _, max_value = name.rpartition(UPPER_BOUND_TOKEN) + range = Range("0", max_value) if len(temp := name.split(PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR)) == 2: package, name = temp @@ -227,7 +224,7 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: last_element: t.Any = None block_comments = "" index = -1 - last_value = float("inf") + values: list[str] = [] for line in lines: line = line.rstrip() @@ -267,12 +264,16 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: value = value.strip() if value: # constant - if int(value) <= last_value: + if ( + value in values + or not msg.enums + or not isinstance(last_element, ConstantDef) + ): # new enum enum_def = EnumDef("", [], block_comments) block_comments = "" msg.enums.append(enum_def) - last_value = int(value) + values = [] constant_def = ConstantDef( TypeDef.from_string(type_string), name, @@ -280,6 +281,7 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: block_comments + comment, ) msg.enums[-1].literals.append(constant_def) + values.append(value) last_element = constant_def else: # field @@ -291,49 +293,62 @@ def from_string(cls, msg_name: str, msg_string: str) -> MessageDef: msg.fields.append(field_def) last_element = field_def + if not msg.fields and len(msg.enums) == 1: + enum = msg.enums[0] + _process_enums(enum) + enum.name = msg_name + return msg + for field in msg.fields: _process_comment(field) for enum in msg.enums: - common_prefix = os.path.commonprefix( - [literal.name for literal in enum.literals] - ) - if not common_prefix.endswith("_"): - if index := common_prefix.rfind("_"): - common_prefix = common_prefix[: index + 1] - else: - common_prefix = "" + + common_prefix = _process_enums(enum) + if common_prefix: enum.name = _get_enum_identifier(common_prefix) - for literal in enum.literals: - literal.name = literal.name.removeprefix(common_prefix) else: enum.name = msg_name if not msg.fields else msg_name + "Type" + matched_field = None for field in msg.fields: - if field.name.lower() == enum.name.lower(): - # name match found - field.type.name = enum.name - field.type.package = "types" - break - else: - # no name match found - for field in msg.fields: - if field.type.name == enum.literals[0].type.name: - # type match found - enum.name = msg_name + field.name.capitalize() + if field.type.name == enum.literals[0].type.name: + matched_field = matched_field or field + if field.name.lower() == enum.name.lower(): field.type.name = enum.name - field.type.package = "types" + field.type.package = msg_name break + else: + if matched_field: + enum.name = msg_name + matched_field.name.capitalize() + matched_field.type.name = enum.name + matched_field.type.package = msg_name return msg +def _process_enums(enum: EnumDef) -> str: + common_prefix = os.path.commonprefix( + [literal.name for literal in enum.literals] + ) + if not common_prefix.endswith("_"): + if index := common_prefix.rfind("_"): + common_prefix = common_prefix[: index + 1] + else: + common_prefix = "" + + for literal in enum.literals: + literal.name = literal.name.removeprefix(common_prefix) + + return common_prefix + + def _process_comment(field: FieldDef) -> None: """Process comment of a field.""" if match := VALID_REF_COMMENT_PATTERN.match(field.description): - field.type.package = "types" ref_msg_name, ref_const_name = match.groups() + field.type.package = ref_msg_name if ref_const_name: field.type.name = _get_enum_identifier( ref_const_name.rstrip("_XXX") diff --git a/capella_ros_tools/exporter.py b/capella_ros_tools/exporter.py index 7eb76a5..d45a81a 100644 --- a/capella_ros_tools/exporter.py +++ b/capella_ros_tools/exporter.py @@ -9,6 +9,8 @@ from capella_ros_tools import data_model +from . import logger + def _clean_name(name: str) -> str: return re.sub(r"\W", "", name) @@ -75,3 +77,4 @@ def export(current_pkg: information.DataPkg, current_path: pathlib.Path): pkg_path = current_path / _clean_name(pkg_obj.name) pkg_path.mkdir(parents=True, exist_ok=True) export(pkg_obj, pkg_path) + logger.info("Exported package %s to %s", pkg_obj.name, pkg_path) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 22a29f5..eec3cd0 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -6,6 +6,8 @@ from capella_ros_tools import data_model +from . import logger + ROS2_INTERFACES = { "common_interfaces": "git+https://github.com/ros2/common_interfaces", "rcl_interfaces": "git+https://github.com/ros2/rcl_interfaces", @@ -40,6 +42,7 @@ def _add_packages(self, name: str, path: str) -> None: pkg_name = dir.parent.name or name pkg_def = data_model.MessagePkgDef.from_msg_folder(pkg_name, dir) self.messages.packages.append(pkg_def) + logger.info("Loaded package %s from %s", pkg_name, dir) def _convert_datatype(self, promise_id: str) -> dict: name = promise_id.split(".", 1)[-1] @@ -75,7 +78,7 @@ def _convert_package( classes.append(cls_yml) associations.extend(cls_associations) for enum_def in msg_def.enums: - enums.append(self._convert_enum(enum_def)) + enums.append(self._convert_enum(msg_def.name, enum_def)) for new_pkg in pkg_def.packages: new_yml = { @@ -108,8 +111,7 @@ def _convert_package( def _convert_class( self, pkg_name: str, msg_def: data_model.MessageDef ) -> tuple[dict, list[dict]]: - promise_id = f"{pkg_name}.{msg_def.name}" - self._promise_ids.add(promise_id) + promise_id = self._register_promise_id(f"{pkg_name}.{msg_def.name}") props = [] associations = [] for field_def in msg_def.fields: @@ -171,9 +173,10 @@ def _convert_class( } return yml, associations - def _convert_enum(self, enum_def: data_model.EnumDef) -> dict: - promise_id = f"types.{enum_def.name}" - self._promise_ids.add(promise_id) + def _convert_enum( + self, pkg_name: str, enum_def: data_model.EnumDef + ) -> dict: + promise_id = self._register_promise_id(f"{pkg_name}.{enum_def.name}") yml = { "promise_id": promise_id, "find": { @@ -196,8 +199,16 @@ def _convert_enum(self, enum_def: data_model.EnumDef) -> dict: return yml + def _register_promise_id(self, promise_id: str) -> str: + while promise_id in self._promise_ids: + promise_id += "_" + + self._promise_ids.add(promise_id) + return promise_id + def to_yaml(self, layer_data_uuid: str, sa_data_uuid: str) -> str: """Import ROS messages into a Capella data package.""" + logger.info("Generating decl YAML") instructions = [ {"parent": decl.UUIDReference(helpers.UUIDString(layer_data_uuid))} | self._convert_package(self.messages), diff --git a/tests/conftest.py b/tests/conftest.py index 8a5449a..b15f9ef 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -19,7 +19,7 @@ def sample_class_def(): name="SampleClass", fields=[ FieldDef( - type=TypeDef("uint8", Range("1", "1"), Range("0", "10"), None), + type=TypeDef("uint8", Range("0", "*"), Range("0", "10"), None), name="sample_field1", description="This block comment is added to the " "property description of sample_field1. " @@ -39,7 +39,9 @@ def sample_class_def(): "descriptions of sample_field2 and sample_field3. ", ), FieldDef( - type=TypeDef("SampleEnum", Range("1", "1"), None, "types"), + type=TypeDef( + "SampleEnum", Range("1", "1"), None, "SampleEnum" + ), name="sample_field4", description="This block comment is added to the property " "descriptions of sample_field4 and sample_field5. " @@ -51,7 +53,7 @@ def sample_class_def(): ), FieldDef( type=TypeDef( - "SampleEnumValue", Range("1", "1"), None, "types" + "SampleEnumValue", Range("1", "1"), None, "SampleEnum" ), name="sample_field5", description="This block comment is added to the property " @@ -160,14 +162,19 @@ def sample_class_enum_def(): fields=[ FieldDef( type=TypeDef( - "SampleClassEnumStatus", Range("1", "1"), None, "types" + "SampleClassEnumStatus", + Range("1", "1"), + None, + "SampleClassEnum", ), name="status", description="The property status is of type " "SampleClassEnumStatus. ", ), FieldDef( - type=TypeDef("Color", Range("1", "1"), None, "types"), + type=TypeDef( + "Color", Range("1", "1"), None, "SampleClassEnum" + ), name="color", description="The property color is of type Color. ", ), diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index e54c691..39da090 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -21,10 +21,10 @@ kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue - value: "1" + value: "0" max_card: !new_object _type: LiteralNumericValue - value: "1" + value: "*" min_value: !new_object _type: LiteralNumericValue value: "0" @@ -56,7 +56,7 @@ - promise_id: package1.SampleClass.sample_field4 name: sample_field4 description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " - type: !promise types.SampleEnum + type: !promise SampleEnum.SampleEnum kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue @@ -67,7 +67,7 @@ - promise_id: package1.SampleClass.sample_field5 name: sample_field5 description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " - type: !promise types.SampleEnumValue + type: !promise SampleEnum.SampleEnumValue kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue @@ -76,7 +76,7 @@ _type: LiteralNumericValue value: "1" enumerations: - - promise_id: types.SampleEnumValue + - promise_id: SampleEnum.SampleEnumValue find: name: SampleEnumValue set: @@ -102,7 +102,7 @@ value: !new_object _type: LiteralNumericValue value: "3" - - promise_id: types.SampleEnum + - promise_id: SampleEnum.SampleEnum find: name: SampleEnum set: @@ -203,7 +203,7 @@ - promise_id: package2.SampleClassEnum.status name: status description: "The property status is of type SampleClassEnumStatus. " - type: !promise types.SampleClassEnumStatus + type: !promise SampleClassEnum.SampleClassEnumStatus kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue @@ -214,7 +214,7 @@ - promise_id: package2.SampleClassEnum.color name: color description: "The property color is of type Color. " - type: !promise types.Color + type: !promise SampleClassEnum.Color kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue @@ -234,7 +234,7 @@ _type: LiteralNumericValue value: "1" enumerations: - - promise_id: types.SampleClassEnumStatus + - promise_id: SampleClassEnum.SampleClassEnumStatus find: name: SampleClassEnumStatus set: @@ -260,7 +260,7 @@ value: !new_object _type: LiteralNumericValue value: "3" - - promise_id: types.Color + - promise_id: SampleClassEnum.Color find: name: Color set: diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg index db9d858..c5420a7 100644 --- a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg +++ b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg @@ -7,7 +7,7 @@ # This block comment is also added to the # property description of sample_field1. -uint8[<=10] sample_field1 +uint8<=10[] sample_field1 # This block comment is added to the property # descriptions of sample_field2 and sample_field3. diff --git a/tests/test_data_model.py b/tests/test_data_model.py index 69249af..50b0c10 100644 --- a/tests/test_data_model.py +++ b/tests/test_data_model.py @@ -47,8 +47,8 @@ "test_package/test_name[10]", ), ( - ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), - f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", + ("test_name", Range("0", "10"), Range("0", "10"), "test_package"), + f"test_package/test_name{UPPER_BOUND_TOKEN}10[10]", ), ( ("test_name", Range("1", "1"), None, None), @@ -80,8 +80,8 @@ def test_TypeDef_str( ("test_name", Range("0", "10"), None, "test_package"), ), ( - f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", - ("test_name", Range("1", "1"), Range("0", "10"), "test_package"), + f"test_package/test_name{UPPER_BOUND_TOKEN}10[10]", + ("test_name", Range("0", "10"), Range("0", "10"), "test_package"), ), ( "test_name[]", @@ -185,7 +185,9 @@ def test_extract_file_level_comments_with_newline(): # # This is another comment""" comments, _ = data_model._extract_file_level_comments(msg_string) - expected = "This is a comment
                                          This is another comment" + expected = "This is a comment
                                          This is another comment " + + assert comments == expected @staticmethod def test_parse_comments_no_comments(): @@ -361,15 +363,83 @@ def test_merge_enums_multiple_before(expected): assert msg_def == expected +def test_enum_non_ascending_values(): + msg_string = """ +uint8 SHAPE_TYPE_UNDEFINED = 0 + +# Comment block 1 + +uint8 SHAPE_TYPE_BOX = 1 +uint8 SHAPE_TYPE_SPHERE = 2 + +# Comment block 2 + +uint8 SHAPE_TYPE_VERTICAL_STRUCTURE = 10 +uint8 SHAPE_TYPE_VERTICAL_STRUCTURE_WITH_RADIUS = 101 +uint8 SHAPE_TYPE_HORIZONTAL_STRUCTURE = 11""" + msg_def = MessageDef.from_string("ShapeTypes", msg_string) + expected = MessageDef( + name="ShapeTypes", + fields=[], + enums=[ + EnumDef( + name="ShapeTypes", + literals=[ + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="UNDEFINED", + value="0", + description="", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="BOX", + value="1", + description="Comment block 1 ", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="SPHERE", + value="2", + description="Comment block 1 ", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="VERTICAL_STRUCTURE", + value="10", + description="Comment block 2 ", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="VERTICAL_STRUCTURE_WITH_RADIUS", + value="101", + description="Comment block 2 ", + ), + ConstantDef( + type=TypeDef("uint8", Range("1", "1")), + name="HORIZONTAL_STRUCTURE", + value="11", + description="Comment block 2 ", + ), + ], + description="", + ) + ], + description="", + ) + assert msg_def == expected + + class TestEnumName: @staticmethod def test_enum_name_commonprefix_no_underscore(): msg_string = """ uint8 START = 0 -uint8 STOP = 1""" +uint8 STOP = 1 +int8 field""" msg_def = MessageDef.from_string("enum_name", msg_string) actual = msg_def.enums[0].name - expected = "enum_name" + expected = "enum_nameType" assert actual == expected @@ -377,7 +447,8 @@ def test_enum_name_commonprefix_no_underscore(): def test_enum_name_commonprefix_with_underscore(): msg_string = """ uint8 ST_ART = 0 -uint8 ST_OP = 1""" +uint8 ST_OP = 1 +int8 field""" msg_def = MessageDef.from_string("enum_name", msg_string) actual = msg_def.enums[0].name expected = "St" @@ -388,13 +459,115 @@ def test_enum_name_commonprefix_with_underscore(): def test_enum_name_commonprefix_with_multiple_underscore(): msg_string = """ uint8 S_T_ART = 0 -uint8 S_T_OP = 1""" +uint8 S_T_OP = 1 +int8 field""" msg_def = MessageDef.from_string("enum_name", msg_string) actual = msg_def.enums[0].name expected = "ST" assert actual == expected + @staticmethod + def test_enum_name_match(): + msg_string = """ +int8 STATUS_NO_FIX = -1 +int8 STATUS_FIX = 0 +int8 STATUS_SBAS_FIX = 1 +int8 STATUS_GBAS_FIX = 2 + +int8 status + +uint16 SERVICE_GPS = 1 +uint16 SERVICE_GLONASS = 2 +uint16 SERVICE_COMPASS = 4 +uint16 SERVICE_GALILEO = 8 + +uint16 service""" + msg_def = MessageDef.from_string("NavSatStatus", msg_string) + expected = MessageDef( + name="NavSatStatus", + fields=[ + FieldDef( + type=TypeDef( + "Status", Range("1", "1"), package="NavSatStatus" + ), + name="status", + description="", + ), + FieldDef( + type=TypeDef( + "Service", Range("1", "1"), package="NavSatStatus" + ), + name="service", + description="", + ), + ], + enums=[ + EnumDef( + name="Status", + literals=[ + ConstantDef( + type=TypeDef("int8", Range("1", "1")), + name="NO_FIX", + value="-1", + description="", + ), + ConstantDef( + type=TypeDef("int8", Range("1", "1")), + name="FIX", + value="0", + description="", + ), + ConstantDef( + type=TypeDef("int8", Range("1", "1")), + name="SBAS_FIX", + value="1", + description="", + ), + ConstantDef( + type=TypeDef("int8", Range("1", "1")), + name="GBAS_FIX", + value="2", + description="", + ), + ], + description="", + ), + EnumDef( + name="Service", + literals=[ + ConstantDef( + type=TypeDef("uint16", Range("1", "1")), + name="GPS", + value="1", + description="", + ), + ConstantDef( + type=TypeDef("uint16", Range("1", "1")), + name="GLONASS", + value="2", + description="", + ), + ConstantDef( + type=TypeDef("uint16", Range("1", "1")), + name="COMPASS", + value="4", + description="", + ), + ConstantDef( + type=TypeDef("uint16", Range("1", "1")), + name="GALILEO", + value="8", + description="", + ), + ], + description="", + ), + ], + description="", + ) + assert msg_def == expected + def test_MessageDef_class(sample_class_def): msg_path = SAMPLE_CLASS_PATH diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index ae43a94..3be1734 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -67,7 +67,7 @@ def test_convert_enum(importer): ], ) expected = { - "promise_id": "types.MyEnum", + "promise_id": "MyMessage.MyEnum", "find": { "name": "MyEnum", }, @@ -87,10 +87,10 @@ def test_convert_enum(importer): ], }, } - actual = importer._convert_enum(enum_def) + actual = importer._convert_enum("MyMessage", enum_def) assert decl.dump([actual]) == decl.dump([expected]) - assert "types.MyEnum" in importer._promise_ids + assert "MyMessage.MyEnum" in importer._promise_ids def test_convert_class(importer): From 5f1988b26f72642ee9f26bf5d8738b8c97c877a0 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 15 Mar 2024 13:40:02 +0100 Subject: [PATCH 31/47] fix: Raise error when attempting to create duplicate element --- capella_ros_tools/importer.py | 13 ++++--------- docs/source/howtos.rst | 26 ++++++++++++++++---------- docs/source/usage.rst | 20 ++++++++------------ 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index eec3cd0..db63369 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -111,7 +111,8 @@ def _convert_package( def _convert_class( self, pkg_name: str, msg_def: data_model.MessageDef ) -> tuple[dict, list[dict]]: - promise_id = self._register_promise_id(f"{pkg_name}.{msg_def.name}") + promise_id = f"{pkg_name}.{msg_def.name}" + self._promise_ids.add(promise_id) props = [] associations = [] for field_def in msg_def.fields: @@ -176,7 +177,8 @@ def _convert_class( def _convert_enum( self, pkg_name: str, enum_def: data_model.EnumDef ) -> dict: - promise_id = self._register_promise_id(f"{pkg_name}.{enum_def.name}") + promise_id = f"{pkg_name}.{enum_def.name}" + self._promise_ids.add(promise_id) yml = { "promise_id": promise_id, "find": { @@ -199,13 +201,6 @@ def _convert_enum( return yml - def _register_promise_id(self, promise_id: str) -> str: - while promise_id in self._promise_ids: - promise_id += "_" - - self._promise_ids.add(promise_id) - return promise_id - def to_yaml(self, layer_data_uuid: str, sa_data_uuid: str) -> str: """Import ROS messages into a Capella data package.""" logger.info("Generating decl YAML") diff --git a/docs/source/howtos.rst b/docs/source/howtos.rst index 5f2eacc..741e724 100644 --- a/docs/source/howtos.rst +++ b/docs/source/howtos.rst @@ -17,25 +17,29 @@ Import ROS2 Messages: --------------------- .. code-block:: bash - python -m capella_ros_tools import \ + python -m capella_ros_tools \ + import \ -i tests/data/data_model/example_msgs \ - -m tests/data/empty_project_60 -l la \ - --port=5000 --no-deps + -m tests/data/empty_project_60 \ + -l la \ + --no-deps Import ROS2 Messages from Git Repository: ----------------------------------------- .. code-block:: bash - python -m capella_ros_tools import \ + python -m capella_ros_tools \ + import \ -i git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss \ - -m tests/data/ empty_project_60 -l la \ - --port=5000 + -m tests/data/ empty_project_60 \ + -l la Export Capella data package: ------------------------------------ .. code-block:: bash - python -m capella_ros_tools export \ + python -m capella_ros_tools \ + export \ -m tests/data/melody_model_60 -l la \ -o tests/data/melody_msgs @@ -43,9 +47,11 @@ Export Capella data package from Git Repository: -------------------------------------------------------- .. code-block:: bash - python -m capella_ros_tools export \ - -m git+https://github.com/DSD-DBS/coffee-machine -l oa \ + python -m capella_ros_tools \ + export \ + -m git+https://github.com/DSD-DBS/coffee-machine \ + -l oa \ -o tests/data/coffee_msgs .. note:: - When exporting Capella enumerations, if the enumeration literal values are not defined in the Capella model, the values will be set to 0, 1, 2, 3, etc. and the value's type will be set to unit8. + When exporting Capella enumerations, if the enumeration literal values are not defined in the Capella model, the values will be assumed to be 0, 1, 2, 3, etc. and the value's type will be set to unit8. diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 62739ad..800fe99 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -14,17 +14,13 @@ Import ROS2 Messages: ---------------------- .. code-block:: bash - python -m capella_ros_tools import -i -m -l -p --no-deps - -* **-i/--input**, import ROS2 messages from -* **-m/--model**, export to Capella model -* **-l/--layer**, use Capella model layer -* **-p/--port**, start Capella model explorer at (optional) -* **--no-deps**, do not import ROS2 dependencies (e.g. std_msgs) (flag) - -.. note:: - The `--port` option can be used to start the Capella model explorer on a specific port. The Capella model viewer can then be downloaded to be viewed at a later time using `wget` eg. `wget http://localhost: -E -r`. + python -m capella_ros_tools import -i -m -l -o --no-deps +* **-i/--input**, import ROS2 messages from path +* **-m/--model**, write to Capella model at path +* **-l/--layer**, use Capella model layer +* **-o/--out**, write generated decl YAML to path (optional) +* **--no-deps**, flag to disable import of ROS2 dependencies (e.g. std_msgs) Export Capella Model (experimental): ------------------------------------ @@ -32,6 +28,6 @@ Export Capella Model (experimental): python -m capella_ros_tools export -m -l -o -* **-m/--model**, import Capella model from +* **-m/--model**, export Capella model from path * **-l/--layer**, use Capella model layer -* **-o/--output**, export ROS2 messages to +* **-o/--output**, write ROS2 messages to From 9958953ec5678d4696abe030dff6d0038c1e8f7c Mon Sep 17 00:00:00 2001 From: huyenngn Date: Sun, 17 Mar 2024 09:27:37 +0100 Subject: [PATCH 32/47] feat: Ignore license header in .msg files --- capella_ros_tools/.license_header.txt | 2 ++ capella_ros_tools/data_model.py | 6 ++++ .../example_msgs/package1/msg/SampleClass.msg | 3 ++ .../package1/msg/SampleClass.msg.license | 2 -- .../package1/msg/types/SampleEnum.msg | 3 ++ .../package1/msg/types/SampleEnum.msg.license | 2 -- .../package2/msg/SampleClassEnum.msg | 3 ++ .../package2/msg/SampleClassEnum.msg.license | 2 -- tests/test_data_model.py | 30 ++++++++++++++----- 9 files changed, 39 insertions(+), 14 deletions(-) create mode 100644 capella_ros_tools/.license_header.txt delete mode 100644 tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license delete mode 100644 tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg.license delete mode 100644 tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license diff --git a/capella_ros_tools/.license_header.txt b/capella_ros_tools/.license_header.txt new file mode 100644 index 0000000..8c17559 --- /dev/null +++ b/capella_ros_tools/.license_header.txt @@ -0,0 +1,2 @@ +# SPDX-FileCopyrightText: Copyright DB Netz AG +# SPDX-License-Identifier: Apache-2.0 diff --git a/capella_ros_tools/data_model.py b/capella_ros_tools/data_model.py index 8420e50..03d96c6 100644 --- a/capella_ros_tools/data_model.py +++ b/capella_ros_tools/data_model.py @@ -12,6 +12,11 @@ from capellambse.filehandler import abc +LICENSE_HEADER = ( + pathlib.Path(__file__) + .parent.joinpath(".license_header.txt") + .read_text(encoding="utf-8") +) PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR = "/" COMMENT_DELIMITER = "#" CONSTANT_SEPARATOR = "=" @@ -214,6 +219,7 @@ def from_file( """Create message definition from a .msg file.""" msg_name = file.stem msg_string = file.read_text() + msg_string = msg_string.removeprefix(LICENSE_HEADER) return cls.from_string(msg_name, msg_string) @classmethod diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg index c5420a7..74d72af 100644 --- a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg +++ b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright DB Netz AG +# SPDX-License-Identifier: Apache-2.0 + # SampleClass.msg # The first comment block at the top of the file # is added to the class description of SampleClass. diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license deleted file mode 100644 index 62a1749..0000000 --- a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB InfraGO AG -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg b/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg index 14f42a8..5ea8f22 100644 --- a/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg +++ b/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright DB Netz AG +# SPDX-License-Identifier: Apache-2.0 + # SampleEnum.msg # This block comment is added to the # enum description of SampleEnumValue. diff --git a/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg.license b/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg.license deleted file mode 100644 index 62a1749..0000000 --- a/tests/data/data_model/example_msgs/package1/msg/types/SampleEnum.msg.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB InfraGO AG -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg index 59a2911..60b0c13 100644 --- a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg +++ b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright DB Netz AG +# SPDX-License-Identifier: Apache-2.0 + # SampleClassEnum.msg # Properties in SampleClassEnum can reference # enums in the same file. diff --git a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license b/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license deleted file mode 100644 index 62a1749..0000000 --- a/tests/data/data_model/example_msgs/package2/msg/SampleClassEnum.msg.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB InfraGO AG -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/test_data_model.py b/tests/test_data_model.py index 50b0c10..957d7f3 100644 --- a/tests/test_data_model.py +++ b/tests/test_data_model.py @@ -158,10 +158,10 @@ def test_extract_file_level_comments_no_comments(): @staticmethod def test_extract_file_level_comments_no_newline(): msg_string = """# This is a comment - # This is another comment - uint8 OK = 0 - uint8 WARN = 1 - uint8 ERROR = 2""" +# This is another comment +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2""" comments, _ = data_model._extract_file_level_comments(msg_string) assert comments == "" @@ -169,11 +169,11 @@ def test_extract_file_level_comments_no_newline(): @staticmethod def test_extract_file_level_comments(): msg_string = """# This is a comment - # This is another comment +# This is another comment - uint8 OK = 0 - uint8 WARN = 1 - uint8 ERROR = 2""" +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2""" comments, _ = data_model._extract_file_level_comments(msg_string) expected = "This is a comment This is another comment " @@ -189,6 +189,20 @@ def test_extract_file_level_comments_with_newline(): assert comments == expected + @staticmethod + def test_extract_file_level_comments_strip_empty_lines_at_top(): + msg_string = """ + +# This is a comment + +uint8 OK = 0 +uint8 WARN = 1 +uint8 ERROR = 2""" + comments, _ = data_model._extract_file_level_comments(msg_string) + expected = "This is a comment " + + assert comments == expected + @staticmethod def test_parse_comments_no_comments(): msg_string = """uint8 field""" From 8e630cc1d3b7cd10244ec08c2ccf8f7281d4ef38 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Sun, 17 Mar 2024 11:27:15 +0100 Subject: [PATCH 33/47] fix: Parse upper bounds --- capella_ros_tools/data_model.py | 30 +-- capella_ros_tools/exporter.py | 19 +- capella_ros_tools/importer.py | 16 +- tests/conftest.py | 51 ++-- tests/data/data_model/example_msgs.yaml | 16 +- .../example_msgs/package1/msg/SampleClass.msg | 6 +- .../empty_project_60/empty_project_60.afm | 4 +- .../empty_project_60/empty_project_60.aird | 26 +-- .../empty_project_60/empty_project_60.capella | 220 +++++++++--------- tests/test_data_model.py | 36 ++- tests/test_import_msgs.py | 55 +---- 11 files changed, 201 insertions(+), 278 deletions(-) diff --git a/capella_ros_tools/data_model.py b/capella_ros_tools/data_model.py index 03d96c6..506cfa5 100644 --- a/capella_ros_tools/data_model.py +++ b/capella_ros_tools/data_model.py @@ -56,16 +56,19 @@ class TypeDef: name: str card: Range - range: Range | None = None package: str | None = None def __str__(self) -> str: """Return string representation of the type.""" out = self.name - if self.range: - out += f"{UPPER_BOUND_TOKEN}{self.range.max}" - if self.card.min != self.card.max: - out += f"[{self.card.max if self.card.max != '*' else ''}]" + if self.card.min == self.card.max: + out += f"[{self.card.max}]" if self.card.max != "1" else "" + else: + out += ( + f"[{UPPER_BOUND_TOKEN}{self.card.max}]" + if self.card.max != "*" + else "[]" + ) if self.package: out = f"{self.package}{PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR}{out}" return out @@ -75,22 +78,23 @@ def from_string(cls, type_str: str) -> TypeDef: """Create a type definition from a string.""" name = type_str card = Range("1", "1") - range = None if type_str.endswith("]"): name, _, max_card = type_str.partition("[") - max_card = max_card.rstrip("]") - max_card = max_card if max_card else "*" - card = Range("0", max_card) - if UPPER_BOUND_TOKEN in name: - name, _, max_value = name.rpartition(UPPER_BOUND_TOKEN) - range = Range("0", max_value) + max_card = max_card.removesuffix("]") + if max_card.startswith(UPPER_BOUND_TOKEN): + max_card = max_card.removeprefix(UPPER_BOUND_TOKEN) + card = Range("0", max_card) + else: + card = ( + Range(max_card, max_card) if max_card else Range("0", "*") + ) if len(temp := name.split(PACKAGE_NAME_MESSAGE_TYPE_SEPARATOR)) == 2: package, name = temp else: package = None - return cls(name, card, range, package) + return cls(name, card, package) @dataclass diff --git a/capella_ros_tools/exporter.py b/capella_ros_tools/exporter.py index d45a81a..8d5f108 100644 --- a/capella_ros_tools/exporter.py +++ b/capella_ros_tools/exporter.py @@ -21,23 +21,24 @@ def export(current_pkg: information.DataPkg, current_path: pathlib.Path): for cls_obj in current_pkg.classes: fields = [] for prop_obj in cls_obj.owned_properties: - type_def = data_model.TypeDef( - name=prop_obj.type.name, - card=data_model.Range( + try: + card = data_model.Range( prop_obj.min_card.value, prop_obj.max_card.value - ), - ) + ) + except AttributeError: + card = data_model.Range("1", "1") + type_def = data_model.TypeDef(name=prop_obj.type.name, card=card) prop_def = data_model.FieldDef( type=type_def, name=prop_obj.name, - description=prop_obj.description, + description=prop_obj.description or "", ) fields.append(prop_def) cls_def = data_model.MessageDef( name=cls_obj.name, fields=fields, enums=[], - description=cls_obj.description, + description=cls_obj.description or "", ) (current_path / f"{_clean_name(cls_obj.name)}.msg").write_text( str(cls_def) @@ -61,13 +62,13 @@ def export(current_pkg: information.DataPkg, current_path: pathlib.Path): type=type_def, name=lit_obj.name, value=literal_value, - description=lit_obj.description, + description=lit_obj.description or "", ) literals.append(lit_def) enum_def = data_model.EnumDef( name=enum_obj.name, literals=literals, - description=enum_obj.description, + description=enum_obj.description or "", ) (current_path / f"{_clean_name(enum_obj.name)}.msg").write_text( str(enum_def) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index db63369..49ba452 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -96,15 +96,12 @@ def _convert_package( if packages: sync["packages"] = packages - extend: dict = {} - if associations: - extend["owned_associations"] = associations - yml = {} if sync: yml["sync"] = sync - if extend: - yml["extend"] = extend + if associations: + yml["extend"] = {} + yml["extend"]["owned_associations"] = associations return yml @@ -134,13 +131,6 @@ def _convert_class( "LiteralNumericValue", value=field_def.type.card.max ), } - if field_def.type.range: - prop_yml["min_value"] = decl.NewObject( - "LiteralNumericValue", value=field_def.type.range.min - ) - prop_yml["max_value"] = decl.NewObject( - "LiteralNumericValue", value=field_def.type.range.max - ) associations.append( { diff --git a/tests/conftest.py b/tests/conftest.py index b15f9ef..46ad28d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -19,7 +19,7 @@ def sample_class_def(): name="SampleClass", fields=[ FieldDef( - type=TypeDef("uint8", Range("0", "*"), Range("0", "10"), None), + type=TypeDef("uint8", Range("0", "10"), None), name="sample_field1", description="This block comment is added to the " "property description of sample_field1. " @@ -27,21 +27,19 @@ def sample_class_def(): "property description of sample_field1. ", ), FieldDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("SampleClassEnum", Range("0", "*"), "package2"), name="sample_field2", description="This block comment is added to the property " "descriptions of sample_field2 and sample_field3. ", ), FieldDef( - TypeDef("uint8", Range("0", "*"), None, None), + TypeDef("uint8", Range("3", "3"), None), name="sample_field3", description="This block comment is added to the property " "descriptions of sample_field2 and sample_field3. ", ), FieldDef( - type=TypeDef( - "SampleEnum", Range("1", "1"), None, "SampleEnum" - ), + type=TypeDef("SampleEnum", Range("1", "1"), "SampleEnum"), name="sample_field4", description="This block comment is added to the property " "descriptions of sample_field4 and sample_field5. " @@ -52,9 +50,7 @@ def sample_class_def(): "cf. SampleEnum ", ), FieldDef( - type=TypeDef( - "SampleEnumValue", Range("1", "1"), None, "SampleEnum" - ), + type=TypeDef("SampleEnumValue", Range("1", "1"), "SampleEnum"), name="sample_field5", description="This block comment is added to the property " "descriptions of sample_field4 and sample_field5. " @@ -84,13 +80,13 @@ def sample_enum_def(): name="SampleEnumValue", literals=[ ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="RED", value="0", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="BLUE", value="1", description="This inline comment " @@ -99,14 +95,14 @@ def sample_enum_def(): "description of BLUE. ", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="YELLOW", value="2", description="This block comment is added to the " "enum literal descriptions of YELLOW and GREEN. ", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="GREEN", value="3", description="This block comment is added to the " @@ -121,25 +117,25 @@ def sample_enum_def(): name="SampleEnum", literals=[ ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="OK", value="0", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="WARN", value="1", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="ERROR", value="2", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="STALE", value="3", description="", @@ -164,7 +160,6 @@ def sample_class_enum_def(): type=TypeDef( "SampleClassEnumStatus", Range("1", "1"), - None, "SampleClassEnum", ), name="status", @@ -172,14 +167,12 @@ def sample_class_enum_def(): "SampleClassEnumStatus. ", ), FieldDef( - type=TypeDef( - "Color", Range("1", "1"), None, "SampleClassEnum" - ), + type=TypeDef("Color", Range("1", "1"), "SampleClassEnum"), name="color", description="The property color is of type Color. ", ), FieldDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="field", description="", ), @@ -189,25 +182,25 @@ def sample_class_enum_def(): name="SampleClassEnumStatus", literals=[ ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="OK", value="0", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="WARN", value="1", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="ERROR", value="2", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="STALE", value="3", description="", @@ -220,19 +213,19 @@ def sample_class_enum_def(): name="Color", literals=[ ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="RED", value="0", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="BLUE", value="1", description="", ), ConstantDef( - type=TypeDef("uint8", Range("1", "1"), None, None), + type=TypeDef("uint8", Range("1", "1"), None), name="YELLOW", value="2", description="", diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index 39da090..7fb5c49 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -23,25 +23,19 @@ _type: LiteralNumericValue value: "0" max_card: !new_object - _type: LiteralNumericValue - value: "*" - min_value: !new_object - _type: LiteralNumericValue - value: "0" - max_value: !new_object _type: LiteralNumericValue value: "10" - promise_id: package1.SampleClass.sample_field2 name: sample_field2 description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " - type: !promise package1.uint8 + type: !promise package2.SampleClassEnum kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue - value: "1" + value: "0" max_card: !new_object _type: LiteralNumericValue - value: "1" + value: "*" - promise_id: package1.SampleClass.sample_field3 name: sample_field3 description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " @@ -49,10 +43,10 @@ kind: COMPOSITION min_card: !new_object _type: LiteralNumericValue - value: "0" + value: "3" max_card: !new_object _type: LiteralNumericValue - value: "*" + value: "3" - promise_id: package1.SampleClass.sample_field4 name: sample_field4 description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " diff --git a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg index 74d72af..1a76f01 100644 --- a/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg +++ b/tests/data/data_model/example_msgs/package1/msg/SampleClass.msg @@ -10,12 +10,12 @@ # This block comment is also added to the # property description of sample_field1. -uint8<=10[] sample_field1 +uint8[<=10] sample_field1 # This block comment is added to the property # descriptions of sample_field2 and sample_field3. -uint8 sample_field2 -uint8[] sample_field3 +package2/SampleClassEnum[] sample_field2 +uint8[3] sample_field3 # This block comment is added to the property # descriptions of sample_field4 and sample_field5. diff --git a/tests/data/empty_project_60/empty_project_60.afm b/tests/data/empty_project_60/empty_project_60.afm index fe47ab6..8062b45 100644 --- a/tests/data/empty_project_60/empty_project_60.afm +++ b/tests/data/empty_project_60/empty_project_60.afm @@ -1,4 +1,4 @@ - - + + diff --git a/tests/data/empty_project_60/empty_project_60.aird b/tests/data/empty_project_60/empty_project_60.aird index e156dda..61ba85d 100644 --- a/tests/data/empty_project_60/empty_project_60.aird +++ b/tests/data/empty_project_60/empty_project_60.aird @@ -1,26 +1,26 @@ - + empty_project_60.afm empty_project_60.capella - + - - - - + - - + + - - + + - + - - + + + + + diff --git a/tests/data/empty_project_60/empty_project_60.capella b/tests/data/empty_project_60/empty_project_60.capella index cff913f..5cc8b17 100644 --- a/tests/data/empty_project_60/empty_project_60.capella +++ b/tests/data/empty_project_60/empty_project_60.capella @@ -16,257 +16,257 @@ xmlns:org.polarsys.capella.core.data.la="http://www.polarsys.org/capella/core/la/6.0.0" xmlns:org.polarsys.capella.core.data.oa="http://www.polarsys.org/capella/core/oa/6.0.0" xmlns:org.polarsys.capella.core.data.pa="http://www.polarsys.org/capella/core/pa/6.0.0" - id="954dcd44-8942-4f2f-bd56-c7aa1c423ddd" + id="1c0f4f8a-3bc7-45e0-870c-570951e89733" name="empty_project_60"> - + + id="0c1a1d95-11f0-42da-8a39-06b282632642" name="ProgressStatus"> + id="ba3acaa8-68da-4441-a99b-a87563bae576" name="DRAFT"/> + id="d83df9a1-41b4-4145-911c-c2ee5e672d97" name="TO_BE_REVIEWED"/> + id="0f8ee527-9386-48a7-9e52-a4bde9235fff" name="TO_BE_DISCUSSED"/> + id="f812564d-9110-4ebf-8e23-8fd25f38ee19" name="REWORK_NECESSARY"/> + id="397d4c0f-1b79-4b66-aef6-5fd9c8c42ba2" name="UNDER_REWORK"/> + id="668ec221-c8ca-4c44-bbec-88f239cd6831" name="REVIEWED_OK"/> - + id="7d6dfa7b-82e0-484e-a7bf-b277f001511c" name="empty_project_60"> + id="213f9922-b178-489f-8776-82da0b47ae25" name="Operational Analysis"> + id="4aee49d7-5a88-4777-9d01-63cfa0bcc744" name="Operational Activities"> + id="6ddbca4a-dc4a-4c76-a578-a4270b1b2c72" name="Root Operational Activity"/> + id="0c6004d3-3ba2-474b-b624-43143b87f59e" name="Operational Capabilities"/> + id="47d8cbc1-1dc9-4902-92c3-a1d8b342e959" name="Interfaces"/> - + - + id="752e8f1a-f04f-4261-bb06-ddccab84914f" name="System Analysis"> + id="46e254df-1981-4aa7-aa77-6ca87378e517" name="System Functions"> + id="5d6b8c25-9376-4799-acdf-3f37db3dff9b" name="Root System Function"> + id="82b98625-5cf9-457a-9387-c7b615bb060b" targetElement="#6ddbca4a-dc4a-4c76-a578-a4270b1b2c72" + sourceElement="#5d6b8c25-9376-4799-acdf-3f37db3dff9b"/> + id="99ce5dc1-85e3-4788-b71e-763ff747945d" name="Capabilities"/> + id="8e8aa152-14e0-47c8-92cf-465620e00c13" name="Interfaces"/> + id="5ea6b15c-3ad1-4511-9c6c-114f10ad9054" name="Data"> + id="3d3d2c73-e7bc-4c83-90cd-e701bf1692f5" name="Predefined Types"> + id="6f824ab9-3945-4a4f-b994-b0db18035e99" name="Boolean" visibility="PUBLIC"> + id="97c3fe02-8811-4fe3-8dfa-a6644af1ed32" name="False" abstractType="#6f824ab9-3945-4a4f-b994-b0db18035e99"/> + id="9b4e4f93-845e-4fa4-ae93-61ae3892b78a" name="Byte" visibility="PUBLIC"> + id="db7b3f1c-310e-427d-a20c-6e0d9825ff82" name="Char" visibility="PUBLIC"> + id="47dbf664-d6db-4aab-ba2d-662bd94cd546" name="Hexadecimal" visibility="PUBLIC"> + id="c8440533-3dbc-477b-a41a-f0abcf18ffbb" operator="POW"> + id="320dd66a-9194-425b-9d7e-6169eb186e50" value="2"/> + id="475f700c-01bf-4c96-872a-b774b059e827" value="64"/> + id="f245b6d3-65b5-4b24-bc56-c69cbe7a928c" value="1"/> + id="9d6bf88d-f049-4217-a4a7-ce7699213a79" name="Integer" visibility="PUBLIC"/> + id="dfaf8d39-f030-4553-9c20-99046b7044f5" name="Long" visibility="PUBLIC"/> + id="d00c3a24-9b14-44d4-be88-23bd2b694980" name="LongLong" visibility="PUBLIC"/> + id="abeee981-c7c7-4c09-92e8-a385301a8abe" name="Short" visibility="PUBLIC"/> + id="a016b008-9d39-4037-974b-fb4e306adbba" name="String" visibility="PUBLIC"/> - + id="9b49e484-40ab-4f04-868e-af0c7383cf0f" name="Structure"> + + id="e1c937b8-cecd-41b8-aaec-e3153feec513" name="System"> + id="d5e68ec6-7c1e-4c1d-a547-9f3de4233880" name="System State Machine"> + id="124c3717-2f6a-457a-8254-f7c22755acac" name="Default Region"/> - + id="a9ec81e7-47d7-4d9f-9464-7294e032d4bd" targetElement="#213f9922-b178-489f-8776-82da0b47ae25" + sourceElement="#752e8f1a-f04f-4261-bb06-ddccab84914f"/> + id="a3ff0e34-1bb2-4bf1-aee4-854186d8ae52" name="Logical Architecture"> + id="eac17a6c-8121-49bd-94e7-32cc6876f6a2" name="Logical Functions"> + id="9bcbaa98-4007-4a44-9afe-1dcaf9c0e85d" name="Root Logical Function"> + id="f353ba82-63c8-48da-92d7-6310ca6b1d17" targetElement="#5d6b8c25-9376-4799-acdf-3f37db3dff9b" + sourceElement="#9bcbaa98-4007-4a44-9afe-1dcaf9c0e85d"/> + id="cd1954dd-7b97-48e8-9c2a-6971e22c8fab" name="Capabilities"/> + id="4cf03125-34f9-423a-821a-12a83fe1060b" name="Interfaces"/> + id="e73be77c-ad86-47ca-af6b-59d579866587" name="Data"/> - + id="2847cdb7-7eaa-4585-b611-3cf940935242" name="Structure"> + + id="280cdfce-92c9-47fd-b413-dbc5d4559843" name="Logical System"> + id="0d9b4a76-b033-42cf-868a-b904856ad78f" targetElement="#e1c937b8-cecd-41b8-aaec-e3153feec513" + sourceElement="#280cdfce-92c9-47fd-b413-dbc5d4559843"/> + id="da6cfd3d-4bda-40a0-b619-2cb7e3aa89cf" targetElement="#752e8f1a-f04f-4261-bb06-ddccab84914f" + sourceElement="#a3ff0e34-1bb2-4bf1-aee4-854186d8ae52"/> + id="adaf4385-fa7f-47e8-ba4e-59a7c527dca3" name="Physical Architecture"> + id="da96d2d7-635b-46e6-95f1-ee40350ed9e8" name="Physical Functions"> + id="29baeb16-9d89-4dd6-8709-039e31df3a7b" name="Root Physical Function"> + id="164b3b2b-2473-43a6-b1ca-433276cf348c" targetElement="#9bcbaa98-4007-4a44-9afe-1dcaf9c0e85d" + sourceElement="#29baeb16-9d89-4dd6-8709-039e31df3a7b"/> + id="c37ce89b-c3e3-4138-8216-f103b4c79b25" name="Capabilities"/> + id="c1e4bd20-f3ca-46c9-82fd-bc7a807f2fc2" name="Interfaces"/> + id="c86c7767-3da4-46a5-ac96-0038632d8224" name="Data"/> - + id="19efce9a-5ea9-402a-9b41-78a18842d213" name="Structure"> + + id="30513126-b54e-471c-a058-a5b698772de4" name="Physical System"> + id="8faeba06-40d8-4fae-bbae-682c7ce092f9" targetElement="#280cdfce-92c9-47fd-b413-dbc5d4559843" + sourceElement="#30513126-b54e-471c-a058-a5b698772de4"/> + id="0e30d5d7-befd-462d-8392-a96def6caf35" targetElement="#a3ff0e34-1bb2-4bf1-aee4-854186d8ae52" + sourceElement="#adaf4385-fa7f-47e8-ba4e-59a7c527dca3"/> + id="9b669bec-6091-46d0-ac79-782c536d3438" name="EPBS Architecture"> + id="c01c61a8-3f9f-4c34-8d7f-48738a100483" name="Capabilities"/> - + id="789b47c4-ee48-4293-b745-daefee231d4a" name="Structure"> + + id="566d4c01-70c4-4639-8442-0c5c16792683" name="System" kind="SystemCI"> + id="22092922-01cc-4f54-9a29-726a2d6f95be" targetElement="#30513126-b54e-471c-a058-a5b698772de4" + sourceElement="#566d4c01-70c4-4639-8442-0c5c16792683"/> + id="cba3a422-5ded-4c1d-a8c8-7b51a378b029" targetElement="#adaf4385-fa7f-47e8-ba4e-59a7c527dca3" + sourceElement="#9b669bec-6091-46d0-ac79-782c536d3438"/> diff --git a/tests/test_data_model.py b/tests/test_data_model.py index 957d7f3..5995be2 100644 --- a/tests/test_data_model.py +++ b/tests/test_data_model.py @@ -39,30 +39,28 @@ "params, expected", [ ( - ("test_name", Range("1", "1"), None, "test_package"), + ("test_name", Range("1", "1"), "test_package"), "test_package/test_name", ), ( - ("test_name", Range("0", "10"), None, "test_package"), + ("test_name", Range("10", "10"), "test_package"), "test_package/test_name[10]", ), ( - ("test_name", Range("0", "10"), Range("0", "10"), "test_package"), - f"test_package/test_name{UPPER_BOUND_TOKEN}10[10]", + ("test_name", Range("0", "10"), "test_package"), + f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", ), ( - ("test_name", Range("1", "1"), None, None), + ("test_name", Range("1", "1"), None), "test_name", ), ( - ("test_name", Range("0", "*"), None, None), + ("test_name", Range("0", "*"), None), "test_name[]", ), ], ) -def test_TypeDef_str( - params: tuple[str, Range, Range | None, str | None], expected: str -): +def test_TypeDef_str(params: tuple[str, Range, str | None], expected: str): type_def = TypeDef(*params) assert str(type_def) == expected @@ -73,24 +71,24 @@ def test_TypeDef_str( [ ( "test_package/test_name", - ("test_name", Range("1", "1"), None, "test_package"), + ("test_name", Range("1", "1"), "test_package"), ), ( "test_package/test_name[10]", - ("test_name", Range("0", "10"), None, "test_package"), + ("test_name", Range("10", "10"), "test_package"), ), ( - f"test_package/test_name{UPPER_BOUND_TOKEN}10[10]", - ("test_name", Range("0", "10"), Range("0", "10"), "test_package"), + f"test_package/test_name[{UPPER_BOUND_TOKEN}10]", + ("test_name", Range("0", "10"), "test_package"), ), ( "test_name[]", - ("test_name", Range("0", "*"), None, None), + ("test_name", Range("0", "*"), None), ), ], ) def test_TypeDef_from_string( - type_str: str, params: tuple[str, Range, Range | None, str | None] + type_str: str, params: tuple[str, Range, str | None] ): type_def = TypeDef.from_string(type_str) expected = TypeDef(*params) @@ -502,16 +500,12 @@ def test_enum_name_match(): name="NavSatStatus", fields=[ FieldDef( - type=TypeDef( - "Status", Range("1", "1"), package="NavSatStatus" - ), + type=TypeDef("Status", Range("1", "1"), "NavSatStatus"), name="status", description="", ), FieldDef( - type=TypeDef( - "Service", Range("1", "1"), package="NavSatStatus" - ), + type=TypeDef("Service", Range("1", "1"), "NavSatStatus"), name="service", description="", ), diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index 3be1734..36cd125 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -138,59 +138,6 @@ def test_convert_class(importer): assert "my_package.uint8" in importer._promise_id_refs -def test_convert_class_with_range(importer): - pkg_name = "my_package" - msg_def = MessageDef( - name="MyMessage", - description="An example message", - fields=[ - FieldDef( - name="field", - type=TypeDef("uint8", Range("1", "1"), Range("0", "10")), - description="Field", - ), - ], - enums=[], - ) - - expected = { - "promise_id": "my_package.MyMessage", - "find": { - "name": "MyMessage", - }, - "set": { - "description": "An example message", - "properties": [ - { - "promise_id": "my_package.MyMessage.field", - "name": "field", - "type": decl.Promise("my_package.uint8"), - "kind": "COMPOSITION", - "description": "Field", - "min_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - "max_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - "min_value": decl.NewObject( - "LiteralNumericValue", value="0" - ), - "max_value": decl.NewObject( - "LiteralNumericValue", value="10" - ), - }, - ], - }, - } - - actual, _ = importer._convert_class(pkg_name, msg_def) - - assert decl.dump([actual]) == decl.dump([expected]) - assert "my_package.MyMessage" in importer._promise_ids - assert "my_package.uint8" in importer._promise_id_refs - - def test_convert_class_with_ref(importer): pkg_name = "my_package" msg_def = MessageDef( @@ -199,7 +146,7 @@ def test_convert_class_with_ref(importer): fields=[ FieldDef( name="field", - type=TypeDef("uint8", Range("1", "1"), None, "std_msgs"), + type=TypeDef("uint8", Range("1", "1"), "std_msgs"), description="Field", ), ], From be01be50bb05ef4b872556cd4e7c110aa91bd314 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 19 Mar 2024 11:48:40 +0100 Subject: [PATCH 34/47] fix: Sync associations --- capella_ros_tools/importer.py | 36 ++-- tests/data/data_model/example_msgs.yaml | 218 +++++++++++++----------- 2 files changed, 139 insertions(+), 115 deletions(-) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 49ba452..8bf5998 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -95,13 +95,12 @@ def _convert_package( sync["enumerations"] = enums if packages: sync["packages"] = packages + if associations: + sync["owned_associations"] = associations yml = {} if sync: yml["sync"] = sync - if associations: - yml["extend"] = {} - yml["extend"]["owned_associations"] = associations return yml @@ -134,20 +133,23 @@ def _convert_class( associations.append( { - "navigable_members": [decl.Promise(prop_promise_id)], - "members": [ - { - "_type": "Property", - "type": decl.Promise(promise_id), - "kind": "ASSOCIATION", - "min_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - "max_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - } - ], + "find": {"name": prop_promise_id}, + "set": { + "navigable_members": [decl.Promise(prop_promise_id)], + "members": [ + { + "_type": "Property", + "type": decl.Promise(promise_id), + "kind": "ASSOCIATION", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + } + ], + }, } ) props.append(prop_yml) diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index 7fb5c49..9e6b757 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -122,68 +122,82 @@ value: !new_object _type: LiteralNumericValue value: "3" - extend: owned_associations: - - navigable_members: - - !promise package1.SampleClass.sample_field1 - members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - navigable_members: - - !promise package1.SampleClass.sample_field2 - members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - navigable_members: - - !promise package1.SampleClass.sample_field3 - members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - navigable_members: - - !promise package1.SampleClass.sample_field4 - members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - navigable_members: - - !promise package1.SampleClass.sample_field5 - members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + name: package1.SampleClass.sample_field1 + set: + navigable_members: + - !promise package1.SampleClass.sample_field1 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: package1.SampleClass.sample_field2 + set: + navigable_members: + - !promise package1.SampleClass.sample_field2 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: package1.SampleClass.sample_field3 + set: + navigable_members: + - !promise package1.SampleClass.sample_field3 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: package1.SampleClass.sample_field4 + set: + navigable_members: + - !promise package1.SampleClass.sample_field4 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: package1.SampleClass.sample_field5 + set: + navigable_members: + - !promise package1.SampleClass.sample_field5 + members: + - _type: Property + type: !promise package1.SampleClass + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package2 sync: @@ -275,44 +289,52 @@ value: !new_object _type: LiteralNumericValue value: "2" - extend: owned_associations: - - navigable_members: - - !promise package2.SampleClassEnum.status - members: - - _type: Property - type: !promise package2.SampleClassEnum - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - navigable_members: - - !promise package2.SampleClassEnum.color - members: - - _type: Property - type: !promise package2.SampleClassEnum - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" - - navigable_members: - - !promise package2.SampleClassEnum.field - members: - - _type: Property - type: !promise package2.SampleClassEnum - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + name: package2.SampleClassEnum.status + set: + navigable_members: + - !promise package2.SampleClassEnum.status + members: + - _type: Property + type: !promise package2.SampleClassEnum + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: package2.SampleClassEnum.color + set: + navigable_members: + - !promise package2.SampleClassEnum.color + members: + - _type: Property + type: !promise package2.SampleClassEnum + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: package2.SampleClassEnum.field + set: + navigable_members: + - !promise package2.SampleClassEnum.field + members: + - _type: Property + type: !promise package2.SampleClassEnum + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - parent: !uuid "00000000-0000-0000-0000-000000000001" sync: From 186502060224a8f4649dd24586d072c4f75487dd Mon Sep 17 00:00:00 2001 From: huyenngn Date: Mon, 25 Mar 2024 15:43:29 +0100 Subject: [PATCH 35/47] fix: Fix test package --- capella_ros_tools/importer.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 8bf5998..85a1868 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -2,6 +2,9 @@ # SPDX-License-Identifier: Apache-2.0 """Tool for importing ROS messages to a Capella data package.""" +import collections as c +import typing as t + from capellambse import decl, filehandler, helpers from capella_ros_tools import data_model @@ -26,8 +29,8 @@ def __init__( no_deps: bool, ): self.messages = data_model.MessagePkgDef("root", [], []) - self._promise_ids: set[str] = set() - self._promise_id_refs: set[str] = set() + self._promise_ids: c.OrderedDict[str, None] = c.OrderedDict() + self._promise_id_refs: c.OrderedDict[str, None] = c.OrderedDict() self._add_packages("ros_msgs", msg_path) if no_deps: @@ -44,7 +47,7 @@ def _add_packages(self, name: str, path: str) -> None: self.messages.packages.append(pkg_def) logger.info("Loaded package %s from %s", pkg_name, dir) - def _convert_datatype(self, promise_id: str) -> dict: + def _convert_datatype(self, promise_id: str) -> dict[str, t.Any]: name = promise_id.split(".", 1)[-1] if any(t in name for t in ["char", "str"]): _type = "StringType" @@ -64,7 +67,7 @@ def _convert_datatype(self, promise_id: str) -> dict: def _convert_package( self, pkg_def: data_model.MessagePkgDef, - ) -> dict: + ) -> dict[str, t.Any]: classes = [] enums = [] packages = [] @@ -88,7 +91,7 @@ def _convert_package( } | self._convert_package(new_pkg) packages.append(new_yml) - sync: dict = {} + sync = {} if classes: sync["classes"] = classes if enums: @@ -106,9 +109,9 @@ def _convert_package( def _convert_class( self, pkg_name: str, msg_def: data_model.MessageDef - ) -> tuple[dict, list[dict]]: + ) -> tuple[dict[str, t.Any], list[dict[str, t.Any]]]: promise_id = f"{pkg_name}.{msg_def.name}" - self._promise_ids.add(promise_id) + self._promise_ids[promise_id] = None props = [] associations = [] for field_def in msg_def.fields: @@ -116,7 +119,7 @@ def _convert_class( promise_ref = ( f"{field_def.type.package or pkg_name}.{field_def.type.name}" ) - self._promise_id_refs.add(promise_ref) + self._promise_id_refs[promise_ref] = None prop_yml = { "promise_id": prop_promise_id, "name": field_def.name, @@ -168,9 +171,9 @@ def _convert_class( def _convert_enum( self, pkg_name: str, enum_def: data_model.EnumDef - ) -> dict: + ) -> dict[str, t.Any]: promise_id = f"{pkg_name}.{enum_def.name}" - self._promise_ids.add(promise_id) + self._promise_ids[promise_id] = None yml = { "promise_id": promise_id, "find": { @@ -200,7 +203,9 @@ def to_yaml(self, layer_data_uuid: str, sa_data_uuid: str) -> str: {"parent": decl.UUIDReference(helpers.UUIDString(layer_data_uuid))} | self._convert_package(self.messages), ] - if needed_types := self._promise_id_refs - self._promise_ids: + if needed_types := [ + p for p in self._promise_id_refs if p not in self._promise_ids + ]: datatypes = [ self._convert_datatype(promise_id) for promise_id in needed_types From 88854ab5f08490df0ac64123aefb512d1930b886 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Mon, 25 Mar 2024 15:44:03 +0100 Subject: [PATCH 36/47] refactor: Add type hints to tests --- pyproject.toml | 2 +- tests/test_data_model.py | 64 ++++++++++++++++++++++++++------------- tests/test_import_msgs.py | 19 +++++++----- 3 files changed, 55 insertions(+), 30 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 26b0c78..e022c30 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ classifiers = [ ] dependencies = [ "click", - "capellambse@ git+https://github.com/DSD-DBS/py-capellambse.git@decl-sync", + "capellambse", ] [project.urls] diff --git a/tests/test_data_model.py b/tests/test_data_model.py index 5995be2..5dc827a 100644 --- a/tests/test_data_model.py +++ b/tests/test_data_model.py @@ -31,8 +31,8 @@ "data/data_model/example_msgs/package2/msg/SampleClassEnum.msg" ) -PACKAGE1_PATH = PATH.joinpath("data/data_model/example_msgs/package1") -PACKAGE2_PATH = PATH.joinpath("data/data_model/example_msgs/package2") +SAMPLE_PACKAGE_PATH1 = PATH.joinpath("data/data_model/example_msgs/package1") +SAMPLE_PACKAGE_PATH2 = PATH.joinpath("data/data_model/example_msgs/package2") @pytest.mark.parametrize( @@ -63,7 +63,9 @@ def test_TypeDef_str(params: tuple[str, Range, str | None], expected: str): type_def = TypeDef(*params) - assert str(type_def) == expected + actual = str(type_def) + + assert actual == expected @pytest.mark.parametrize( @@ -90,10 +92,11 @@ def test_TypeDef_str(params: tuple[str, Range, str | None], expected: str): def test_TypeDef_from_string( type_str: str, params: tuple[str, Range, str | None] ): - type_def = TypeDef.from_string(type_str) expected = TypeDef(*params) - assert type_def == expected + actual = TypeDef.from_string(type_str) + + assert actual == expected @pytest.mark.parametrize( @@ -116,7 +119,9 @@ def test_TypeDef_from_string( def test_FieldDef_str(params: tuple[TypeDef, str, str], expected: str): field_def = FieldDef(*params) - assert str(field_def) == expected + actual = str(field_def) + + assert actual == expected @pytest.mark.parametrize( @@ -140,7 +145,9 @@ def test_FieldDef_str(params: tuple[TypeDef, str, str], expected: str): def test_ConstantDef_str(params: tuple[TypeDef, str, str, str], expected: str): constant_def = ConstantDef(*params) - assert str(constant_def) == expected + actual = str(constant_def) + + assert actual == expected class TestComments: @@ -204,7 +211,6 @@ def test_extract_file_level_comments_strip_empty_lines_at_top(): @staticmethod def test_parse_comments_no_comments(): msg_string = """uint8 field""" - msg_def = MessageDef.from_string("test_name", msg_string) expected = MessageDef( name="test_name", @@ -218,6 +224,7 @@ def test_parse_comments_no_comments(): enums=[], description="", ) + assert msg_def == expected @staticmethod @@ -241,6 +248,7 @@ def test_parse_comments_block_comments(): enums=[], description="", ) + assert msg_def == expected @staticmethod @@ -263,6 +271,7 @@ def test_parse_comments_inline_comments(): enums=[], description="", ) + assert msg_def == expected @staticmethod @@ -287,13 +296,14 @@ def test_parse_comments_mixed_comments(): enums=[], description="", ) + assert msg_def == expected class TestMergeEnumDef: @staticmethod @pytest.fixture - def expected(): + def expected() -> MessageDef: type_def = TypeDef("uint8", Range("1", "1")) enum_def = EnumDef( name="enum_name", @@ -328,7 +338,7 @@ def expected(): return MessageDef("enum_name", [], [enum_def], "") @staticmethod - def test_merge_enums_before(expected): + def test_merge_enums_before(expected: MessageDef): msg_string = """ uint8 OK = 0 @@ -337,10 +347,11 @@ def test_merge_enums_before(expected): uint8 ERROR = 2 uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected @staticmethod - def test_merge_enums_after(expected): + def test_merge_enums_after(expected: MessageDef): msg_string = """ uint8 OK = 0 uint8 WARN = 1 @@ -348,10 +359,11 @@ def test_merge_enums_after(expected): uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected @staticmethod - def test_merge_enums_multiple_after(expected): + def test_merge_enums_multiple_after(expected: MessageDef): msg_string = """ uint8 OK = 0 uint8 WARN = 1 @@ -360,10 +372,11 @@ def test_merge_enums_multiple_after(expected): uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected @staticmethod - def test_merge_enums_multiple_before(expected): + def test_merge_enums_multiple_before(expected: MessageDef): msg_string = """ uint8 OK = 0 @@ -372,6 +385,7 @@ def test_merge_enums_multiple_before(expected): uint8 ERROR = 2 uint8 STALE = 3""" msg_def = MessageDef.from_string("enum_name", msg_string) + assert msg_def == expected @@ -439,6 +453,7 @@ def test_enum_non_ascending_values(): ], description="", ) + assert msg_def == expected @@ -450,9 +465,10 @@ def test_enum_name_commonprefix_no_underscore(): uint8 STOP = 1 int8 field""" msg_def = MessageDef.from_string("enum_name", msg_string) - actual = msg_def.enums[0].name expected = "enum_nameType" + actual = msg_def.enums[0].name + assert actual == expected @staticmethod @@ -462,9 +478,10 @@ def test_enum_name_commonprefix_with_underscore(): uint8 ST_OP = 1 int8 field""" msg_def = MessageDef.from_string("enum_name", msg_string) - actual = msg_def.enums[0].name expected = "St" + actual = msg_def.enums[0].name + assert actual == expected @staticmethod @@ -474,9 +491,10 @@ def test_enum_name_commonprefix_with_multiple_underscore(): uint8 S_T_OP = 1 int8 field""" msg_def = MessageDef.from_string("enum_name", msg_string) - actual = msg_def.enums[0].name expected = "ST" + actual = msg_def.enums[0].name + assert actual == expected @staticmethod @@ -574,35 +592,39 @@ def test_enum_name_match(): ], description="", ) + assert msg_def == expected -def test_MessageDef_class(sample_class_def): +def test_MessageDef_class(sample_class_def: MessageDef): msg_path = SAMPLE_CLASS_PATH msg_def = MessageDef.from_file(msg_path) expected = sample_class_def + assert msg_def == expected -def test_MessageDef_enum(sample_enum_def): +def test_MessageDef_enum(sample_enum_def: MessageDef): msg_path = SAMPLE_ENUM_PATH msg_def = MessageDef.from_file(msg_path) expected = sample_enum_def + assert msg_def == expected -def test_MessageDef_class_enum(sample_class_enum_def): +def test_MessageDef_class_enum(sample_class_enum_def: MessageDef): msg_path = SAMPLE_CLASS_ENUM_PATH msg_def = MessageDef.from_file(msg_path) expected = sample_class_enum_def + assert msg_def == expected @pytest.mark.parametrize( "msg_pkg_path", [ - PACKAGE1_PATH, - PACKAGE2_PATH, + SAMPLE_PACKAGE_PATH1, + SAMPLE_PACKAGE_PATH2, ], ) def test_MessagePkgDef_from_msg_folder( diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index 36cd125..297de79 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -16,6 +16,8 @@ ) from capella_ros_tools.importer import Importer +# pylint: disable=redefined-outer-name + PATH = pathlib.Path(__file__).parent SAMPLE_PACKAGE_PATH = PATH.joinpath("data/data_model/example_msgs") @@ -27,13 +29,12 @@ @pytest.fixture -def importer(): +def importer() -> Importer: return Importer(DUMMY_PATH.as_posix(), True) -def test_convert_datatype(importer): +def test_convert_datatype(importer: Importer): promise_id = "std_msgs.uint8" - expected = { "promise_id": "std_msgs.uint8", "find": { @@ -47,7 +48,7 @@ def test_convert_datatype(importer): assert decl.dump([actual]) == decl.dump([expected]) -def test_convert_enum(importer): +def test_convert_enum(importer: Importer): enum_def = EnumDef( name="MyEnum", description="An example enum", @@ -87,13 +88,14 @@ def test_convert_enum(importer): ], }, } + actual = importer._convert_enum("MyMessage", enum_def) assert decl.dump([actual]) == decl.dump([expected]) assert "MyMessage.MyEnum" in importer._promise_ids -def test_convert_class(importer): +def test_convert_class(importer: Importer): class_def = MessageDef( name="MyMessage", description="An example message", @@ -106,7 +108,6 @@ def test_convert_class(importer): ], enums=[], ) - expected = { "promise_id": "my_package.MyMessage", "find": { @@ -131,6 +132,7 @@ def test_convert_class(importer): ], }, } + actual, _ = importer._convert_class("my_package", class_def) assert decl.dump([actual]) == decl.dump([expected]) @@ -138,7 +140,7 @@ def test_convert_class(importer): assert "my_package.uint8" in importer._promise_id_refs -def test_convert_class_with_ref(importer): +def test_convert_class_with_ref(importer: Importer): pkg_name = "my_package" msg_def = MessageDef( name="MyMessage", @@ -152,7 +154,6 @@ def test_convert_class_with_ref(importer): ], enums=[], ) - expected = { "promise_id": "my_package.MyMessage", "find": { @@ -187,7 +188,9 @@ def test_convert_class_with_ref(importer): def test_convert_package(): expected = decl.dump(decl.load(SAMPLE_PACKAGE_YAML)) + actual = Importer(SAMPLE_PACKAGE_PATH.as_posix(), True).to_yaml( ROOT, SA_ROOT ) + assert actual == expected From 564f7502f96342b512f01d49457bfda0b18c768c Mon Sep 17 00:00:00 2001 From: huyenngn Date: Mon, 25 Mar 2024 16:19:13 +0100 Subject: [PATCH 37/47] ci: Please pre-commit hooks --- .github/workflows/docs.yml | 10 -- .pre-commit-config.yaml | 197 +++++++++++++++++++------------------ 2 files changed, 99 insertions(+), 108 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 582e4ae..e3ba8be 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -32,16 +32,6 @@ jobs: run: make -C docs apidoc - name: Create docs run: make -C docs html - - name: Archive the docs - # https://github.com/actions/upload-artifact#too-many-uploads-resulting-in-429-responses - run: (cd docs/build/html && zip -Xr ../html.zip .) - - name: Upload built docs as artifact - uses: actions/upload-artifact@v3 - with: - name: Documentation - path: docs/build/html.zip - if-no-files-found: error - retention-days: 5 - name: Deploy if: github.ref == 'refs/heads/master' uses: peaceiris/actions-gh-pages@v3 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f8a6fba..e92677f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,101 +4,102 @@ default_install_hook_types: [commit-msg, pre-commit] default_stages: [commit, merge-commit] repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 - hooks: - - id: check-added-large-files - - id: check-ast - - id: check-builtin-literals - - id: check-case-conflict - - id: check-executables-have-shebangs - - id: check-json - - id: check-merge-conflict - - id: check-shebang-scripts-are-executable - - id: check-symlinks - - id: check-toml - - id: check-vcs-permalinks - - id: check-xml - - id: check-yaml - - id: debug-statements - - id: destroyed-symlinks - - id: end-of-file-fixer - - id: fix-byte-order-marker - - id: trailing-whitespace - - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.1.1 - hooks: - - id: black - - repo: https://github.com/PyCQA/isort - rev: 5.13.2 - hooks: - - id: isort - - repo: https://github.com/PyCQA/docformatter - rev: v1.7.5 - hooks: - - id: docformatter - additional_dependencies: - - docformatter[tomli] - - repo: https://github.com/PyCQA/pydocstyle - rev: 6.3.0 - hooks: - - id: pydocstyle - exclude: '^tests/' - additional_dependencies: - - pydocstyle[toml] - - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.8.0 - hooks: - - id: mypy - - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.4 - hooks: - - id: insert-license - name: Insert license headers (shell-style comments) - files: '(?:^|/)(?:.*\.(?:py|sh|toml|ya?ml)|Dockerfile|Makefile)$' - exclude: '(?:^|/)\..+|^docs/Makefile$' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '#' - - id: insert-license - name: Insert license headers (XML-style comments) - files: '\.(?:html|md|xml)$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '' - - id: insert-license - name: Insert license headers (C-style comments) - files: '\.(?:css|js|ts)$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '/*| *| */' - - id: insert-license - name: Insert license headers (reST comments) - files: '\.rst$' - exclude: '(?:^|/)\..+' - args: - - --detect-license-in-X-top-lines=15 - - --license-filepath - - LICENSES/.license_header.txt - - --comment-style - - '..| |' - - repo: https://github.com/fsfe/reuse-tool - rev: v3.0.1 - hooks: - - id: reuse - - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - rev: v9.11.0 - hooks: - - id: commitlint - stages: [commit-msg] + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: check-added-large-files + - id: check-ast + - id: check-builtin-literals + - id: check-case-conflict + - id: check-executables-have-shebangs + - id: check-json + - id: check-merge-conflict + - id: check-shebang-scripts-are-executable + - id: check-symlinks + - id: check-toml + - id: check-vcs-permalinks + - id: check-xml + - id: check-yaml + exclude: '^tests/data/data_model/[^/]+\.ya?ml$' + - id: debug-statements + - id: destroyed-symlinks + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: trailing-whitespace + - repo: https://github.com/psf/black-pre-commit-mirror + rev: 24.1.1 + hooks: + - id: black + - repo: https://github.com/PyCQA/isort + rev: 5.13.2 + hooks: + - id: isort + - repo: https://github.com/PyCQA/docformatter + rev: v1.7.5 + hooks: + - id: docformatter + additional_dependencies: + - docformatter[tomli] + - repo: https://github.com/PyCQA/pydocstyle + rev: 6.3.0 + hooks: + - id: pydocstyle + exclude: "^tests/" + additional_dependencies: + - pydocstyle[toml] + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.8.0 + hooks: + - id: mypy + - repo: https://github.com/Lucas-C/pre-commit-hooks + rev: v1.5.4 + hooks: + - id: insert-license + name: Insert license headers (shell-style comments) + files: '(?:^|/)(?:.*\.(?:py|sh|toml|ya?ml)|Dockerfile|Makefile)$' + exclude: '(?:^|/)\..+|^docs/Makefile$' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "#" + - id: insert-license + name: Insert license headers (XML-style comments) + files: '\.(?:html|md|xml)$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "" + - id: insert-license + name: Insert license headers (C-style comments) + files: '\.(?:css|js|ts)$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "/*| *| */" + - id: insert-license + name: Insert license headers (reST comments) + files: '\.rst$' + exclude: '(?:^|/)\..+' + args: + - --detect-license-in-X-top-lines=15 + - --license-filepath + - LICENSES/.license_header.txt + - --comment-style + - "..| |" + - repo: https://github.com/fsfe/reuse-tool + rev: v3.0.1 + hooks: + - id: reuse + - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook + rev: v9.11.0 + hooks: + - id: commitlint + stages: [commit-msg] From 7a4a6afa23d873b797ba38498f2bb558b8eb4423 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 26 Mar 2024 17:44:54 +0100 Subject: [PATCH 38/47] feat: Add option to specify import package --- capella_ros_tools/__main__.py | 48 ++++++++++++++++++++++++++++++----- capella_ros_tools/importer.py | 39 +++++++++++++++++++++------- 2 files changed, 71 insertions(+), 16 deletions(-) diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index e655c8c..bc929e7 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -4,6 +4,7 @@ import io import pathlib +import uuid import capellambse import click @@ -44,9 +45,20 @@ def cli(): "-l", "--layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), - required=True, help="The layer to import the messages to.", ) +@click.option( + "-r", + "--root", + type=click.UUID, + help="The UUID of the root package to import the messages to.", +) +@click.option( + "-t", + "--types", + type=click.UUID, + help="The UUID of the types package to import the created data types to.", +) @click.option( "--no-deps", "no_deps", @@ -63,18 +75,29 @@ def import_msgs( input: str, model: capellambse.MelodyModel, layer: str, + root: uuid.UUID, + types: uuid.UUID, no_deps: bool, output: pathlib.Path, ) -> None: """Import ROS messages into a Capella data package.""" - root_uuid = getattr(model, layer).data_package.uuid - types_uuid = model.sa.data_package.uuid + if root: + root_uuid = str(root) + elif layer: + root_uuid = getattr(model, layer).data_package.uuid + else: + raise click.UsageError("Either --root or --layer must be provided") + + if types: + params = {"types_uuid": str(types)} + else: + params = {"types_parent_uuid": model.sa.data_package.uuid} parsed = importer.Importer(input, no_deps) logger.info("Loaded %d packages", len(parsed.messages.packages)) - yml = parsed.to_yaml(root_uuid, types_uuid) + yml = parsed.to_yaml(root_uuid, **params) if output: logger.info("Writing to file %s", output) output.write_text(yml, encoding="utf-8") @@ -96,9 +119,14 @@ def import_msgs( "-l", "--layer", type=click.Choice(["oa", "la", "sa", "pa"], case_sensitive=False), - required=True, help="The layer to export the model objects from.", ) +@click.option( + "-r", + "--root", + type=click.UUID, + help="The UUID of the root package to import the messages to.", +) @click.option( "-o", "--output", @@ -109,11 +137,17 @@ def import_msgs( def export_capella( model: capellambse.MelodyModel, layer: str, + root: uuid.UUID, output: pathlib.Path, ): """Export Capella data package to ROS messages.""" - current_pkg = getattr(model, layer).data_package - exporter.export(current_pkg, output) + if root: + current_pkg = model.search("DataPkg").by_uuid(str(root)) + elif layer: + current_pkg = getattr(model, layer).data_package + else: + raise click.UsageError("Either --root or --layer must be provided") + exporter.export(current_pkg, output) # type: ignore if __name__ == "__main__": diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 85a1868..e7e9afe 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -196,24 +196,41 @@ def _convert_enum( return yml - def to_yaml(self, layer_data_uuid: str, sa_data_uuid: str) -> str: + def to_yaml( + self, + root_uuid: str, + types_parent_uuid: str = "", + types_uuid: str = "", + ) -> str: """Import ROS messages into a Capella data package.""" logger.info("Generating decl YAML") instructions = [ - {"parent": decl.UUIDReference(helpers.UUIDString(layer_data_uuid))} + {"parent": decl.UUIDReference(helpers.UUIDString(root_uuid))} | self._convert_package(self.messages), ] - if needed_types := [ + needed_types = [ p for p in self._promise_id_refs if p not in self._promise_ids - ]: - datatypes = [ - self._convert_datatype(promise_id) - for promise_id in needed_types - ] + ] + if not needed_types: + return decl.dump(instructions) + + datatypes = [ + self._convert_datatype(promise_id) for promise_id in needed_types + ] + if types_uuid: + instructions.append( + { + "parent": decl.UUIDReference( + helpers.UUIDString(types_uuid) + ), + "sync": {"datatypes": datatypes}, + } + ) + elif types_parent_uuid: instructions.append( { "parent": decl.UUIDReference( - helpers.UUIDString(sa_data_uuid) + helpers.UUIDString(types_parent_uuid) ), "sync": { "packages": [ @@ -225,4 +242,8 @@ def to_yaml(self, layer_data_uuid: str, sa_data_uuid: str) -> str: }, } ) + else: + raise ValueError( + "Either types_parent_uuid or types_uuid must be provided" + ) return decl.dump(instructions) From 3d60eecee67cb275cd3772dd367fb079f98bce5b Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 2 Apr 2024 15:44:14 +0200 Subject: [PATCH 39/47] fix: Sync class properties --- .vscode/launch.json | 2 +- capella_ros_tools/importer.py | 28 +- tests/data/data_model/example_msgs.yaml | 178 +- tests/data/melody_model_60/.project | 11 - tests/data/melody_model_60/.project.license | 2 - .../melody_model_60/Melody Model Test.afm | 6 - .../Melody Model Test.afm.license | 2 - .../melody_model_60/Melody Model Test.aird | 13006 ---------------- .../Melody Model Test.aird.license | 2 - .../melody_model_60/Melody Model Test.capella | 3124 ---- .../Melody Model Test.capella.license | 2 - tests/test_import_msgs.py | 52 +- 12 files changed, 148 insertions(+), 16267 deletions(-) delete mode 100644 tests/data/melody_model_60/.project delete mode 100644 tests/data/melody_model_60/.project.license delete mode 100644 tests/data/melody_model_60/Melody Model Test.afm delete mode 100644 tests/data/melody_model_60/Melody Model Test.afm.license delete mode 100644 tests/data/melody_model_60/Melody Model Test.aird delete mode 100644 tests/data/melody_model_60/Melody Model Test.aird.license delete mode 100644 tests/data/melody_model_60/Melody Model Test.capella delete mode 100644 tests/data/melody_model_60/Melody Model Test.capella.license diff --git a/.vscode/launch.json b/.vscode/launch.json index ee90f4b..d6b5ef5 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,7 @@ "args": [ "export", "-m", - "tests/data/melody_model_60", + "local_data/melody_model_60", "-l", "la", "-o", diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index e7e9afe..4ddcff4 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -122,17 +122,22 @@ def _convert_class( self._promise_id_refs[promise_ref] = None prop_yml = { "promise_id": prop_promise_id, - "name": field_def.name, - "type": decl.Promise(promise_ref), - "kind": "COMPOSITION", - "description": field_def.description, - "min_card": decl.NewObject( - "LiteralNumericValue", value=field_def.type.card.min - ), - "max_card": decl.NewObject( - "LiteralNumericValue", value=field_def.type.card.max - ), + "find": { + "name": field_def.name, + }, + "set": { + "type": decl.Promise(promise_ref), + "kind": "COMPOSITION", + "description": field_def.description, + "min_card": decl.NewObject( + "LiteralNumericValue", value=field_def.type.card.min + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value=field_def.type.card.max + ), + }, } + props.append(prop_yml) associations.append( { @@ -155,7 +160,6 @@ def _convert_class( }, } ) - props.append(prop_yml) yml = { "promise_id": promise_id, @@ -164,6 +168,8 @@ def _convert_class( }, "set": { "description": msg_def.description, + }, + "sync": { "properties": props, }, } diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index 9e6b757..d5b64d9 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -13,62 +13,73 @@ name: SampleClass set: description: "SampleClass.msg The first comment block at the top of the file is added to the class description of SampleClass. " + sync: properties: - promise_id: package1.SampleClass.sample_field1 - name: sample_field1 - description: "This block comment is added to the property description of sample_field1. This block comment is also added to the property description of sample_field1. " - type: !promise package1.uint8 - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "0" - max_card: !new_object - _type: LiteralNumericValue - value: "10" + find: + name: sample_field1 + set: + description: "This block comment is added to the property description of sample_field1. This block comment is also added to the property description of sample_field1. " + type: !promise package1.uint8 + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "0" + max_card: !new_object + _type: LiteralNumericValue + value: "10" - promise_id: package1.SampleClass.sample_field2 - name: sample_field2 - description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " - type: !promise package2.SampleClassEnum - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "0" - max_card: !new_object - _type: LiteralNumericValue - value: "*" + find: + name: sample_field2 + set: + description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " + type: !promise package2.SampleClassEnum + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "0" + max_card: !new_object + _type: LiteralNumericValue + value: "*" - promise_id: package1.SampleClass.sample_field3 - name: sample_field3 - description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " - type: !promise package1.uint8 - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "3" - max_card: !new_object - _type: LiteralNumericValue - value: "3" + find: + name: sample_field3 + set: + description: "This block comment is added to the property descriptions of sample_field2 and sample_field3. " + type: !promise package1.uint8 + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "3" + max_card: !new_object + _type: LiteralNumericValue + value: "3" - promise_id: package1.SampleClass.sample_field4 - name: sample_field4 - description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " - type: !promise SampleEnum.SampleEnum - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + find: + name: sample_field4 + set: + description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. Fields in SampleClass can reference enums in other files. The property sample_field4 is of type SampleEnum. cf. SampleEnum " + type: !promise SampleEnum.SampleEnum + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - promise_id: package1.SampleClass.sample_field5 - name: sample_field5 - description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " - type: !promise SampleEnum.SampleEnumValue - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + find: + name: sample_field5 + set: + description: "This block comment is added to the property descriptions of sample_field4 and sample_field5. This inline comment is added to the property description of sample_field5. The property sample_field5 is of type SampleEnumValue. cf. SampleEnum, SAMPLE_ENUM_VALUE_XXX " + type: !promise SampleEnum.SampleEnumValue + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" enumerations: - promise_id: SampleEnum.SampleEnumValue find: @@ -207,40 +218,47 @@ name: SampleClassEnum set: description: "SampleClassEnum.msg Properties in SampleClassEnum can reference enums in the same file. " + sync: properties: - promise_id: package2.SampleClassEnum.status - name: status - description: "The property status is of type SampleClassEnumStatus. " - type: !promise SampleClassEnum.SampleClassEnumStatus - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + find: + name: status + set: + description: "The property status is of type SampleClassEnumStatus. " + type: !promise SampleClassEnum.SampleClassEnumStatus + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - promise_id: package2.SampleClassEnum.color - name: color - description: "The property color is of type Color. " - type: !promise SampleClassEnum.Color - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + find: + name: color + set: + description: "The property color is of type Color. " + type: !promise SampleClassEnum.Color + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - promise_id: package2.SampleClassEnum.field - name: field - description: "" - type: !promise package2.uint8 - kind: COMPOSITION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + find: + name: field + set: + description: "" + type: !promise package2.uint8 + kind: COMPOSITION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" enumerations: - promise_id: SampleClassEnum.SampleClassEnumStatus find: diff --git a/tests/data/melody_model_60/.project b/tests/data/melody_model_60/.project deleted file mode 100644 index f147def..0000000 --- a/tests/data/melody_model_60/.project +++ /dev/null @@ -1,11 +0,0 @@ - - - 6_0 - - - - - - - - diff --git a/tests/data/melody_model_60/.project.license b/tests/data/melody_model_60/.project.license deleted file mode 100644 index 62a1749..0000000 --- a/tests/data/melody_model_60/.project.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB InfraGO AG -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/melody_model_60/Melody Model Test.afm b/tests/data/melody_model_60/Melody Model Test.afm deleted file mode 100644 index 0540ecf..0000000 --- a/tests/data/melody_model_60/Melody Model Test.afm +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/tests/data/melody_model_60/Melody Model Test.afm.license b/tests/data/melody_model_60/Melody Model Test.afm.license deleted file mode 100644 index 62a1749..0000000 --- a/tests/data/melody_model_60/Melody Model Test.afm.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB InfraGO AG -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/melody_model_60/Melody Model Test.aird b/tests/data/melody_model_60/Melody Model Test.aird deleted file mode 100644 index 5b672cf..0000000 --- a/tests/data/melody_model_60/Melody Model Test.aird +++ /dev/null @@ -1,13006 +0,0 @@ - - - - Melody%20Model%20Test.afm - Melody%20Model%20Test.capella - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                          -
                                          - - - - - - -
                                          -
                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                          -
                                          - - - - - - - - - - - - - - -
                                          -
                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - labelSize - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - uid - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - strokeColor - size - routingStyle - - - - - - - - - - strokeColor - size - routingStyle - - - - - - - - - - strokeColor - size - routingStyle - - - - - - - - - - color - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - color - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - borderColor - borderSize - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - borderColor - borderSize - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - labelAlignment - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - borderColor - borderSize - labelColor - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - labelFormat - strike_through - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - labelFormat - underline - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - labelFormat - borderColor - borderSize - labelColor - italic - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - labelAlignment - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - borderColor - borderSize - - - - - - - - - - - strokeColor - size - routingStyle - - - - - - - - - - strokeColor - size - - - - - - - - - - strokeColor - size - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - strokeColor - size - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - backgroundColor - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - lineStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - routingStyle - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bold - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                          -
                                          - - - - - - - - - -
                                          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - - - - - - - - - - - size - routingStyle - strokeColor - - - - - - - - - - - size - routingStyle - strokeColor - - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - color - - - - - - - - - strokeColor - size - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - italic - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - routingStyle - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - italic - - - - - - - - - - - - - - - - - - - - - - - - - - routingStyle - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - routingStyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - italic - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - italic - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - labelColor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - backgroundColor - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - KEEP_LOCATION - KEEP_SIZE - KEEP_RATIO - - - - - - - - - - - - - - - - - - - - - - - - - - - - lineStyle - - - - - - - - - - - - - - - diff --git a/tests/data/melody_model_60/Melody Model Test.aird.license b/tests/data/melody_model_60/Melody Model Test.aird.license deleted file mode 100644 index 62a1749..0000000 --- a/tests/data/melody_model_60/Melody Model Test.aird.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB InfraGO AG -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/melody_model_60/Melody Model Test.capella b/tests/data/melody_model_60/Melody Model Test.capella deleted file mode 100644 index ec3c9cc..0000000 --- a/tests/data/melody_model_60/Melody Model Test.capella +++ /dev/null @@ -1,3124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A test spec. - capella:linkedText - - - - - - This is a test context.<a href="0e0164c3-076e-42c1-8f82-7a43ab84385c"/> - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The actor lives in a world where predators exist -AND -A <a href="e6e4d30c-4d80-4899-8d8d-1350239c15a7"/> is near the actor - capella:linkedText - - - - - The predator no longer exists -OR -The predator is far away - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <a href="dd2d0dab-a35f-4104-91e5-b412f35cba15"/> - capella:linkedText - - - - - The actor feels sated - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Spot a huntable animal - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Actor feels well rested - capella:linkedText - - - - - - - Actor feels sated - capella:linkedText - - - - - - - Food is cooked - capella:linkedText - - - - - - - Revenge - capella:linkedText - - - - - - - No revenge - capella:linkedText - - - - - - - Success - capella:linkedText - - - - - - - Hunt failed - capella:linkedText - - - - - - - Reached safety - capella:linkedText - - - - - - - Hunt ended - - capella:linkedText - 2 - - - - - - - Actor feels hungry - self.hunger >= 0.8 - capella:linkedText - Python - - - - - - - Actor gets too old - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This is a test context. - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Actor feels well rested - capella:linkedText - - - - - - - - Actor feels sated - capella:linkedText - - - - - - - - Food is cooked - capella:linkedText - - - - - - - - Revenge - capella:linkedText - - - - - - - - No revenge - capella:linkedText - - - - - - - - Success - capella:linkedText - - - - - - - - Hunt failed - capella:linkedText - - - - - - - - Reached safety - capella:linkedText - - - - - - - - Hunt ended - capella:linkedText - - - - - - - - Actor feels hungry - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <a href="a0159943-264f-4a97-a245-565fb6bf9db4"/> - capella:linkedText - - - - - - - - - - - - - - - - - - - - - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - capella:linkedText - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/data/melody_model_60/Melody Model Test.capella.license b/tests/data/melody_model_60/Melody Model Test.capella.license deleted file mode 100644 index 62a1749..0000000 --- a/tests/data/melody_model_60/Melody Model Test.capella.license +++ /dev/null @@ -1,2 +0,0 @@ -SPDX-FileCopyrightText: Copyright DB InfraGO AG -SPDX-License-Identifier: Apache-2.0 diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index 297de79..eeaddd4 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -115,19 +115,25 @@ def test_convert_class(importer: Importer): }, "set": { "description": "An example message", + }, + "sync": { "properties": [ { "promise_id": "my_package.MyMessage.field", - "name": "field", - "type": decl.Promise("my_package.uint8"), - "kind": "COMPOSITION", - "description": "Field", - "min_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - "max_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), + "find": { + "name": "field", + }, + "set": { + "type": decl.Promise("my_package.uint8"), + "kind": "COMPOSITION", + "description": "Field", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + }, }, ], }, @@ -161,19 +167,25 @@ def test_convert_class_with_ref(importer: Importer): }, "set": { "description": "An example message", + }, + "sync": { "properties": [ { "promise_id": "my_package.MyMessage.field", - "name": "field", - "type": decl.Promise("std_msgs.uint8"), - "kind": "COMPOSITION", - "description": "Field", - "min_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - "max_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), + "find": { + "name": "field", + }, + "set": { + "type": decl.Promise("std_msgs.uint8"), + "kind": "COMPOSITION", + "description": "Field", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + }, }, ], }, From 5d669be75db46e2fd3290d16bb066e2bcfb292c7 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Mon, 15 Apr 2024 18:11:30 +0200 Subject: [PATCH 40/47] docs: Add examples to README --- README.md | 25 +- capella_ros_tools/__main__.py | 2 + tests/data/melody_model_60/.project | 11 + tests/data/melody_model_60/.project.license | 2 + .../melody_model_60/Melody Model Test.afm | 6 + .../Melody Model Test.afm.license | 2 + .../melody_model_60/Melody Model Test.aird | 13006 ++++++++++++++++ .../Melody Model Test.aird.license | 2 + .../melody_model_60/Melody Model Test.capella | 3124 ++++ .../Melody Model Test.capella.license | 2 + 10 files changed, 16181 insertions(+), 1 deletion(-) create mode 100644 tests/data/melody_model_60/.project create mode 100644 tests/data/melody_model_60/.project.license create mode 100644 tests/data/melody_model_60/Melody Model Test.afm create mode 100644 tests/data/melody_model_60/Melody Model Test.afm.license create mode 100644 tests/data/melody_model_60/Melody Model Test.aird create mode 100644 tests/data/melody_model_60/Melody Model Test.aird.license create mode 100644 tests/data/melody_model_60/Melody Model Test.capella create mode 100644 tests/data/melody_model_60/Melody Model Test.capella.license diff --git a/README.md b/README.md index a0eefe5..7d841cf 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ~ SPDX-License-Identifier: Apache-2.0 --> -# capella-ros-tools +# Capella ROS Tools ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/build-test-publish.yml/badge.svg) ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) @@ -14,6 +14,29 @@ Tools for importing ROS .msg files into Capella data package and vice versa. Read the [full documentation on Github pages](https://dsd-dbs.github.io/capella-ros-tools). +# Examples + +Import ROS .msg files to Capella model layer's root data package: + +```sh + python -m capella_ros_tools \ + import \ + -i tests/data/data_model/example_msgs \ + -m tests/data/empty_project_60 \ + -l la \ + --no-deps +``` + +Export Capella model layer's root data package as ROS .msg files: + +```sh + python -m capella_ros_tools \ + export \ + -m tests/data/melody_model_60 \ + -l la \ + -o tests/data/melody_msgs +``` + # Installation You can install the latest released version directly from PyPI. diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index bc929e7..4a3fbbc 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -147,6 +147,8 @@ def export_capella( current_pkg = getattr(model, layer).data_package else: raise click.UsageError("Either --root or --layer must be provided") + + output.mkdir(exist_ok=True, parents=True) exporter.export(current_pkg, output) # type: ignore diff --git a/tests/data/melody_model_60/.project b/tests/data/melody_model_60/.project new file mode 100644 index 0000000..f147def --- /dev/null +++ b/tests/data/melody_model_60/.project @@ -0,0 +1,11 @@ + + + 6_0 + + + + + + + + diff --git a/tests/data/melody_model_60/.project.license b/tests/data/melody_model_60/.project.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/melody_model_60/.project.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/melody_model_60/Melody Model Test.afm b/tests/data/melody_model_60/Melody Model Test.afm new file mode 100644 index 0000000..0540ecf --- /dev/null +++ b/tests/data/melody_model_60/Melody Model Test.afm @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/data/melody_model_60/Melody Model Test.afm.license b/tests/data/melody_model_60/Melody Model Test.afm.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/melody_model_60/Melody Model Test.afm.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/melody_model_60/Melody Model Test.aird b/tests/data/melody_model_60/Melody Model Test.aird new file mode 100644 index 0000000..d6a8435 --- /dev/null +++ b/tests/data/melody_model_60/Melody Model Test.aird @@ -0,0 +1,13006 @@ + + + + Melody%20Model%20Test.afm + Melody%20Model%20Test.capella + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          +
                                          + + + + + + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          +
                                          + + + + + + + + + + + + + + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelSize + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + uid + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + color + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + color + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelAlignment + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + labelColor + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelFormat + strike_through + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelFormat + underline + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelFormat + borderColor + borderSize + labelColor + italic + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + labelAlignment + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + borderColor + borderSize + + + + + + + + + + + strokeColor + size + routingStyle + + + + + + + + + + strokeColor + size + + + + + + + + + + strokeColor + size + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + strokeColor + size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + backgroundColor + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + lineStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          +
                                          + + + + + + + + + +
                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + size + routingStyle + strokeColor + + + + + + + + + + + size + routingStyle + strokeColor + + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + color + + + + + + + + + strokeColor + size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + routingStyle + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + routingStyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + italic + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + labelColor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + backgroundColor + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + KEEP_LOCATION + KEEP_SIZE + KEEP_RATIO + + + + + + + + + + + + + + + + + + + + + + + + + + + + lineStyle + + + + + + + + + + + + + + + diff --git a/tests/data/melody_model_60/Melody Model Test.aird.license b/tests/data/melody_model_60/Melody Model Test.aird.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/melody_model_60/Melody Model Test.aird.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 diff --git a/tests/data/melody_model_60/Melody Model Test.capella b/tests/data/melody_model_60/Melody Model Test.capella new file mode 100644 index 0000000..c522ae4 --- /dev/null +++ b/tests/data/melody_model_60/Melody Model Test.capella @@ -0,0 +1,3124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A test spec. + capella:linkedText + + + + + + This is a test context.<a href="0e0164c3-076e-42c1-8f82-7a43ab84385c"/> + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The actor lives in a world where predators exist +AND +A <a href="e6e4d30c-4d80-4899-8d8d-1350239c15a7"/> is near the actor + capella:linkedText + + + + + The predator no longer exists +OR +The predator is far away + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <a href="dd2d0dab-a35f-4104-91e5-b412f35cba15"/> + capella:linkedText + + + + + The actor feels sated + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Spot a huntable animal + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actor feels well rested + capella:linkedText + + + + + + + Actor feels sated + capella:linkedText + + + + + + + Food is cooked + capella:linkedText + + + + + + + Revenge + capella:linkedText + + + + + + + No revenge + capella:linkedText + + + + + + + Success + capella:linkedText + + + + + + + Hunt failed + capella:linkedText + + + + + + + Reached safety + capella:linkedText + + + + + + + Hunt ended + + capella:linkedText + 2 + + + + + + + Actor feels hungry + self.hunger >= 0.8 + capella:linkedText + Python + + + + + + + Actor gets too old + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is a test context. + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actor feels well rested + capella:linkedText + + + + + + + + Actor feels sated + capella:linkedText + + + + + + + + Food is cooked + capella:linkedText + + + + + + + + Revenge + capella:linkedText + + + + + + + + No revenge + capella:linkedText + + + + + + + + Success + capella:linkedText + + + + + + + + Hunt failed + capella:linkedText + + + + + + + + Reached safety + capella:linkedText + + + + + + + + Hunt ended + capella:linkedText + + + + + + + + Actor feels hungry + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <a href="a0159943-264f-4a97-a245-565fb6bf9db4"/> + capella:linkedText + + + + + + + + + + + + + + + + + + + + + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + capella:linkedText + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/data/melody_model_60/Melody Model Test.capella.license b/tests/data/melody_model_60/Melody Model Test.capella.license new file mode 100644 index 0000000..62a1749 --- /dev/null +++ b/tests/data/melody_model_60/Melody Model Test.capella.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Copyright DB InfraGO AG +SPDX-License-Identifier: Apache-2.0 From 61bf6536a99b8a9890443c7262d6f79f3a8942a1 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 16 Apr 2024 11:41:19 +0200 Subject: [PATCH 41/47] fix: Sync enum literals --- capella_ros_tools/__main__.py | 1 - capella_ros_tools/exporter.py | 2 +- capella_ros_tools/importer.py | 54 ++-- tests/data/data_model/example_msgs.yaml | 352 ++++++++++++++---------- tests/test_import_msgs.py | 26 +- 5 files changed, 259 insertions(+), 176 deletions(-) diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 4a3fbbc..41447cf 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -148,7 +148,6 @@ def export_capella( else: raise click.UsageError("Either --root or --layer must be provided") - output.mkdir(exist_ok=True, parents=True) exporter.export(current_pkg, output) # type: ignore diff --git a/capella_ros_tools/exporter.py b/capella_ros_tools/exporter.py index 8d5f108..68983c1 100644 --- a/capella_ros_tools/exporter.py +++ b/capella_ros_tools/exporter.py @@ -18,6 +18,7 @@ def _clean_name(name: str) -> str: def export(current_pkg: information.DataPkg, current_path: pathlib.Path): """Export a Capella data package to ROS messages.""" + current_path.mkdir(parents=True, exist_ok=True) for cls_obj in current_pkg.classes: fields = [] for prop_obj in cls_obj.owned_properties: @@ -76,6 +77,5 @@ def export(current_pkg: information.DataPkg, current_path: pathlib.Path): for pkg_obj in current_pkg.packages: pkg_path = current_path / _clean_name(pkg_obj.name) - pkg_path.mkdir(parents=True, exist_ok=True) export(pkg_obj, pkg_path) logger.info("Exported package %s to %s", pkg_obj.name, pkg_path) diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 4ddcff4..54f5b73 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -141,20 +141,25 @@ def _convert_class( associations.append( { - "find": {"name": prop_promise_id}, - "set": { + "find": { "navigable_members": [decl.Promise(prop_promise_id)], + }, + "sync": { "members": [ { - "_type": "Property", - "type": decl.Promise(promise_id), - "kind": "ASSOCIATION", - "min_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), - "max_card": decl.NewObject( - "LiteralNumericValue", value="1" - ), + "find": { + "type": decl.Promise(promise_id), + }, + "set": { + "_type": "Property", + "kind": "ASSOCIATION", + "min_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + "max_card": decl.NewObject( + "LiteralNumericValue", value="1" + ), + }, } ], }, @@ -180,6 +185,20 @@ def _convert_enum( ) -> dict[str, t.Any]: promise_id = f"{pkg_name}.{enum_def.name}" self._promise_ids[promise_id] = None + literals = [] + for literal in enum_def.literals: + literal_yml = { + "find": { + "name": literal.name, + }, + "set": { + "description": literal.description, + "value": decl.NewObject( + "LiteralNumericValue", value=literal.value + ), + }, + } + literals.append(literal_yml) yml = { "promise_id": promise_id, "find": { @@ -187,16 +206,9 @@ def _convert_enum( }, "set": { "description": enum_def.description, - "literals": [ - { - "name": literal.name, - "description": literal.description, - "value": decl.NewObject( - "LiteralNumericValue", value=literal.value - ), - } - for literal in enum_def.literals - ], + }, + "sync": { + "literals": literals, }, } diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index d5b64d9..c3a169a 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -86,129 +86,162 @@ name: SampleEnumValue set: description: "SampleEnum.msg This block comment is added to the enum description of SampleEnumValue. " + sync: literals: - - name: RED - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: BLUE - description: "This inline comment is added to the enum literal description of BLUE. " - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: YELLOW - description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " - value: !new_object - _type: LiteralNumericValue - value: "2" - - name: GREEN - description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " - value: !new_object - _type: LiteralNumericValue - value: "3" + - find: + name: RED + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - find: + name: BLUE + set: + description: "This inline comment is added to the enum literal description of BLUE. " + value: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: YELLOW + set: + description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " + value: !new_object + _type: LiteralNumericValue + value: "2" + - find: + name: GREEN + set: + description: "This block comment is added to the enum literal descriptions of YELLOW and GREEN. " + value: !new_object + _type: LiteralNumericValue + value: "3" - promise_id: SampleEnum.SampleEnum find: name: SampleEnum set: description: "This block comment is added to the enum description of SampleEnum. In a file, there can only be one or no enum whose literal names do not share a common prefix. " + sync: literals: - - name: OK - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: WARN - description: "" - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: ERROR - description: "" - value: !new_object - _type: LiteralNumericValue - value: "2" - - name: STALE - description: "" - value: !new_object - _type: LiteralNumericValue - value: "3" + - find: + name: OK + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - find: + name: WARN + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: ERROR + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" + - find: + name: STALE + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "3" owned_associations: - find: name: package1.SampleClass.sample_field1 set: navigable_members: - !promise package1.SampleClass.sample_field1 + sync: members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package1.SampleClass + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package1.SampleClass.sample_field2 set: navigable_members: - !promise package1.SampleClass.sample_field2 + sync: members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package1.SampleClass + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package1.SampleClass.sample_field3 set: navigable_members: - !promise package1.SampleClass.sample_field3 + sync: members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package1.SampleClass + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package1.SampleClass.sample_field4 set: navigable_members: - !promise package1.SampleClass.sample_field4 + sync: members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package1.SampleClass + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package1.SampleClass.sample_field5 set: navigable_members: - !promise package1.SampleClass.sample_field5 + sync: members: - - _type: Property - type: !promise package1.SampleClass - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package1.SampleClass + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package2 sync: @@ -265,94 +298,119 @@ name: SampleClassEnumStatus set: description: "This block comment is added to the enum description of SampleClassEnumStatus. " + sync: literals: - - name: OK - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: WARN - description: "" - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: ERROR - description: "" - value: !new_object - _type: LiteralNumericValue - value: "2" - - name: STALE - description: "" - value: !new_object - _type: LiteralNumericValue - value: "3" + - find: + name: OK + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - find: + name: WARN + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: ERROR + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" + - find: + name: STALE + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "3" - promise_id: SampleClassEnum.Color find: name: Color set: description: "This block comment is added to the enum description of Color. " + sync: literals: - - name: RED - description: "" - value: !new_object - _type: LiteralNumericValue - value: "0" - - name: BLUE - description: "" - value: !new_object - _type: LiteralNumericValue - value: "1" - - name: YELLOW - description: "" - value: !new_object - _type: LiteralNumericValue - value: "2" + - find: + name: RED + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "0" + - find: + name: BLUE + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "1" + - find: + name: YELLOW + set: + description: "" + value: !new_object + _type: LiteralNumericValue + value: "2" owned_associations: - find: name: package2.SampleClassEnum.status set: navigable_members: - !promise package2.SampleClassEnum.status + sync: members: - - _type: Property - type: !promise package2.SampleClassEnum - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package2.SampleClassEnum + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package2.SampleClassEnum.color set: navigable_members: - !promise package2.SampleClassEnum.color + sync: members: - - _type: Property - type: !promise package2.SampleClassEnum - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package2.SampleClassEnum + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - find: name: package2.SampleClassEnum.field set: navigable_members: - !promise package2.SampleClassEnum.field + sync: members: - - _type: Property - type: !promise package2.SampleClassEnum - kind: ASSOCIATION - min_card: !new_object - _type: LiteralNumericValue - value: "1" - max_card: !new_object - _type: LiteralNumericValue - value: "1" + - find: + type: !promise package2.SampleClassEnum + set: + _type: Property + kind: ASSOCIATION + min_card: !new_object + _type: LiteralNumericValue + value: "1" + max_card: !new_object + _type: LiteralNumericValue + value: "1" - parent: !uuid "00000000-0000-0000-0000-000000000001" sync: diff --git a/tests/test_import_msgs.py b/tests/test_import_msgs.py index eeaddd4..f1bc74f 100644 --- a/tests/test_import_msgs.py +++ b/tests/test_import_msgs.py @@ -74,16 +74,30 @@ def test_convert_enum(importer: Importer): }, "set": { "description": "An example enum", + }, + "sync": { "literals": [ { - "name": "LITERAL_A", - "description": "Literal A", - "value": decl.NewObject("LiteralNumericValue", value="0"), + "find": { + "name": "LITERAL_A", + }, + "set": { + "description": "Literal A", + "value": decl.NewObject( + "LiteralNumericValue", value="0" + ), + }, }, { - "name": "LITERAL_B", - "description": "Literal B", - "value": decl.NewObject("LiteralNumericValue", value="1"), + "find": { + "name": "LITERAL_B", + }, + "set": { + "description": "Literal B", + "value": decl.NewObject( + "LiteralNumericValue", value="1" + ), + }, }, ], }, From 59ebd74d021fe797944e0f486d4a9d298e018c39 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Wed, 24 Apr 2024 10:03:36 +0200 Subject: [PATCH 42/47] fix: Adapt tests to new fixes --- .vscode/launch.json | 2 +- tests/data/data_model/example_msgs.yaml | 16 ---------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index d6b5ef5..ee90f4b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,7 +10,7 @@ "args": [ "export", "-m", - "local_data/melody_model_60", + "tests/data/melody_model_60", "-l", "la", "-o", diff --git a/tests/data/data_model/example_msgs.yaml b/tests/data/data_model/example_msgs.yaml index c3a169a..304a3cc 100644 --- a/tests/data/data_model/example_msgs.yaml +++ b/tests/data/data_model/example_msgs.yaml @@ -153,8 +153,6 @@ value: "3" owned_associations: - find: - name: package1.SampleClass.sample_field1 - set: navigable_members: - !promise package1.SampleClass.sample_field1 sync: @@ -171,8 +169,6 @@ _type: LiteralNumericValue value: "1" - find: - name: package1.SampleClass.sample_field2 - set: navigable_members: - !promise package1.SampleClass.sample_field2 sync: @@ -189,8 +185,6 @@ _type: LiteralNumericValue value: "1" - find: - name: package1.SampleClass.sample_field3 - set: navigable_members: - !promise package1.SampleClass.sample_field3 sync: @@ -207,8 +201,6 @@ _type: LiteralNumericValue value: "1" - find: - name: package1.SampleClass.sample_field4 - set: navigable_members: - !promise package1.SampleClass.sample_field4 sync: @@ -225,8 +217,6 @@ _type: LiteralNumericValue value: "1" - find: - name: package1.SampleClass.sample_field5 - set: navigable_members: - !promise package1.SampleClass.sample_field5 sync: @@ -358,8 +348,6 @@ value: "2" owned_associations: - find: - name: package2.SampleClassEnum.status - set: navigable_members: - !promise package2.SampleClassEnum.status sync: @@ -376,8 +364,6 @@ _type: LiteralNumericValue value: "1" - find: - name: package2.SampleClassEnum.color - set: navigable_members: - !promise package2.SampleClassEnum.color sync: @@ -394,8 +380,6 @@ _type: LiteralNumericValue value: "1" - find: - name: package2.SampleClassEnum.field - set: navigable_members: - !promise package2.SampleClassEnum.field sync: From b1e4ca17089ed862d1b9bda2ee812d73754f9512 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Fri, 26 Apr 2024 08:59:32 +0200 Subject: [PATCH 43/47] docs: Adapt docs to new fixes --- .vscode/launch.json | 2 +- README.md | 46 +++++++++++++++++++++++++---------- capella_ros_tools/__main__.py | 2 +- docs/source/howtos.rst | 5 ++-- docs/source/usage.rst | 17 +++++++------ 5 files changed, 48 insertions(+), 24 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index ee90f4b..df92bd3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -28,7 +28,7 @@ "-m", "git+https://github.com/DSD-DBS/coffee-machine", "-l", - "oa", + "sa", "-o", "tests/data/coffee_msgs" ] diff --git a/README.md b/README.md index 7d841cf..4ce1eac 100644 --- a/README.md +++ b/README.md @@ -16,25 +16,45 @@ Read the [full documentation on Github pages](https://dsd-dbs.github.io/capella- # Examples -Import ROS .msg files to Capella model layer's root data package: +Import local ROS .msg files to Capella model layer's root data package: ```sh - python -m capella_ros_tools \ - import \ - -i tests/data/data_model/example_msgs \ - -m tests/data/empty_project_60 \ - -l la \ - --no-deps +python -m capella_ros_tools \ +import \ +-i tests/data/data_model/example_msgs \ +-m tests/data/empty_project_60 \ +-l la \ +--no-deps ``` -Export Capella model layer's root data package as ROS .msg files: +Import remote ROS .msg files to Capella model layer's root data package: ```sh - python -m capella_ros_tools \ - export \ - -m tests/data/melody_model_60 \ - -l la \ - -o tests/data/melody_msgs +python -m capella_ros_tools \ +import \ +-i git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss \ +-m tests/data/empty_project_60 \ +-l la +``` + +Export local Capella model layer's root data package as ROS .msg files: + +```sh +python -m capella_ros_tools \ +export \ +-m tests/data/melody_model_60 \ +-l la \ +-o tests/data/melody_msgs +``` + +Export remote Capella model layer's root data package as ROS .msg files: + +```sh +python -m capella_ros_tools \ +export \ +-m git+https://github.com/DSD-DBS/coffee-machine \ +-l sa \ +-o tests/data/coffee_msgs ``` # Installation diff --git a/capella_ros_tools/__main__.py b/capella_ros_tools/__main__.py index 41447cf..0cda4d0 100644 --- a/capella_ros_tools/__main__.py +++ b/capella_ros_tools/__main__.py @@ -125,7 +125,7 @@ def import_msgs( "-r", "--root", type=click.UUID, - help="The UUID of the root package to import the messages to.", + help="The UUID of the root package to import the messages from.", ) @click.option( "-o", diff --git a/docs/source/howtos.rst b/docs/source/howtos.rst index 741e724..697a831 100644 --- a/docs/source/howtos.rst +++ b/docs/source/howtos.rst @@ -31,7 +31,7 @@ Import ROS2 Messages from Git Repository: python -m capella_ros_tools \ import \ -i git+https://github.com/DSD-DBS/dsd-ros-msg-definitions-oss \ - -m tests/data/ empty_project_60 \ + -m tests/data/empty_project_60 \ -l la Export Capella data package: @@ -40,7 +40,8 @@ Export Capella data package: python -m capella_ros_tools \ export \ - -m tests/data/melody_model_60 -l la \ + -m tests/data/melody_model_60 \ + -l la \ -o tests/data/melody_msgs Export Capella data package from Git Repository: diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 800fe99..ab61512 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -16,11 +16,13 @@ Import ROS2 Messages: python -m capella_ros_tools import -i -m -l -o --no-deps -* **-i/--input**, import ROS2 messages from path -* **-m/--model**, write to Capella model at path -* **-l/--layer**, use Capella model layer -* **-o/--out**, write generated decl YAML to path (optional) +* **-i/--input**, path to folder with .msg files. +* **-m/--model**, path to the Capella model. +* **-l/--layer**, layer to import the messages to. +* **-r/--root**, UUID of the root package to import the messages to. +* **-t/--type**, UUID of the types package to import the generated data types to. * **--no-deps**, flag to disable import of ROS2 dependencies (e.g. std_msgs) +* **-o/--output**, path to output decl YAML. Export Capella Model (experimental): ------------------------------------ @@ -28,6 +30,7 @@ Export Capella Model (experimental): python -m capella_ros_tools export -m -l -o -* **-m/--model**, export Capella model from path -* **-l/--layer**, use Capella model layer -* **-o/--output**, write ROS2 messages to +* **-m/--model**, path to the Capella model. +* **-l/--layer**, layer to export the messages from. +* **-r/--root**, UUID of the root package to export the messages from. +* **-o/--output**, path to output folder. From 36395cd3880a47b4bf9ef6c8b129f98532ff57c9 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Mon, 13 May 2024 09:35:03 +0200 Subject: [PATCH 44/47] fix: Apply suggestions from review --- README.md | 2 +- capella_ros_tools/data_model.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4ce1eac..cae0db6 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/build-test-publish.yml/badge.svg) ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) -Tools for importing ROS .msg files into Capella data package and vice versa. +Tools for importing ROS .msg files into Capella `DataPackages`, `DataTypes`, `Class`es and vice versa. # Documentation diff --git a/capella_ros_tools/data_model.py b/capella_ros_tools/data_model.py index 506cfa5..3d7c508 100644 --- a/capella_ros_tools/data_model.py +++ b/capella_ros_tools/data_model.py @@ -159,8 +159,7 @@ def __eq__(self, other: object) -> bool: def _process_block_comment(line: str) -> str: if comment := _clean_comment(line): return f"{comment} " - else: - return "
                                          " + return "
                                          " def _extract_file_level_comments( From 172935e6e8e2dc4e80e9a44d789e35ab480d93b1 Mon Sep 17 00:00:00 2001 From: Huyen Nguyen <48179958+huyenngn@users.noreply.github.com> Date: Tue, 21 May 2024 09:35:23 +0200 Subject: [PATCH 45/47] docs: Add consistent quoting Co-authored-by: Martin Lehmann --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cae0db6..101cc5b 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/build-test-publish.yml/badge.svg) ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) -Tools for importing ROS .msg files into Capella `DataPackages`, `DataTypes`, `Class`es and vice versa. +Tools for importing ROS .msg files into Capella `DataPackage`, `DataType` and +`Class` objects, and exporting those objects into .msg files. # Documentation From cfc44f95494626e2748256e1001db30448e18fb3 Mon Sep 17 00:00:00 2001 From: huyenngn Date: Tue, 21 May 2024 12:36:04 +0200 Subject: [PATCH 46/47] docs: Add GIF to README --- README.md | 4 +++- capella_ros_tools/importer.py | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 101cc5b..4469f33 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,9 @@ ![image](https://github.com/DSD-DBS/capella-ros-tools/actions/workflows/lint.yml/badge.svg) Tools for importing ROS .msg files into Capella `DataPackage`, `DataType` and -`Class` objects, and exporting those objects into .msg files. +`Class` objects, or exporting those objects to .msg files. + +![Showcase](https://i.imgur.com/hs4EUnL.gif) # Documentation diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 54f5b73..05020a4 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -2,7 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 """Tool for importing ROS messages to a Capella data package.""" -import collections as c import typing as t from capellambse import decl, filehandler, helpers @@ -29,8 +28,8 @@ def __init__( no_deps: bool, ): self.messages = data_model.MessagePkgDef("root", [], []) - self._promise_ids: c.OrderedDict[str, None] = c.OrderedDict() - self._promise_id_refs: c.OrderedDict[str, None] = c.OrderedDict() + self._promise_ids: dict[str, None] = {} + self._promise_id_refs: dict[str, None] = {} self._add_packages("ros_msgs", msg_path) if no_deps: From be8b3b4874093de7eba8b38398f3d84ab7b5f7fd Mon Sep 17 00:00:00 2001 From: ewuerger Date: Wed, 22 May 2024 11:03:03 +0200 Subject: [PATCH 47/47] fix: Deterministic order of packages and messages Co-authored-by: Martin Lehmann --- capella_ros_tools/data_model.py | 2 +- capella_ros_tools/importer.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/capella_ros_tools/data_model.py b/capella_ros_tools/data_model.py index 3d7c508..4777e4a 100644 --- a/capella_ros_tools/data_model.py +++ b/capella_ros_tools/data_model.py @@ -395,7 +395,7 @@ def from_msg_folder( ) -> MessagePkgDef: """Create a message package definition from a folder.""" out = cls(pkg_name, [], []) - for msg_file in msg_path.rglob("*.msg"): + for msg_file in sorted(msg_path.rglob("*.msg"), key=os.fspath): msg_def = MessageDef.from_file(msg_file) out.messages.append(msg_def) return out diff --git a/capella_ros_tools/importer.py b/capella_ros_tools/importer.py index 05020a4..d546773 100644 --- a/capella_ros_tools/importer.py +++ b/capella_ros_tools/importer.py @@ -2,6 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 """Tool for importing ROS messages to a Capella data package.""" +import os import typing as t from capellambse import decl, filehandler, helpers @@ -40,7 +41,7 @@ def __init__( def _add_packages(self, name: str, path: str) -> None: root = filehandler.get_filehandler(path).rootdir - for dir in root.rglob("msg"): + for dir in sorted(root.rglob("msg"), key=os.fspath): pkg_name = dir.parent.name or name pkg_def = data_model.MessagePkgDef.from_msg_folder(pkg_name, dir) self.messages.packages.append(pkg_def)