Bug 547919 - [IoTML] WoT TD generator

Change-Id: If4ed66f29b0e0f848e85e8624b77cf482b77e6c6
Signed-off-by: Shuai Li <shuai.li@cea.fr>
diff --git a/addons/pom.xml b/addons/pom.xml
index e7efe13..837f7ba 100644
--- a/addons/pom.xml
+++ b/addons/pom.xml
@@ -12,6 +12,7 @@
 
 	<modules>
 		<!--<module>simulation</module>-->
+		<module>wot</module>
 	</modules>
 	
 </project>
\ No newline at end of file
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.classpath b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.project b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.project
new file mode 100644
index 0000000..b7c56dc
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.iotml.wot.td.codegen.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.settings/org.eclipse.jdt.core.prefs b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/META-INF/MANIFEST.MF b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..dc11e98
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.iotml.wot.td.codegen.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.iotml.wot.td.codegen.ui.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.papyrus.iotml.wot.td.codegen;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.designer.languages.common.base;bundle-version="[1.0.4,2.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/build.properties b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/build.properties
new file mode 100644
index 0000000..5acb28e
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/build.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2019 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v20.html
+#
+# Contributors:
+#     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/plugin.properties b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/plugin.properties
new file mode 100644
index 0000000..a6e67ec
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2019 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v20.html
+#
+# Contributors:
+#     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+###############################################################################
+pluginName=Papyrus IoT-ML WoT TD code generation UI
+providerName=Eclipse Modeling Project
+
+td.codegen.uml.command.name=Generate WoT TD
+td.codegen.uml.command.description=Generate WoT Thing Description from IoT-ML model
+td.codegen.uml.page.name=WoT TD code generation
\ No newline at end of file
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/plugin.xml b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/plugin.xml
new file mode 100644
index 0000000..98934a3
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/plugin.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+    Copyright (c) 2019 CEA LIST.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v2.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v20.html
+   
+    Contributors:
+        	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+ -->
+
+<plugin>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.papyrus.designer.popup?after=codegen">
+         <command
+               commandId="org.eclipse.papyrus.iotml.wot.td.codegen.ui.command"
+               label="%td.codegen.uml.command.name"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            categoryId="org.eclipse.papyrus.editor.category"
+            description="%command.description"
+            id="org.eclipse.papyrus.iotml.wot.td.codegen.ui.command"
+            name="%td.codegen.uml.command.name">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.papyrus.iotml.wot.td.codegen.ui.handlers.GenerateTDHandler"
+            commandId="org.eclipse.papyrus.iotml.wot.td.codegen.ui.command">
+            <activeWhen>
+            <and>
+               <with
+                     variable="selection">
+                  <iterate>
+                     <adapt
+                           type="org.eclipse.emf.ecore.EObject">
+                        <instanceof
+                              value="org.eclipse.uml2.uml.PackageableElement">
+                        </instanceof>
+                     </adapt>
+                  </iterate>
+               </with>
+               <count
+                     value="1">
+               </count>
+            </and>
+         </activeWhen>
+      </handler>
+   </extension>
+
+</plugin>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/pom.xml b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/pom.xml
new file mode 100644
index 0000000..1eca951
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<artifactId>org.eclipse.papyrus.iotml.addons.wot</artifactId>
+		<groupId>org.eclipse.papyrus.iotml</groupId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+
+	<!-- POM Description -->
+	<artifactId>org.eclipse.papyrus.iotml.wot.td.codegen.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>org.eclipse.papyrus.iotml.wot.td.codegen.ui</name>
+	<description>Papyrus IoT-ML WoT TD generation UI</description>
+
+</project>
\ No newline at end of file
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/src/org/eclipse/papyrus/iotml/wot/td/codegen/ui/Activator.java b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/src/org/eclipse/papyrus/iotml/wot/td/codegen/ui/Activator.java
new file mode 100644
index 0000000..8d8890e
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/src/org/eclipse/papyrus/iotml/wot/td/codegen/ui/Activator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2019 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.iotml.wot.td.codegen.ui;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ * 
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.iotml.wot.td.codegen.ui"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	public static LogHelper log;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		log = new LogHelper();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/src/org/eclipse/papyrus/iotml/wot/td/codegen/ui/handlers/GenerateTDHandler.java b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/src/org/eclipse/papyrus/iotml/wot/td/codegen/ui/handlers/GenerateTDHandler.java
new file mode 100644
index 0000000..15f2e1c
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen.ui/src/org/eclipse/papyrus/iotml/wot/td/codegen/ui/handlers/GenerateTDHandler.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2019 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.iotml.wot.td.codegen.ui.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.papyrus.iotml.wot.td.codegen.transformation.TDModelElementsCreator;
+import org.eclipse.papyrus.uml.diagram.common.handlers.CmdHandler;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.PackageableElement;
+
+/**
+ * Handler class for generating VDHL code from UML model.
+ */
+public class GenerateTDHandler extends CmdHandler {
+
+	/**
+	 * Execute the generation TD code from the selected UML Class.
+	 * 
+	 * {@inheritDoc}
+	 */
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		updateSelectedEObject();
+
+		if (selectedEObject instanceof PackageableElement) {
+			PackageableElement pe = (PackageableElement) selectedEObject;
+
+			URI uri = pe.eResource().getURI();
+			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+			if (uri.segmentCount() < 2) {
+				return null;
+			}
+			IProject modelProject = root.getProject(uri.segment(1));
+			if (modelProject == null) {
+				return null;
+			}
+			
+			if (modelProject.exists()) {
+				TDModelElementsCreator mec = new TDModelElementsCreator(modelProject, pe);
+				mec.createPackageableElement(pe, null);
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * The handler is capable of executing at this time if the selected element is a UML Class.
+	 * 
+	 * {@inheritDoc}
+	 */
+	@Override
+	public boolean isEnabled() {
+		updateSelectedEObject();
+
+		if (selectedEObject instanceof Class) {
+			return true;
+		}
+		return super.isEnabled();
+	}
+
+}
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.classpath b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.project b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.project
new file mode 100644
index 0000000..04a4d04
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.iotml.wot.td.codegen</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.settings/org.eclipse.jdt.core.prefs b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/META-INF/MANIFEST.MF b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9710988
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.iotml.wot.td.codegen;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.papyrus.designer.languages.common.base;bundle-version="[1.0.4,2.0.0)",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.designer.languages.common.extensionpoints;bundle-version="[1.0.4,2.0.0)",
+ org.apache.commons.lang;bundle-version="[2.6.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.papyrus.iotml.profile;bundle-version="[1.0.0,2.0.0)",
+ com.fasterxml.jackson.core.jackson-annotations;bundle-version="[2.9.0,3.0.0)",
+ com.fasterxml.jackson.core.jackson-core;bundle-version="[2.9.0,3.0.0)",
+ com.fasterxml.jackson.core.jackson-databind;bundle-version="[2.9.0,3.0.0)"
+Bundle-Activator: org.eclipse.papyrus.iotml.wot.td.codegen.Activator
+Export-Package: org.eclipse.papyrus.iotml.wot.td.codegen.transformation
+
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/build.properties b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/build.properties
new file mode 100644
index 0000000..28e32f0
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/build.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# Copyright (c) 2019 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v20.html
+#
+# Contributors:
+#     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.properties,\
+               plugin.xml
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/plugin.properties b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/plugin.properties
new file mode 100644
index 0000000..fffc0bd
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/plugin.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2019 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v2.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v20.html
+#
+# Contributors:
+#     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+###############################################################################
+pluginName=Papyrus IoT-ML WoT TD code generation
+providerName=Eclipse Modeling Project
+
+generator.language=WoT TD
+generator.id=Standard WoT TD
\ No newline at end of file
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/plugin.xml b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/plugin.xml
new file mode 100644
index 0000000..43bc6ee
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<!--
+    Copyright (c) 2019 CEA LIST.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v2.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v20.html
+   
+    Contributors:
+        	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+ -->
+
+<plugin>
+
+</plugin>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/pom.xml b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/pom.xml
new file mode 100644
index 0000000..7247725
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<artifactId>org.eclipse.papyrus.iotml.addons.wot</artifactId>
+		<groupId>org.eclipse.papyrus.iotml</groupId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+
+	<!-- POM Description -->
+	<artifactId>org.eclipse.papyrus.iotml.wot.td.codegen</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<name>org.eclipse.papyrus.iotml.wot.td.codegen</name>
+	<description>Papyrus IoT-ML WoT TD generation</description>
+</project>
\ No newline at end of file
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/Activator.java b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/Activator.java
new file mode 100644
index 0000000..a7280b3
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/Activator.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2019 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.iotml.wot.td.codegen;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ * 
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.iotml.wot.td.codegen"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	public static LogHelper log;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		log = new LogHelper();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/TDLangCodegen.java b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/TDLangCodegen.java
new file mode 100644
index 0000000..c316b20
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/TDLangCodegen.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2019 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.iotml.wot.td.codegen;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.papyrus.designer.languages.common.base.ModelElementsCreator;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen2;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.MethodInfo;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.SyncInformation;
+import org.eclipse.papyrus.iotml.wot.td.codegen.transformation.TDModelElementsCreator;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageableElement;
+
+/**
+ * TD language support.
+ *
+ */
+public class TDLangCodegen implements ILangCodegen2 {
+
+	private static final String TD_GENERATOR_DESC = "A WoT TD generator."; //$NON-NLS-1$
+
+	protected ModelElementsCreator creator = null;
+	
+	/**
+	 * The translation of the Model to the TD code.
+	 */
+	protected PackageableElement pe;
+
+	protected IProject lastProject = null;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param modelToTDQueries
+	 *            The translation of the Model to the TD code
+	 */
+	public TDLangCodegen(PackageableElement pe) {
+		this.pe = pe;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen2#getDescription()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getDescription() {
+		return TD_GENERATOR_DESC;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen2#isEligible(org.eclipse.uml2.uml.Element)
+	 *
+	 * @param modelElement
+	 * @return
+	 */
+	@Override
+	public boolean isEligible(Element modelElement) {
+		if (modelElement instanceof PackageableElement) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen2#getSuffix(org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen.FILE_KIND)
+	 *
+	 * @param fileKind
+	 * @return
+	 */
+	@Override
+	public String getSuffix(FILE_KIND fileKind) {
+		return "json";
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen#generateCode(org.eclipse.core.resources.IProject, org.eclipse.uml2.uml.PackageableElement, org.eclipse.core.runtime.IProgressMonitor)
+	 *
+	 * @param project
+	 * @param element
+	 * @param monitor
+	 */
+	@Override
+	public void generateCode(IProject project, PackageableElement element, IProgressMonitor monitor) {
+		manageCreator(project, element);
+		creator.createPackageableElement(element, monitor);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen#cleanCode(org.eclipse.core.resources.IProject, org.eclipse.uml2.uml.PackageableElement, org.eclipse.core.runtime.IProgressMonitor)
+	 *
+	 * @param project
+	 * @param element
+	 * @param monitor
+	 */
+	@Override
+	public void cleanCode(IProject project, PackageableElement element, IProgressMonitor monitor) {
+		manageCreator(project, element);
+		creator.removePackageableElement(element, monitor);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen#getFileName(org.eclipse.core.resources.IProject, org.eclipse.uml2.uml.NamedElement)
+	 *
+	 * @param project
+	 * @param element
+	 * @return
+	 */
+	@Override
+	public String getFileName(IProject project, NamedElement element) {
+		manageCreator(project, element);
+		return creator.getFileName(element);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen#getTargetProject(org.eclipse.uml2.uml.PackageableElement, boolean)
+	 *
+	 * @param pe
+	 * @param createIfMissing
+	 * @return
+	 */
+	@Override
+	public IProject getTargetProject(PackageableElement pe, boolean createIfMissing) {
+		return null;
+	}
+
+	/**
+	 * Manage the TDModelElementsCreator.
+	 * 
+	 * @param project
+	 *            The target project
+	 * @param element
+	 *            the selected element
+	 */
+	protected void manageCreator(IProject project, Element element) {
+		if ((project == null) && (element instanceof PackageableElement)) {
+			project = getTargetProject((PackageableElement) element, false);
+		}
+
+		if ((creator == null) || (project != lastProject)) {
+			lastProject = project;
+			creator = new TDModelElementsCreator(project, (PackageableElement) element);
+		}
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen2#getSyncInformation(java.lang.String, java.lang.String)
+	 *
+	 * @param methodName
+	 * @param body
+	 * @return
+	 */
+	@Override
+	public SyncInformation getSyncInformation(String methodName, String body) {
+		return null;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen2#getMethodInfo(org.eclipse.uml2.uml.NamedElement)
+	 *
+	 * @param operationOrBehavior
+	 * @return
+	 */
+	@Override
+	public MethodInfo getMethodInfo(NamedElement operationOrBehavior) {
+		return null;
+	}
+}
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/generator/ThingGenerator.java b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/generator/ThingGenerator.java
new file mode 100644
index 0000000..2708bbb
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/generator/ThingGenerator.java
@@ -0,0 +1,22 @@
+package org.eclipse.papyrus.iotml.wot.td.codegen.generator;
+
+import org.eclipse.papyrus.iotml.wot.Thing;
+
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class ThingGenerator {
+	public static String generateTDCode(Thing thing) {
+		ObjectMapper mapper = new ObjectMapper();
+		mapper.setSerializationInclusion(Include.NON_NULL);
+		mapper.setSerializationInclusion(Include.NON_EMPTY);
+		try {
+			String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(thing);
+			return jsonString;
+		} catch (JsonProcessingException e) {
+			e.printStackTrace();
+			return "";
+		}
+	}
+}
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/transformation/TDGenerationUtil.java b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/transformation/TDGenerationUtil.java
new file mode 100644
index 0000000..fb32f29
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/transformation/TDGenerationUtil.java
@@ -0,0 +1,21 @@
+package org.eclipse.papyrus.iotml.wot.td.codegen.transformation;
+
+import java.util.List;
+
+public class TDGenerationUtil {
+	public static boolean isNotNullOrEmpty (Object object) {
+		if (object == null) {
+			return false;
+		}
+
+		if (object instanceof String) {
+			return ((String) object).isEmpty();
+		}
+		
+		if (object instanceof List) {
+			return ((List) object).isEmpty();
+		}
+		
+		return true;
+	}
+}
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/transformation/TDModelElementsCreator.java b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/transformation/TDModelElementsCreator.java
new file mode 100644
index 0000000..608439b
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.codegen/src/org/eclipse/papyrus/iotml/wot/td/codegen/transformation/TDModelElementsCreator.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2019 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *
+ * Contributors:
+ *     	Shuai Li (CEA LIST) <shuai.li@cea.fr> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.iotml.wot.td.codegen.transformation;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.papyrus.designer.languages.common.base.HierarchyLocationStrategy;
+import org.eclipse.papyrus.designer.languages.common.base.ModelElementsCreator;
+import org.eclipse.papyrus.infra.tools.file.ProjectBasedFileAccess;
+import org.eclipse.papyrus.iotml.wot.Thing;
+import org.eclipse.papyrus.iotml.wot.td.codegen.generator.ThingGenerator;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * Main class of TD code generator.
+ */
+public class TDModelElementsCreator extends ModelElementsCreator {
+
+	private static final String TD_LANG = "TD"; //$NON-NLS-1$
+	
+	private static final String JSON_SUFFIX = "json";
+
+	protected String tdExt;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param project
+	 *            the project in which the generated code should be placed
+	 * @param modelToTD
+	 *            the translation of the Model to the TD code
+	 */
+	public TDModelElementsCreator(IProject project, PackageableElement pe) {
+		this(project, TD_LANG, pe);
+	}
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param project
+	 *            the project in which the generated code should be placed
+	 * @param language
+	 *            the generator language
+	 * @param modelToTD
+	 *            the translation of the Model to the TD code
+	 */
+	public TDModelElementsCreator(IProject project, String language, PackageableElement pe) {
+		super(new ProjectBasedFileAccess(project), new HierarchyLocationStrategy(), language);
+		this.project = project;
+		tdExt = JSON_SUFFIX;
+	}
+
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.base.ModelElementsCreator#noCodeGen(org.eclipse.uml2.uml.Element)
+	 *
+	 * @param element
+	 * @return
+	 */
+	@Override
+	protected boolean noCodeGen(Element element) {
+		return false;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.designer.languages.common.base.ModelElementsCreator#createPackageableElementFile(org.eclipse.uml2.uml.PackageableElement, org.eclipse.core.runtime.IProgressMonitor)
+	 *
+	 * @param pe
+	 * @param monitor
+	 */
+	@Override
+	protected void createPackageableElementFile(PackageableElement pe, IProgressMonitor monitor) {
+		generateThing(pe);
+		for (Element element : pe.allOwnedElements()) {
+			if (element instanceof Property) {
+				Property property = (Property) element;
+				if (property.getType() != null) {
+					generateThing(property.getType());
+				}
+			}
+			generateThing(element);
+		}
+	}
+
+	/**
+	 * Generate the TD code for each sub entity.
+	 * 
+	 * @param topEntity
+	 *            the top entity (top class)
+	 * @param modelToTD
+	 *            the translation of the Model to the TD code
+	 */
+	private void generateThing(Element element) {
+		Thing thing = UMLUtil.getStereotypeApplication(element, Thing.class);
+		if (thing != null) {
+			generateTDCode(thing);
+		}
+	}
+
+
+	/**
+	 * Generate the final TD code file.
+	 */
+	private void generateTDCode(Thing thing) {
+		String result = ThingGenerator.generateTDCode(thing).toString();
+		String fileNameTD = locStrategy.getFileName(thing.getBase_Class()) + "." + tdExt; //$NON-NLS-1$
+		fileSystemAccess.generateFile(fileNameTD, result);
+	}
+}
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.classpath b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.classpath
new file mode 100644
index 0000000..ebde520
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.classpath
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.project b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.project
new file mode 100644
index 0000000..17e1ac9
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.iotml.wot.td.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.core.resources.prefs b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.jdt.core.prefs b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..71ac301
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.m2e.core.prefs b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/build.properties b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/build.properties
new file mode 100644
index 0000000..fa4bd48
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/build.properties
@@ -0,0 +1,6 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               license.html,\
+               epl-v10.html
+src.includes = epl-v10.html,\
+               license.html
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/epl-v10.html b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/epl-v10.html
new file mode 100644
index 0000000..cb1073a
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/epl-v10.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-font-pitch:variable;
+	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	}
+p.BalloonText, li.BalloonText, div.BalloonText
+	{mso-style-name:"Balloon Text";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:8.0pt;
+	
+	}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/feature.properties b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/feature.properties
new file mode 100644
index 0000000..6fced9e
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/feature.properties
@@ -0,0 +1,138 @@
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=Web of Things Thing Description JSON-LD Generator (Incubation)
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project 
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/feature.xml b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/feature.xml
new file mode 100644
index 0000000..4a1e832
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/feature.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.papyrus.iotml.wot.td.feature"
+      label="%featureName"
+      version="1.0.0.qualifier"
+      provider-name="%providerName">
+
+   <description url="https://eclipse.org/papyrus/">
+      Provide the capability to execute a subset of UML interactions
+   </description>
+
+   <copyright url="http://www.eclipse.org/legal/epl-v10.html">
+      Copyright (c) 2020 CEA
+All rights reserved.   This program and the accompanying materials
+are made available under the terms of the Eclipse Public License
+v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+Contributors:
+*  Shuai Li (CEA LIST) shuai.li@cea.fr - Initial API
+and implementation
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.papyrus.designer.languages.common.feature"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.papyrus.iotml.wot.td.codegen"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.papyrus.iotml.wot.td.codegen.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/license.html b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/license.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/pom.xml b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/pom.xml
new file mode 100644
index 0000000..3355cd3
--- /dev/null
+++ b/addons/wot/org.eclipse.papyrus.iotml.wot.td.feature/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<artifactId>org.eclipse.papyrus.iotml.addons.wot</artifactId>
+		<groupId>org.eclipse.papyrus.iotml</groupId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.iotml.wot.td.feature</artifactId>
+	<packaging>eclipse-feature</packaging>
+	<name>org.eclipse.papyrus.iotml.wot.td.feature</name>
+	<description>Papyrus IoT-ML WoT TD feature</description>
+</project>
\ No newline at end of file
diff --git a/addons/wot/pom.xml b/addons/wot/pom.xml
new file mode 100644
index 0000000..cd3408e
--- /dev/null
+++ b/addons/wot/pom.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<artifactId>org.eclipse.papyrus.iotml.addons</artifactId>
+		<groupId>org.eclipse.papyrus.iotml</groupId>
+		<version>1.0.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.iotml.addons.wot</artifactId>
+	<packaging>pom</packaging>
+
+	<modules>
+		<module>org.eclipse.papyrus.iotml.wot.td.codegen</module>
+		<module>org.eclipse.papyrus.iotml.wot.td.codegen.ui</module>
+		<module>org.eclipse.papyrus.iotml.wot.td.feature</module>
+		
+	</modules>
+	
+</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF b/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF
index 3ba4171..9ebce51 100644
--- a/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.iotml.profile/META-INF/MANIFEST.MF
@@ -71,7 +71,10 @@
  org.eclipse.uml2.uml.profile.standard;bundle-version="[1.0.100,2.0.0)";visibility:=reexport,
  org.eclipse.uml2.types;visibility:=reexport,
  org.eclipse.uml2.uml;visibility:=reexport,
- org.eclipse.uml2.uml.resources
+ org.eclipse.uml2.uml.resources,
+ com.fasterxml.jackson.core.jackson-annotations;bundle-version="[2.9.0, 3.0.0)",
+ com.fasterxml.jackson.core.jackson-core;bundle-version="[2.9.0, 3.0.0)",
+ com.fasterxml.jackson.core.jackson-databind;bundle-version="[2.9.0, 3.0.0)"
 Eclipse-LazyStart: true
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
index c8f8e3f..19e3a9c 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
-    copyrightText="Copyright (c) 2018 CEA&#xD;&#xA;&#xD;&#xA; All rights reserved. This program and the accompanying materials&#xD;&#xA; are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA; which accompanies this distribution, and is available at&#xD;&#xA; http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;&#xD;&#xA;Contributors:&#xD;&#xA;  Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation&#xD;&#xA;  Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation&#xD;&#xA;"
+    copyrightText="Copyright (c) 2018 CEA&#xA;&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License v1.0&#xA; which accompanies this distribution, and is available at&#xA; http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;  Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation&#xA;  Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation&#xA;  Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description&#xA;"
     modelDirectory="/org.eclipse.papyrus.iotml.profile/src-gen" modelPluginID="org.eclipse.papyrus.iotml.profile"
     modelName="IoT-ML" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
     importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
@@ -416,11 +416,15 @@
         <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SubProtocolKind/sse"/>
       </genEnums>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Thing">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Thing/title"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Thing/description"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Thing/base"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Thing/id"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Thing/support"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/security"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/securityDefinitions"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/links"/>
@@ -432,15 +436,19 @@
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/properties"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Thing/version"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/type"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/aType"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/context"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/aContext"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/forms"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/base_Class"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/SecurityScheme">
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/SecurityScheme/base_Classifier"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/SecurityScheme/title"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/SecurityScheme/description"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/SecurityScheme/scheme"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/SecurityScheme/proxy"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/SecurityScheme/in"/>
@@ -467,7 +475,7 @@
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/EventAffordance">
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/EventAffordance/base_Signal"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/EventAffordance/base_Reception"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/EventAffordance/data"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
@@ -476,10 +484,12 @@
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/EventAffordance/cancellation"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="iotml.ecore#//wot/InteractionAffordance">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/InteractionAffordance/title"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/InteractionAffordance/description"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/InteractionAffordance/forms"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/InteractionAffordance/type"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/InteractionAffordance/aType"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Form">
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/op"/>
@@ -490,6 +500,10 @@
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/subProtocol"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/scopes"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/response"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Form/security"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Form/base_Comment"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Type">
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Type/name"/>
@@ -497,12 +511,12 @@
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Type/base_Type"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/DataSchema">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/title"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/description"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/base_TypedElement"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/enum"/>
-        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/numberInterval"/>
+            propertySortChoices="true" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/enum"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/required"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
@@ -510,19 +524,25 @@
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/properties"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/type"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/aType"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/writeOnly"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/format"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/oneOf"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/type"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/const"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/minItems"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/maxItems"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataSchema/readOnly"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/ActionAffordance">
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/ActionAffordance/base_Operation"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/ActionAffordance/input"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/ActionAffordance/output"/>
-        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/ActionAffordance/base_BehavioralFeature"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/ActionAffordance/safe"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/ActionAffordance/idempotent"/>
       </genClasses>
diff --git a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.layers b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.layers
index cd019c4..29133be 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.layers
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.layers
@@ -104,4 +104,12 @@
     <layers xmi:type="layers:TopLayerOperator" xmi:id="_uHPvYTeSEeqyIeUo_DCO7w" application="_uDOyEDeSEeqyIeUo_DCO7w" name="Top Layer" isLayerEnabled="true" owningLayersStack="_uHPvYDeSEeqyIeUo_DCO7w" state="detached"/>
     <diagram xmi:type="notation:Diagram" href="platform:/plugin/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation#_01fKwCuNEemAOL1eRjr3BA"/>
   </layersStacks>
+  <layersStacks xmi:type="layers:LayersStack" xmi:id="_p4Ee4HNLEeqwz4k_vbCPDQ" state="detached">
+    <layers xmi:type="layers:TopLayerOperator" xmi:id="_p4Ee4XNLEeqwz4k_vbCPDQ" application="_uDOyEDeSEeqyIeUo_DCO7w" name="Top Layer" isLayerEnabled="true" owningLayersStack="_p4Ee4HNLEeqwz4k_vbCPDQ" state="detached"/>
+    <diagram xmi:type="notation:Diagram" href="platform:/plugin/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation#_Yse5cCtvEeeZI6rMTYV60w"/>
+  </layersStacks>
+  <layersStacks xmi:type="layers:LayersStack" xmi:id="_p4NBwHNLEeqwz4k_vbCPDQ" state="detached">
+    <layers xmi:type="layers:TopLayerOperator" xmi:id="_p4NBwXNLEeqwz4k_vbCPDQ" application="_uDOyEDeSEeqyIeUo_DCO7w" name="Top Layer" isLayerEnabled="true" owningLayersStack="_p4NBwHNLEeqwz4k_vbCPDQ" state="detached"/>
+    <diagram xmi:type="notation:Diagram" href="platform:/plugin/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation#_mYGYECtzEeeZI6rMTYV60w"/>
+  </layersStacks>
 </layers:LayersStackApplication>
diff --git a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
index f66e93c..7bdea70 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
@@ -4198,14 +4198,6 @@
       <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-_De8SuREemAOL1eRjr3BA" x="720" y="60"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_eB2wx3fSEemED9p17L-bjA" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_eB2wyHfSEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_eB2wynfSEemED9p17L-bjA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eB2wyXfSEemED9p17L-bjA" x="920" y="60"/>
-    </children>
     <children xmi:type="notation:Shape" xmi:id="_tbWIoHflEemED9p17L-bjA" type="Stereotype_Shape" fillColor="12632256">
       <children xmi:type="notation:DecorationNode" xmi:id="_tbWIonflEemED9p17L-bjA" type="Stereotype_NameLabel"/>
       <children xmi:type="notation:BasicCompartment" xmi:id="_tbWIo3flEemED9p17L-bjA" visible="false" type="Stereotype_AttributeCompartment">
@@ -4262,26 +4254,34 @@
       <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5OCzQXfoEemED9p17L-bjA" x="840" y="60"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_5OVHI3foEemED9p17L-bjA" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_5OVHJHfoEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_5OVHJnfoEemED9p17L-bjA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5OVHJXfoEemED9p17L-bjA" x="200"/>
-    </children>
     <children xmi:type="notation:Shape" xmi:id="_6-So4HfoEemED9p17L-bjA" type="Class_MetaclassShape">
       <children xmi:type="notation:DecorationNode" xmi:id="_6-So4nfoEemED9p17L-bjA" type="Class_MetaclassNameLabel"/>
       <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6-So4XfoEemED9p17L-bjA" x="960" y="60"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_6-e2I3foEemED9p17L-bjA" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_6-e2JHfoEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6-e2JnfoEemED9p17L-bjA" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="_ZyqPg3JkEeqvaKCRysa56A" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ZyqPhHJkEeqvaKCRysa56A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ZyqPhnJkEeqvaKCRysa56A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZyqPhXJkEeqvaKCRysa56A" x="920" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ZyqPqHJkEeqvaKCRysa56A" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ZyqPqXJkEeqvaKCRysa56A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Zy0AgHJkEeqvaKCRysa56A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZyqPqnJkEeqvaKCRysa56A" x="1040" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Zy0AmXJkEeqvaKCRysa56A" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_Zy0AmnJkEeqvaKCRysa56A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Zy0AnHJkEeqvaKCRysa56A" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6-e2JXfoEemED9p17L-bjA" x="200"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zy0Am3JkEeqvaKCRysa56A" x="1160" y="60"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_01fKwSuNEemAOL1eRjr3BA" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_01fKwiuNEemAOL1eRjr3BA"/>
@@ -4349,16 +4349,6 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RwIYUCuSEemAOL1eRjr3BA" id="(0.4,0.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RwIYUSuSEemAOL1eRjr3BA" id="(0.6,1.0)"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_eB2wy3fSEemED9p17L-bjA" type="StereotypeCommentLink" source="_-_De8CuREemAOL1eRjr3BA" target="_eB2wx3fSEemED9p17L-bjA">
-      <styles xmi:type="notation:FontStyle" xmi:id="_eB2wzHfSEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_eB2w0HfSEemED9p17L-bjA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eB2wzXfSEemED9p17L-bjA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eB2wznfSEemED9p17L-bjA"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eB2wz3fSEemED9p17L-bjA"/>
-    </edges>
     <edges xmi:type="notation:Connector" xmi:id="_ZqMHwHfkEemED9p17L-bjA" type="Generalization_Edge" source="_buX1ACuQEemAOL1eRjr3BA" target="_Gdg78CuPEemAOL1eRjr3BA">
       <children xmi:type="notation:DecorationNode" xmi:id="_ZqSOYHfkEemED9p17L-bjA" type="Generalization_StereotypeLabel">
         <styles xmi:type="notation:BooleanValueStyle" xmi:id="_bIXV8HfkEemED9p17L-bjA" name="IS_UPDATED_POSITION" booleanValue="true"/>
@@ -4402,16 +4392,6 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vM7bAHflEemED9p17L-bjA" id="(0.4,0.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vM7bAXflEemED9p17L-bjA" id="(0.4,1.0)"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_5OVHJ3foEemED9p17L-bjA" type="StereotypeCommentLink" source="_5OCzQHfoEemED9p17L-bjA" target="_5OVHI3foEemED9p17L-bjA">
-      <styles xmi:type="notation:FontStyle" xmi:id="_5OVHKHfoEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_5OVHLHfoEemED9p17L-bjA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5OVHKXfoEemED9p17L-bjA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5OVHKnfoEemED9p17L-bjA"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5OVHK3foEemED9p17L-bjA"/>
-    </edges>
     <edges xmi:type="notation:Connector" xmi:id="_6ANQAHfoEemED9p17L-bjA" type="Extension_Edge" source="_kYhyYHfnEemED9p17L-bjA" target="_5OCzQHfoEemED9p17L-bjA">
       <styles xmi:type="notation:FontStyle" xmi:id="_6ANQAXfoEemED9p17L-bjA"/>
       <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_5_cbAHfoEemED9p17L-bjA"/>
@@ -4419,16 +4399,6 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6AlqgHfoEemED9p17L-bjA" id="(0.6,0.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6AlqgXfoEemED9p17L-bjA" id="(0.6,0.9920000000000002)"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_6-e2J3foEemED9p17L-bjA" type="StereotypeCommentLink" source="_6-So4HfoEemED9p17L-bjA" target="_6-e2I3foEemED9p17L-bjA">
-      <styles xmi:type="notation:FontStyle" xmi:id="_6-e2KHfoEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6-e2LHfoEemED9p17L-bjA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6-e2KXfoEemED9p17L-bjA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6-e2KnfoEemED9p17L-bjA"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6-e2K3foEemED9p17L-bjA"/>
-    </edges>
     <edges xmi:type="notation:Connector" xmi:id="_72RZwHfoEemED9p17L-bjA" type="Extension_Edge" source="_lHi0gHfnEemED9p17L-bjA" target="_6-So4HfoEemED9p17L-bjA">
       <styles xmi:type="notation:FontStyle" xmi:id="_72RZwXfoEemED9p17L-bjA"/>
       <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_71y4oHfoEemED9p17L-bjA"/>
@@ -4436,6 +4406,36 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_72p0QHfoEemED9p17L-bjA" id="(0.6,0.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_72p0QXfoEemED9p17L-bjA" id="(0.6,0.9920000000000002)"/>
     </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ZyqPh3JkEeqvaKCRysa56A" type="StereotypeCommentLink" source="_-_De8CuREemAOL1eRjr3BA" target="_ZyqPg3JkEeqvaKCRysa56A">
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZyqPiHJkEeqvaKCRysa56A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ZyqPjHJkEeqvaKCRysa56A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZyqPiXJkEeqvaKCRysa56A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyqPinJkEeqvaKCRysa56A"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyqPi3JkEeqvaKCRysa56A"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Zy0AgXJkEeqvaKCRysa56A" type="StereotypeCommentLink" source="_5OCzQHfoEemED9p17L-bjA" target="_ZyqPqHJkEeqvaKCRysa56A">
+      <styles xmi:type="notation:FontStyle" xmi:id="_Zy0AgnJkEeqvaKCRysa56A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Zy0AhnJkEeqvaKCRysa56A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Zy0Ag3JkEeqvaKCRysa56A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zy0AhHJkEeqvaKCRysa56A"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zy0AhXJkEeqvaKCRysa56A"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Zy0AnXJkEeqvaKCRysa56A" type="StereotypeCommentLink" source="_6-So4HfoEemED9p17L-bjA" target="_Zy0AmXJkEeqvaKCRysa56A">
+      <styles xmi:type="notation:FontStyle" xmi:id="_Zy0AnnJkEeqvaKCRysa56A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Zy0AonJkEeqvaKCRysa56A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Zy0An3JkEeqvaKCRysa56A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zy0AoHJkEeqvaKCRysa56A"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zy0AoXJkEeqvaKCRysa56A"/>
+    </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_lrvRgEZ1Eemjs4KMC2ChPg" type="PapyrusUMLProfileDiagram" name="WoT-Stereotypes" measurementUnit="Pixel">
     <children xmi:type="notation:Shape" xmi:id="_npmsYEZ1Eemjs4KMC2ChPg" type="Stereotype_Shape">
@@ -5584,6 +5584,31 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Z0zAD6uEeqAfKdldzYc-w" id="(0.3614457831325301,1.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Z0zAT6uEeqAfKdldzYc-w" id="(1.0,0.46153846153846156)"/>
     </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_-l1cYHJkEeqvaKCRysa56A" type="Association_Edge" source="_npmsYEZ1Eemjs4KMC2ChPg" target="_GdG10UZ2Eemjs4KMC2ChPg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-l1cY3JkEeqvaKCRysa56A" type="Association_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-l1cZHJkEeqvaKCRysa56A" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-l1cZXJkEeqvaKCRysa56A" type="Association_NameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-l1cZnJkEeqvaKCRysa56A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-l1cZ3JkEeqvaKCRysa56A" type="Association_TargetRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-l1caHJkEeqvaKCRysa56A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-l1caXJkEeqvaKCRysa56A" type="Association_SourceRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-l1canJkEeqvaKCRysa56A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-l1ca3JkEeqvaKCRysa56A" type="Association_SourceMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-l1cbHJkEeqvaKCRysa56A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-l1cbXJkEeqvaKCRysa56A" type="Association_TargetMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-l1cbnJkEeqvaKCRysa56A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_-l1cYXJkEeqvaKCRysa56A"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_-lF1gHJkEeqvaKCRysa56A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-l1cYnJkEeqvaKCRysa56A" points="[346, 200, -643984, -643984]$[540, 200, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-nBvMHJkEeqvaKCRysa56A" id="(1.0,0.6802721088435374)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-nBvMXJkEeqvaKCRysa56A" id="(0.0,0.6334841628959276)"/>
+    </edges>
   </notation:Diagram>
   <notation:Diagram xmi:id="_7AcL8EZ6Eemjs4KMC2ChPg" type="PapyrusUMLProfileDiagram" name="WoT-Extensions" measurementUnit="Pixel">
     <children xmi:type="notation:Shape" xmi:id="_O1vY8FbCEemms65MbAzNPw" type="Stereotype_Shape">
@@ -5722,33 +5747,6 @@
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Pd7WEEZ2Eemjs4KMC2ChPg"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M1dhQVbYEemms65MbAzNPw" x="180" y="200"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_HaXSkHfqEemED9p17L-bjA" type="Stereotype_Shape" fillColor="12632256">
-      <children xmi:type="notation:DecorationNode" xmi:id="_HadZMHfqEemED9p17L-bjA" type="Stereotype_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_HadZMXfqEemED9p17L-bjA" visible="false" type="Stereotype_AttributeCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_HadZMnfqEemED9p17L-bjA"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_HadZM3fqEemED9p17L-bjA"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_HadZNHfqEemED9p17L-bjA"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HadZNXfqEemED9p17L-bjA"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_HadZNnfqEemED9p17L-bjA" visible="false" type="Stereotype_OperationCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_HadZN3fqEemED9p17L-bjA"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_HadZOHfqEemED9p17L-bjA"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_HadZOXfqEemED9p17L-bjA"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HadZOnfqEemED9p17L-bjA"/>
-      </children>
-      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_mxPqICtuEeeZI6rMTYV60w"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HaXSkXfqEemED9p17L-bjA" x="20" y="40"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_Bvg5AHuiEemSm8y_ktEBHQ" type="Class_MetaclassShape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_BvqqAHuiEemSm8y_ktEBHQ" type="Class_MetaclassNameLabel"/>
-      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Signal"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bvg5AXuiEemSm8y_ktEBHQ" x="940" y="40"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_P264kHuiEemSm8y_ktEBHQ" type="Class_MetaclassShape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_P264knuiEemSm8y_ktEBHQ" type="Class_MetaclassNameLabel"/>
-      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#BehavioralFeature"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P264kXuiEemSm8y_ktEBHQ" x="780" y="40"/>
-    </children>
     <children xmi:type="notation:Shape" xmi:id="_F2O48HuxEemSm8y_ktEBHQ" type="Class_MetaclassShape">
       <children xmi:type="notation:DecorationNode" xmi:id="_F2O48nuxEemSm8y_ktEBHQ" type="Class_MetaclassNameLabel"/>
       <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
@@ -5759,23 +5757,6 @@
       <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EZYD8XuyEemSm8y_ktEBHQ" x="480" y="40"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="__5GZ4Hu1EemSm8y_ktEBHQ" type="Stereotype_Shape" fillColor="12632256">
-      <children xmi:type="notation:DecorationNode" xmi:id="__5GZ4nu1EemSm8y_ktEBHQ" type="Stereotype_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="__5GZ43u1EemSm8y_ktEBHQ" visible="false" type="Stereotype_AttributeCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="__5GZ5Hu1EemSm8y_ktEBHQ"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="__5GZ5Xu1EemSm8y_ktEBHQ"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="__5GZ5nu1EemSm8y_ktEBHQ"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__5GZ53u1EemSm8y_ktEBHQ"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="__5GZ6Hu1EemSm8y_ktEBHQ" visible="false" type="Stereotype_OperationCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="__5GZ6Xu1EemSm8y_ktEBHQ"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="__5GZ6nu1EemSm8y_ktEBHQ"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="__5GZ63u1EemSm8y_ktEBHQ"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__5GZ7Hu1EemSm8y_ktEBHQ"/>
-      </children>
-      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_rm64QCtxEeeZI6rMTYV60w"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__5GZ4Xu1EemSm8y_ktEBHQ" x="160" y="40"/>
-    </children>
     <children xmi:type="notation:Shape" xmi:id="_D01eEDuBEeqRdYL4l4j83w" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_D01eEjuBEeqRdYL4l4j83w" type="Stereotype_NameLabel"/>
       <children xmi:type="notation:BasicCompartment" xmi:id="_D01eEzuBEeqRdYL4l4j83w" type="Stereotype_AttributeCompartment">
@@ -5842,61 +5823,97 @@
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Ik8FAEZ2Eemjs4KMC2ChPg"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VUg6kT6uEeqAfKdldzYc-w" x="860" y="380"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9Wq9MD60EeqbWfODvTKHTw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9Wq9MT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9Wq9Mz60EeqbWfODvTKHTw" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Signal"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Wq9Mj60EeqbWfODvTKHTw" x="1140" y="40"/>
+    <children xmi:type="notation:Shape" xmi:id="_-gPHsHKFEeqvaKCRysa56A" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-gPHsnKFEeqvaKCRysa56A" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-gPHsXKFEeqvaKCRysa56A" x="800" y="40"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9W0uMD60EeqbWfODvTKHTw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9W0uMT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9W0uMz60EeqbWfODvTKHTw" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#BehavioralFeature"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9W0uMj60EeqbWfODvTKHTw" x="980" y="40"/>
+    <children xmi:type="notation:Shape" xmi:id="_-MhFAHKGEeqvaKCRysa56A" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-MhFAnKGEeqvaKCRysa56A" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Reception"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-MhFAXKGEeqvaKCRysa56A" x="960" y="40"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9W8C8D60EeqbWfODvTKHTw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9W8C8T60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9W8C8z60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="_QMLH0HOgEeqQkfqnZhbFqQ" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QMLH0nOgEeqQkfqnZhbFqQ" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Comment"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QMLH0XOgEeqQkfqnZhbFqQ" x="180" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nFFZR3OgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nFFZSHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFFZSnOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9W8C8j60EeqbWfODvTKHTw" x="820" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nFFZSXOgEeqQkfqnZhbFqQ" x="820" y="40"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9XCwoz60EeqbWfODvTKHTw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9XCwpD60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XCwpj60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="_nFPKR3OgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nFPKSHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFPKSnOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9XCwpT60EeqbWfODvTKHTw" x="680" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nFPKSXOgEeqQkfqnZhbFqQ" x="680" y="40"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9XNvwD60EeqbWfODvTKHTw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9XNvwT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XNvwz60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="_nFYUPXOgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nFYUPnOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFYUQHOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9XNvwj60EeqbWfODvTKHTw" x="1400" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nFYUP3OgEeqQkfqnZhbFqQ" x="1400" y="40"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9XVEgD60EeqbWfODvTKHTw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9XVEgT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XVEgz60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="_nFrPI3OgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nFrPJHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFrPJnOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Namespace"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9XVEgj60EeqbWfODvTKHTw" x="1540" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nFrPJXOgEeqQkfqnZhbFqQ" x="1540" y="40"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_9XcZQD60EeqbWfODvTKHTw" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_9XcZQT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XcZQz60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <children xmi:type="notation:Shape" xmi:id="_nF1AJ3OgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nF1AKHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nF1AKnOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
       </styles>
       <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9XcZQj60EeqbWfODvTKHTw" x="540" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nF1AKXOgEeqQkfqnZhbFqQ" x="540" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nF-xKnOgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nF-xK3OgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nF-xLXOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nF-xLHOgEeqQkfqnZhbFqQ" x="1000" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nGH7GnOgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nGH7G3OgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nGH7HXOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Reception"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nGH7HHOgEeqQkfqnZhbFqQ" x="1160" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nGknA3OgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_nGknBHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nGknBnOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Comment"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nGknBXOgEeqQkfqnZhbFqQ" x="380" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_v2bTEHOgEeqQkfqnZhbFqQ" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_v2bTEnOgEeqQkfqnZhbFqQ" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v2bTEXOgEeqQkfqnZhbFqQ" x="20" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_v2lEGnOgEeqQkfqnZhbFqQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_v2lEG3OgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_v2lEHXOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v2lEHHOgEeqQkfqnZhbFqQ" x="200"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_7AcL8UZ6Eemjs4KMC2ChPg" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_7AcL8kZ6Eemjs4KMC2ChPg"/>
@@ -5904,23 +5921,6 @@
       <owner xmi:type="uml:Package" href="IoT-ML.profile.uml#_aARI4EZ1Eemjs4KMC2ChPg"/>
     </styles>
     <element xmi:type="uml:Package" href="IoT-ML.profile.uml#_aARI4EZ1Eemjs4KMC2ChPg"/>
-    <edges xmi:type="notation:Connector" xmi:id="_M9JlsHfqEemED9p17L-bjA" type="Generalization_Edge" source="_O1vY8FbCEemms65MbAzNPw" target="_HaXSkHfqEemED9p17L-bjA">
-      <children xmi:type="notation:DecorationNode" xmi:id="_M9Jls3fqEemED9p17L-bjA" type="Generalization_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_M9JltHfqEemED9p17L-bjA" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_M9JlsXfqEemED9p17L-bjA"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_M1bNEHfqEemED9p17L-bjA"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_M9JlsnfqEemED9p17L-bjA" points="[60, 200, -643984, -643984]$[60, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M9iAMHfqEemED9p17L-bjA" id="(0.4,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M9iAMXfqEemED9p17L-bjA" id="(0.4,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_QzTBQHuiEemSm8y_ktEBHQ" type="Extension_Edge" source="__dF-gFbCEemms65MbAzNPw" target="_P264kHuiEemSm8y_ktEBHQ">
-      <styles xmi:type="notation:FontStyle" xmi:id="_QzTBQXuiEemSm8y_ktEBHQ"/>
-      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_QtDPUHuiEemSm8y_ktEBHQ"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QzTBQnuiEemSm8y_ktEBHQ" points="[840, 200, -643984, -643984]$[840, 90, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qzl8MHuiEemSm8y_ktEBHQ" id="(0.4,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qzl8MXuiEemSm8y_ktEBHQ" id="(0.5,1.0)"/>
-    </edges>
     <edges xmi:type="notation:Connector" xmi:id="_HXX7kHuxEemSm8y_ktEBHQ" type="Extension_Edge" source="_tsgFMFbXEemms65MbAzNPw" target="_F2O48HuxEemSm8y_ktEBHQ">
       <styles xmi:type="notation:FontStyle" xmi:id="_HXX7kXuxEemSm8y_ktEBHQ"/>
       <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_HKSh0HuxEemSm8y_ktEBHQ"/>
@@ -5935,24 +5935,6 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZUR7IHuzEemSm8y_ktEBHQ" id="(0.44554455445544555,0.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZUR7IXuzEemSm8y_ktEBHQ" id="(0.6,1.0)"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_vBegAHu2EemSm8y_ktEBHQ" type="Generalization_Edge" source="_M1dhQFbYEemms65MbAzNPw" target="__5GZ4Hu1EemSm8y_ktEBHQ">
-      <children xmi:type="notation:DecorationNode" xmi:id="_vBegA3u2EemSm8y_ktEBHQ" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AXUxgHu3EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_vBegBHu2EemSm8y_ktEBHQ" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_vBegAXu2EemSm8y_ktEBHQ"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_u13s8Hu2EemSm8y_ktEBHQ"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vBegAnu2EemSm8y_ktEBHQ" points="[240, 200, -643984, -643984]$[240, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vBxa8Hu2EemSm8y_ktEBHQ" id="(0.6,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vBxa8Xu2EemSm8y_ktEBHQ" id="(0.5797101449275363,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_rTrRMHu5EemSm8y_ktEBHQ" type="Extension_Edge" source="_J73qgFbDEemms65MbAzNPw" target="_Bvg5AHuiEemSm8y_ktEBHQ">
-      <styles xmi:type="notation:FontStyle" xmi:id="_rTrRMXu5EemSm8y_ktEBHQ"/>
-      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_rSovYHu5EemSm8y_ktEBHQ"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rTrRMnu5EemSm8y_ktEBHQ" points="[1000, 200, -643984, -643984]$[1000, 90, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rURuIHu5EemSm8y_ktEBHQ" id="(0.4,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rURuIXu5EemSm8y_ktEBHQ" id="(0.6,1.0)"/>
-    </edges>
     <edges xmi:type="notation:Connector" xmi:id="_QH8GYHu-EemSm8y_ktEBHQ" type="Generalization_Edge" source="_2o3IwFbCEemms65MbAzNPw" target="_tsgFMFbXEemms65MbAzNPw">
       <children xmi:type="notation:DecorationNode" xmi:id="_QH8GY3u-EemSm8y_ktEBHQ" type="Generalization_StereotypeLabel">
         <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LQTOMD6vEeqAfKdldzYc-w" name="IS_UPDATED_POSITION" booleanValue="true"/>
@@ -6009,75 +5991,123 @@
       <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_a1cecFa9EemBYs5-fDI8uw"/>
       <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RYQq8j6vEeqAfKdldzYc-w" points="[775, 430, -643984, -643984]$[860, 430, -643984, -643984]"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_9WrkQD60EeqbWfODvTKHTw" type="StereotypeCommentLink" source="_Bvg5AHuiEemSm8y_ktEBHQ" target="_9Wq9MD60EeqbWfODvTKHTw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9WrkQT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9WrkRT60EeqbWfODvTKHTw" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Signal"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9WrkQj60EeqbWfODvTKHTw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9WrkQz60EeqbWfODvTKHTw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9WrkRD60EeqbWfODvTKHTw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_0sGesHKGEeqvaKCRysa56A" type="Extension_Edge" source="__dF-gFbCEemms65MbAzNPw" target="_-gPHsHKFEeqvaKCRysa56A">
+      <styles xmi:type="notation:FontStyle" xmi:id="_0sGesXKGEeqvaKCRysa56A"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_0rWQwHKGEeqvaKCRysa56A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0sGesnKGEeqvaKCRysa56A" points="[860, 200, -643984, -643984]$[860, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0sZZoHKGEeqvaKCRysa56A" id="(0.5,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0sZZoXKGEeqvaKCRysa56A" id="(0.6,1.0)"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_9W0uND60EeqbWfODvTKHTw" type="StereotypeCommentLink" source="_P264kHuiEemSm8y_ktEBHQ" target="_9W0uMD60EeqbWfODvTKHTw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9W0uNT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9W0uOT60EeqbWfODvTKHTw" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#BehavioralFeature"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9W0uNj60EeqbWfODvTKHTw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9W0uNz60EeqbWfODvTKHTw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9W0uOD60EeqbWfODvTKHTw"/>
+    <edges xmi:type="notation:Connector" xmi:id="__kasEHKGEeqvaKCRysa56A" type="Extension_Edge" source="_J73qgFbDEemms65MbAzNPw" target="_-MhFAHKGEeqvaKCRysa56A">
+      <styles xmi:type="notation:FontStyle" xmi:id="__kasEXKGEeqvaKCRysa56A"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#__jhUMHKGEeqvaKCRysa56A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__kasEnKGEeqvaKCRysa56A" points="[1000, 200, -643984, -643984]$[1000, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__lAh8HKGEeqvaKCRysa56A" id="(0.3418803418803419,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__lAh8XKGEeqvaKCRysa56A" id="(0.4,1.0)"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_9W8C9D60EeqbWfODvTKHTw" type="StereotypeCommentLink" source="_F2O48HuxEemSm8y_ktEBHQ" target="_9W8C8D60EeqbWfODvTKHTw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9W8C9T60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9W8C-T60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="_RFrisHOgEeqQkfqnZhbFqQ" type="Extension_Edge" source="_M1dhQFbYEemms65MbAzNPw" target="_QMLH0HOgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_RFrisXOgEeqQkfqnZhbFqQ"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_REyK0HOgEeqQkfqnZhbFqQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RFrisnOgEeqQkfqnZhbFqQ" points="[240, 200, -643984, -643984]$[240, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RGIOoHOgEeqQkfqnZhbFqQ" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RGIOoXOgEeqQkfqnZhbFqQ" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_nFFZS3OgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_F2O48HuxEemSm8y_ktEBHQ" target="_nFFZR3OgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nFFZTHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFFZUHOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9W8C9j60EeqbWfODvTKHTw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9W8C9z60EeqbWfODvTKHTw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9W8C-D60EeqbWfODvTKHTw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nFFZTXOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFFZTnOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFFZT3OgEeqQkfqnZhbFqQ"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_9XCwpz60EeqbWfODvTKHTw" type="StereotypeCommentLink" source="_EZYD8HuyEemSm8y_ktEBHQ" target="_9XCwoz60EeqbWfODvTKHTw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9XCwqD60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XDXsj60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="_nFPKS3OgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_EZYD8HuyEemSm8y_ktEBHQ" target="_nFPKR3OgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nFPKTHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFPKUHOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9XCwqT60EeqbWfODvTKHTw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XDXsD60EeqbWfODvTKHTw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XDXsT60EeqbWfODvTKHTw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nFPKTXOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFPKTnOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFPKT3OgEeqQkfqnZhbFqQ"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_9XNvxD60EeqbWfODvTKHTw" type="StereotypeCommentLink" source="_cJfUwDuBEeqRdYL4l4j83w" target="_9XNvwD60EeqbWfODvTKHTw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9XNvxT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XNvyT60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="_nFYUQXOgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_cJfUwDuBEeqRdYL4l4j83w" target="_nFYUPXOgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nFYUQnOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFYURnOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9XNvxj60EeqbWfODvTKHTw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XNvxz60EeqbWfODvTKHTw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XNvyD60EeqbWfODvTKHTw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nFYUQ3OgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFYURHOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFYURXOgEeqQkfqnZhbFqQ"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_9XVEhD60EeqbWfODvTKHTw" type="StereotypeCommentLink" source="_lm7fkDuBEeqRdYL4l4j83w" target="_9XVEgD60EeqbWfODvTKHTw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9XVEhT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XVEiT60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="_nFrPJ3OgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_lm7fkDuBEeqRdYL4l4j83w" target="_nFrPI3OgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nFrPKHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nFrPLHOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Namespace"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9XVEhj60EeqbWfODvTKHTw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XVEhz60EeqbWfODvTKHTw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XVEiD60EeqbWfODvTKHTw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nFrPKXOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFrPKnOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nFrPK3OgEeqQkfqnZhbFqQ"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_9XcZRD60EeqbWfODvTKHTw" type="StereotypeCommentLink" source="_G6n5UD6tEeqAfKdldzYc-w" target="_9XcZQD60EeqbWfODvTKHTw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_9XcZRT60EeqbWfODvTKHTw"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_9XdAUD60EeqbWfODvTKHTw" name="BASE_ELEMENT">
+    <edges xmi:type="notation:Connector" xmi:id="_nF1AK3OgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_G6n5UD6tEeqAfKdldzYc-w" target="_nF1AJ3OgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nF1ALHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nF1AMHOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
         <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
       </styles>
       <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9XcZRj60EeqbWfODvTKHTw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XcZRz60EeqbWfODvTKHTw"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9XcZSD60EeqbWfODvTKHTw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nF1ALXOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nF1ALnOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nF1AL3OgEeqQkfqnZhbFqQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_nF-xLnOgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_-gPHsHKFEeqvaKCRysa56A" target="_nF-xKnOgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nF-xL3OgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nF-xM3OgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nF-xMHOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nF-xMXOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nF-xMnOgEeqQkfqnZhbFqQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_nGH7HnOgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_-MhFAHKGEeqvaKCRysa56A" target="_nGH7GnOgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nGH7H3OgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nGRsEXOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Reception"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nGH7IHOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nGH7IXOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nGRsEHOgEeqQkfqnZhbFqQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_nGknB3OgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_QMLH0HOgEeqQkfqnZhbFqQ" target="_nGknA3OgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nGknCHOgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_nGknDHOgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Comment"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nGknCXOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nGknCnOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nGknC3OgEeqQkfqnZhbFqQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_v2lEHnOgEeqQkfqnZhbFqQ" type="StereotypeCommentLink" source="_v2bTEHOgEeqQkfqnZhbFqQ" target="_v2lEGnOgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_v2lEH3OgEeqQkfqnZhbFqQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_v2lEI3OgEeqQkfqnZhbFqQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v2lEIHOgEeqQkfqnZhbFqQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v2lEIXOgEeqQkfqnZhbFqQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v2lEInOgEeqQkfqnZhbFqQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ww1F0HOgEeqQkfqnZhbFqQ" type="Extension_Edge" source="_O1vY8FbCEemms65MbAzNPw" target="_v2bTEHOgEeqQkfqnZhbFqQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_ww1F0XOgEeqQkfqnZhbFqQ"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_wwrU0HOgEeqQkfqnZhbFqQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ww1F0nOgEeqQkfqnZhbFqQ" points="[60, 200, -643984, -643984]$[60, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wxRxwHOgEeqQkfqnZhbFqQ" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wxRxwXOgEeqQkfqnZhbFqQ" id="(0.4,1.0)"/>
     </edges>
   </notation:Diagram>
 </xmi:XMI>
diff --git a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
index 72bf44f..7953a4c 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
@@ -830,17 +830,19 @@
     </packagedElement>
     <packagedElement xmi:type="uml:Package" xmi:id="_aARI4EZ1Eemjs4KMC2ChPg" name="WoT">
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_npc7YEZ1Eemjs4KMC2ChPg" name="Thing">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_auHDUFetEemhlNDbySlnYA">
-          <body>&quot;title&quot; is UML::NamedElement::name</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_dnaywFetEemhlNDbySlnYA">
-          <body>&quot;description&quot; is a Comment attached to the Class on which &lt;&lt;Thing>> is applied.&#xD;
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_zfNT8HJpEeqvaKCRysa56A" name="title" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_auHDUFetEemhlNDbySlnYA">
+            <body>&quot;title&quot; is UML::NamedElement::name</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_2vpJ8HJpEeqvaKCRysa56A" name="description" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_dnaywFetEemhlNDbySlnYA">
+            <body>&quot;description&quot; is a Comment attached to the Class on which &lt;&lt;Thing>> is applied.&#xD;
 &quot;descriptions&quot; is several Comments attached to the Class on which &lt;&lt;Thing>> is applied.</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_ospvwD61EeqbWfODvTKHTw">
-          <body>&quot;security&quot; is derived from &quot;securityDefinition&quot;. Therefore we cannot have securityDefinitions that are not active in security.</body>
-        </ownedComment>
-        <generalization xmi:type="uml:Generalization" xmi:id="_M1bNEHfqEemED9p17L-bjA" general="_mxPqICtuEeeZI6rMTYV60w"/>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_vXKfIDeSEeqyIeUo_DCO7w" name="base">
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vXKfITeSEeqyIeUo_DCO7w"/>
@@ -855,33 +857,48 @@
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rhKfwFa7EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rhVe4Fa7EemBYs5-fDI8uw" value="1"/>
         </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_-lF1g3JkEeqvaKCRysa56A" name="security" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_-lF1gHJkEeqvaKCRysa56A">
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DNQTcHJlEeqvaKCRysa56A" value="*"/>
+        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_f_pH4Fa8EemBYs5-fDI8uw" name="securityDefinitions" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_f_jBQFa8EemBYs5-fDI8uw">
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m4LtAFa8EemBYs5-fDI8uw" value="*"/>
         </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_0AhcQVa8EemBYs5-fDI8uw" name="links" type="_QWwbgEZ2Eemjs4KMC2ChPg" isDerived="true" association="_0AgOIFa8EemBYs5-fDI8uw">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_74kyoHJpEeqvaKCRysa56A">
+            <body>&quot;links&quot; is derived from the associations for which the Thing is a source.</body>
+          </ownedComment>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3v1moFa8EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3wIhkFa8EemBYs5-fDI8uw" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_8yTa8Fa8EemBYs5-fDI8uw" name="events" type="_LxXkwEZ2Eemjs4KMC2ChPg" association="_8yRlwFa8EemBYs5-fDI8uw">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_8yTa8Fa8EemBYs5-fDI8uw" name="events" type="_LxXkwEZ2Eemjs4KMC2ChPg" isDerived="true" association="_8yRlwFa8EemBYs5-fDI8uw">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_A5gV4HJqEeqvaKCRysa56A">
+            <body>&quot;events&quot; is derived from the signals, stereotyped &lt;&lt;EventAffordance>>, referenced by the triggers of the state machines acting as classifier behavior of &lt;&lt;Thing>>.</body>
+          </ownedComment>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9HYa0HuiEemSm8y_ktEBHQ"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9HiL0HuiEemSm8y_ktEBHQ" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_HCG20la9EemBYs5-fDI8uw" name="actions" type="_LLR1IEZ2Eemjs4KMC2ChPg" association="_HCFosFa9EemBYs5-fDI8uw">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_HCG20la9EemBYs5-fDI8uw" name="actions" type="_LLR1IEZ2Eemjs4KMC2ChPg" isDerived="true" association="_HCFosFa9EemBYs5-fDI8uw">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_Je7TkHJqEeqvaKCRysa56A">
+            <body>&quot;actions&quot; is derived from the Operations of &lt;&lt;Thing>> stereotyped &lt;&lt;ActionAffordance>>.</body>
+          </ownedComment>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7mi6MHuiEemSm8y_ktEBHQ"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7m11IHuiEemSm8y_ktEBHQ" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_S27vwFa9EemBYs5-fDI8uw" name="properties" type="_JrT3MEZ2Eemjs4KMC2ChPg" association="_S26hoFa9EemBYs5-fDI8uw">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_S27vwFa9EemBYs5-fDI8uw" name="properties" type="_JrT3MEZ2Eemjs4KMC2ChPg" isDerived="true" association="_S26hoFa9EemBYs5-fDI8uw">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_M1TZgHJqEeqvaKCRysa56A">
+            <body>&quot;properties&quot; is derived from the Properties of &lt;&lt;Thing>> stereotyped &lt;&lt;PropertyAffordance>>.</body>
+          </ownedComment>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYUqAFa9EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYiscFa9EemBYs5-fDI8uw" value="*"/>
         </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_yIsMcDuAEeqRdYL4l4j83w" name="version">
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_JPzR8DuBEeqRdYL4l4j83w" name="type" type="_nTmsgDtwEeqRdYL4l4j83w" association="_JPpg8DuBEeqRdYL4l4j83w">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_JPzR8DuBEeqRdYL4l4j83w" name="aType" type="_nTmsgDtwEeqRdYL4l4j83w" association="_JPpg8DuBEeqRdYL4l4j83w">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J8Dk4D37EeqaztyFqSGQbA"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J8JrgD37EeqaztyFqSGQbA" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_NnuUczuBEeqRdYL4l4j83w" name="context" type="_CRpAQDtxEeqRdYL4l4j83w" association="_NnuUcDuBEeqRdYL4l4j83w">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_NnuUczuBEeqRdYL4l4j83w" name="aContext" type="_CRpAQDtxEeqRdYL4l4j83w" association="_NnuUcDuBEeqRdYL4l4j83w">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KT5dID37EeqaztyFqSGQbA"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KT9HgD37EeqaztyFqSGQbA" value="*"/>
         </ownedAttribute>
@@ -889,18 +906,29 @@
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ILUgsDuCEeqRdYL4l4j83w"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ILeRsDuCEeqRdYL4l4j83w" value="*"/>
         </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_wwrU0nOgEeqQkfqnZhbFqQ" name="base_Class" association="_wwrU0HOgEeqQkfqnZhbFqQ">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wwrU03OgEeqQkfqnZhbFqQ"/>
+        </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_GdG10EZ2Eemjs4KMC2ChPg" name="SecurityScheme">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_D_7xkHukEemSm8y_ktEBHQ">
-          <body>&quot;description&quot; is a Comment attached to the Classifier on which &lt;&lt;SecurityScheme>> is applied.</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_HkkSYD6mEeqAfKdldzYc-w">
-          <body>&quot;name&quot; is UML::NamedElement::name</body>
-        </ownedComment>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_ZH7hMnuzEemSm8y_ktEBHQ" name="base_Classifier" association="_ZH7hMHuzEemSm8y_ktEBHQ">
           <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZH7hM3uzEemSm8y_ktEBHQ"/>
         </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_iyd0YHJqEeqvaKCRysa56A" name="title" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_iyd0YXJqEeqvaKCRysa56A">
+            <body>&quot;title&quot; is UML::NamedElement::name</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_iynlYHJqEeqvaKCRysa56A" name="description" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_iynlYXJqEeqvaKCRysa56A">
+            <body>&quot;description&quot; is a Comment attached to the Class on which &lt;&lt;SecurityScheme>> is applied.&#xD;
+&quot;descriptions&quot; is several Comments attached to the Class on which &lt;&lt;SecurityScheme>> is applied.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_HnGuUEZ3Eemjs4KMC2ChPg" name="scheme" type="_P5y7gHukEemSm8y_ktEBHQ"/>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_bjSuMHukEemSm8y_ktEBHQ" name="proxy" association="_bjJkQHukEemSm8y_ktEBHQ">
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
@@ -946,17 +974,23 @@
         <ownedAttribute xmi:type="uml:Property" xmi:id="_SezD8D6pEeqAfKdldzYc-w" name="flow" type="_zUGtED6pEeqAfKdldzYc-w"/>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_Ik8FAEZ2Eemjs4KMC2ChPg" name="InteractionAffordance" isAbstract="true">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_jmMAwD37EeqaztyFqSGQbA">
-          <body>&quot;title&quot; is UML::NamedElement::name</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_lWqswHukEemSm8y_ktEBHQ">
-          <body>&quot;description&quot; is a Comment attached to the XXX on which &lt;&lt;IP>> is applied.</body>
-        </ownedComment>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_EdgysHJrEeqvaKCRysa56A" name="title" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_EdgysXJrEeqvaKCRysa56A">
+            <body>&quot;title&quot; is UML::NamedElement::name</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_EdgysnJrEeqvaKCRysa56A" name="description" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_lWqswHukEemSm8y_ktEBHQ">
+            <body>&quot;description&quot; is a Comment attached to the XXX on which &lt;&lt;InteractionAffordance>> is applied.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_MN9bMFa-EemBYs5-fDI8uw" name="forms" type="_Pd7WEEZ2Eemjs4KMC2ChPg" association="_MN7mAFa-EemBYs5-fDI8uw">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NqdOYFa-EemBYs5-fDI8uw" value="1"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Nqse8Fa-EemBYs5-fDI8uw" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_lcepcD36EeqaztyFqSGQbA" name="type" type="_nTmsgDtwEeqRdYL4l4j83w" association="_lca_ED36EeqaztyFqSGQbA">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_lcepcD36EeqaztyFqSGQbA" name="aType" type="_nTmsgDtwEeqRdYL4l4j83w" association="_lca_ED36EeqaztyFqSGQbA">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L9kwsD37EeqaztyFqSGQbA"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L9obED37EeqaztyFqSGQbA" value="*"/>
         </ownedAttribute>
@@ -971,23 +1005,27 @@
         </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_LLR1IEZ2Eemjs4KMC2ChPg" name="ActionAffordance">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_TtcIEHurEemSm8y_ktEBHQ">
-          <body>&quot;input&quot; and &quot;output&quot; are to be Parameters (with directions in, out, return, etc...) contained by the Operation on which &lt;&lt;Action>> is applied.&#xD;
-In this case DataScheme should be applied on the Parameter that serves as input or output.</body>
-        </ownedComment>
         <generalization xmi:type="uml:Generalization" xmi:id="_Yy-3cFa9EemBYs5-fDI8uw" general="_Ik8FAEZ2Eemjs4KMC2ChPg"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_VXIwwFa_EemBYs5-fDI8uw" name="input" type="_OOxbUEZ2Eemjs4KMC2ChPg" association="_VXHioFa_EemBYs5-fDI8uw">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_0rWQwnKGEeqvaKCRysa56A" name="base_Operation" association="_0rWQwHKGEeqvaKCRysa56A">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0rWQw3KGEeqvaKCRysa56A"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_VXIwwFa_EemBYs5-fDI8uw" name="input" type="_OOxbUEZ2Eemjs4KMC2ChPg" isDerived="true" association="_VXHioFa_EemBYs5-fDI8uw">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_U7zfMHJtEeqvaKCRysa56A">
+            <body>&quot;input&quot; and &quot;output&quot; are to be Parameters (with directions in, out, return, etc...) contained by the BehavioralFeature on which &lt;&lt;ActionAffordance>> is applied.&#xD;
+In this case DataScheme should be applied on the Parameter that serves as input or output.</body>
+          </ownedComment>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XmC4UFa_EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XmN3cFa_EemBYs5-fDI8uw" value="1"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_YicPIVa_EemBYs5-fDI8uw" name="output" type="_OOxbUEZ2Eemjs4KMC2ChPg" association="_YiboEFa_EemBYs5-fDI8uw">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_YicPIVa_EemBYs5-fDI8uw" name="output" type="_OOxbUEZ2Eemjs4KMC2ChPg" isDerived="true" association="_YiboEFa_EemBYs5-fDI8uw">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_VBURUHJtEeqvaKCRysa56A">
+            <body>&quot;input&quot; and &quot;output&quot; are to be Parameters (with directions in, out, return, etc...) contained by the BehavioralFeature on which &lt;&lt;ActionAffordance>> is applied.&#xD;
+In this case DataScheme should be applied on the Parameter that serves as input or output.</body>
+          </ownedComment>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RvktMHurEemSm8y_ktEBHQ"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RvueMHurEemSm8y_ktEBHQ" value="1"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_QtDPUnuiEemSm8y_ktEBHQ" name="base_BehavioralFeature" association="_QtDPUHuiEemSm8y_ktEBHQ">
-          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#BehavioralFeature"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QtDPU3uiEemSm8y_ktEBHQ"/>
-        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_vn7DYDuBEeqRdYL4l4j83w" name="safe">
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
         </ownedAttribute>
@@ -996,18 +1034,10 @@
         </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_LxXkwEZ2Eemjs4KMC2ChPg" name="EventAffordance">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_3NRf8Hu6EemSm8y_ktEBHQ">
-          <body>&quot;type&quot; is inferred from the type of the Signal's Properties on which &lt;&lt;Event>> is applied.&#xD;
-They are TypedElements so use the same inference algorithm as for TypedElements.&#xD;
-One of boolean, integer, string, object, array, null.</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_3NRf8Xu6EemSm8y_ktEBHQ">
-          <body>&quot;const&quot; is the TypedElement::defaultValue of the Property contained by the Signal stereotyped &lt;&lt;Event>>.</body>
-        </ownedComment>
         <generalization xmi:type="uml:Generalization" xmi:id="_ZbnkwFa9EemBYs5-fDI8uw" general="_Ik8FAEZ2Eemjs4KMC2ChPg"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_rSovYnu5EemSm8y_ktEBHQ" name="base_Signal" association="_rSovYHu5EemSm8y_ktEBHQ">
-          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Signal"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rSovY3u5EemSm8y_ktEBHQ"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="__jhUMnKGEeqvaKCRysa56A" name="base_Reception" association="__jhUMHKGEeqvaKCRysa56A">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Reception"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__jhUM3KGEeqvaKCRysa56A"/>
         </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_sh744z6tEeqAfKdldzYc-w" name="data" type="_OOxbUEZ2Eemjs4KMC2ChPg" association="_sh744D6tEeqAfKdldzYc-w">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yG6H4D6uEeqAfKdldzYc-w"/>
@@ -1024,40 +1054,27 @@
           <body>DataSchema should be a TypedElement, i.e., Property for &lt;&lt;Property>>, Parameter for &lt;&lt;Action>> input/output.&#xD;
 The type and multiplicity of the TypedElement gives the nature of the DataSchema (e.g., a Property typed by Integer is an IntegerSchema).</body>
         </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_DwoH8D38EeqaztyFqSGQbA">
-          <body>&quot;title&quot; is UML::NamedElement::name</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_gx2SMHuuEemSm8y_ktEBHQ">
-          <body>&quot;description&quot; is a Comment attached to the XXX on which &lt;&lt;DataSchema>> is applied.</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_JrgzUHuvEemSm8y_ktEBHQ">
-          <body>&quot;type&quot; is inferred from the TypedElement::type on which &lt;&lt;DataSchema>> is applied.&#xD;
-One of boolean, integer, string, object, array, null.</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_cf1N8HuvEemSm8y_ktEBHQ">
-          <body>&quot;const&quot; is the TypedElement::defaultValue of the TypedElement stereotyped &lt;&lt;DataSchema>>.&#xD;
-An OCL rule should mention that the default value must be a ValueSpecification stereotyped &lt;&lt;DetailedValueSpecification>>, if it is specified for a TypedElement stereotyped &lt;&lt;DataSchema>>.</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_mOh08Hu8EemSm8y_ktEBHQ">
-          <body>&quot;minItems&quot; and &quot;maxItems&quot; for an ArraySchema are inferred from the multiplicity.</body>
-        </ownedComment>
-        <ownedComment xmi:type="uml:Comment" xmi:id="_Ky73oD39EeqaztyFqSGQbA">
-          <body>&quot;readOnly&quot; is UML::Property::readOnly.</body>
-        </ownedComment>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_l1-zQHJrEeqvaKCRysa56A" name="title" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_l1-zQXJrEeqvaKCRysa56A">
+            <body>&quot;title&quot; is UML::NamedElement::name</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_l2IkQHJrEeqvaKCRysa56A" name="description" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_l2IkQXJrEeqvaKCRysa56A">
+            <body>&quot;description&quot; is a Comment attached to the TypedElement on which &lt;&lt;DataSchema>> is applied.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_HKSh0nuxEemSm8y_ktEBHQ" name="base_TypedElement" association="_HKSh0HuxEemSm8y_ktEBHQ">
           <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HKSh03uxEemSm8y_ktEBHQ"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_5pThQEZ3Eemjs4KMC2ChPg" name="enum" type="_rm64QCtxEeeZI6rMTYV60w">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_5pThQEZ3Eemjs4KMC2ChPg" name="enum">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_myABUHuvEemSm8y_ktEBHQ"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_myJyUHuvEemSm8y_ktEBHQ" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_esNTAHu8EemSm8y_ktEBHQ" name="numberInterval" visibility="public">
-          <ownedComment xmi:type="uml:Comment" xmi:id="_9I37YD38EeqaztyFqSGQbA">
-            <body>&quot;minimum&quot; and &quot;maximum&quot; of NumberSchema and IntegerSchema</body>
-          </ownedComment>
-          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Interval"/>
-        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_NnfYUHu9EemSm8y_ktEBHQ" name="required" visibility="public">
           <ownedComment xmi:type="uml:Comment" xmi:id="_CV-SYD39EeqaztyFqSGQbA">
             <body>&quot;required&quot; of ObjectSchema</body>
@@ -1080,7 +1097,7 @@
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u6WAID38EeqaztyFqSGQbA"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u6a4oD38EeqaztyFqSGQbA" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_F_snkj38EeqaztyFqSGQbA" name="type" type="_nTmsgDtwEeqRdYL4l4j83w" association="_F_sAgD38EeqaztyFqSGQbA">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_F_snkj38EeqaztyFqSGQbA" name="aType" type="_nTmsgDtwEeqRdYL4l4j83w" association="_F_sAgD38EeqaztyFqSGQbA">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Hqq7oD38EeqaztyFqSGQbA"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hqt-8D38EeqaztyFqSGQbA" value="*"/>
         </ownedAttribute>
@@ -1096,12 +1113,40 @@
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8GcYkD39EeqaztyFqSGQbA"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8GifMD39EeqaztyFqSGQbA" value="*"/>
         </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_w8AFcHJrEeqvaKCRysa56A" name="type" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_JrgzUHuvEemSm8y_ktEBHQ">
+            <body>&quot;type&quot; is inferred from the TypedElement::type on which &lt;&lt;DataSchema>> is applied.&#xD;
+One of boolean, integer, string, object, array, null.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_R9-4oHJsEeqvaKCRysa56A" name="const" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_cf1N8HuvEemSm8y_ktEBHQ">
+            <body>&quot;const&quot; is the TypedElement::defaultValue of the TypedElement stereotyped &lt;&lt;DataSchema>>.&#xD;
+An OCL rule should mention that the default value must be a ValueSpecification stereotyped &lt;&lt;DetailedValueSpecification>>, if it is specified for a TypedElement stereotyped &lt;&lt;DataSchema>>.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_XboNEHJsEeqvaKCRysa56A" name="minItems" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_cjiiEHJsEeqvaKCRysa56A">
+            <body>&quot;minItems&quot; and &quot;maxItems&quot; for an ArraySchema are inferred from the multiplicity.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_aSSRIHJsEeqvaKCRysa56A" name="maxItems" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_cqih8HJsEeqvaKCRysa56A">
+            <body>&quot;minItems&quot; and &quot;maxItems&quot; for an ArraySchema are inferred from the multiplicity.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_eEORsHJsEeqvaKCRysa56A" name="readOnly" visibility="public" isDerived="true">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_hK8LAHJsEeqvaKCRysa56A">
+            <body>&quot;readOnly&quot; is UML::Property::readOnly.</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_Pd7WEEZ2Eemjs4KMC2ChPg" name="Form">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_kXJSoD62EeqbWfODvTKHTw">
-          <body>&quot;security&quot; is derived from &quot;securityDefinition&quot; of Thing that owns this Form.</body>
-        </ownedComment>
-        <generalization xmi:type="uml:Generalization" xmi:id="_u13s8Hu2EemSm8y_ktEBHQ" general="_rm64QCtxEeeZI6rMTYV60w"/>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_ojLt0UZ3Eemjs4KMC2ChPg" name="op" type="_uzR3gHusEemSm8y_ktEBHQ">
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__v64EFa7EemBYs5-fDI8uw" value="*"/>
           <defaultValue xmi:type="uml:InstanceValue" xmi:id="_lMvCYD6sEeqAfKdldzYc-w" type="_uzR3gHusEemSm8y_ktEBHQ" instance="_zHZ_IHusEemSm8y_ktEBHQ"/>
@@ -1128,10 +1173,7 @@
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AZfZgFa8EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AZrmwFa8EemBYs5-fDI8uw" value="1"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_siyW8EZ3Eemjs4KMC2ChPg" name="scopes" isDerived="true">
-          <ownedComment xmi:type="uml:Comment" xmi:id="_g7_pID6wEeqAfKdldzYc-w">
-            <body>Derived from scopes of OAuth2SecurityScheme referenced in Form::security</body>
-          </ownedComment>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_siyW8EZ3Eemjs4KMC2ChPg" name="scopes">
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ovTBwEZ4Eemjs4KMC2ChPg"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ov5esEZ4Eemjs4KMC2ChPg" value="*"/>
@@ -1146,10 +1188,20 @@
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_II2qMz6xEeqAfKdldzYc-w" value="1"/>
           <defaultValue xmi:type="uml:LiteralString" xmi:id="_II2qND6xEeqAfKdldzYc-w" value="application/json"/>
         </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_75eDIHJsEeqvaKCRysa56A" name="security" type="_GdG10EZ2Eemjs4KMC2ChPg">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_kXJSoD62EeqbWfODvTKHTw">
+            <body>&quot;security&quot; is one entry in the &quot;securityDefinitions&quot; of the Thing that owns this Form.</body>
+          </ownedComment>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_75eDIXJsEeqvaKCRysa56A" value="*"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_REyK0nOgEeqQkfqnZhbFqQ" name="base_Comment" association="_REyK0HOgEeqQkfqnZhbFqQ">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Comment"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_REyK03OgEeqQkfqnZhbFqQ"/>
+        </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_QWwbgEZ2Eemjs4KMC2ChPg" name="Link">
         <ownedComment xmi:type="uml:Comment" xmi:id="_4H-44HuzEemSm8y_ktEBHQ">
-          <body>A Thing, SecuritySchema, or Form should have an Association stereotyped &lt;&lt;Link>>.&#xD;
+          <body>A Thing may have an Association stereotyped &lt;&lt;Link>>.&#xD;
 The Association points towards a Classifier which represents the remote object or an abstract entity like Internet.</body>
         </ownedComment>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_HuUnIj6tEeqAfKdldzYc-w" name="base_Association" association="_HuUnID6tEeqAfKdldzYc-w">
@@ -1238,9 +1290,6 @@
         </eAnnotations>
         <ownedEnd xmi:type="uml:Property" xmi:id="_bjSuMXukEemSm8y_ktEBHQ" name="securityscheme" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_bjJkQHukEemSm8y_ktEBHQ"/>
       </packagedElement>
-      <packagedElement xmi:type="uml:Extension" xmi:id="_QtDPUHuiEemSm8y_ktEBHQ" name="E_ActionAffordance_BehavioralFeature1" memberEnd="_QtDPUXuiEemSm8y_ktEBHQ _QtDPUnuiEemSm8y_ktEBHQ">
-        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_QtDPUXuiEemSm8y_ktEBHQ" name="extension_ActionAffordance" type="_LLR1IEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_QtDPUHuiEemSm8y_ktEBHQ"/>
-      </packagedElement>
       <packagedElement xmi:type="uml:Enumeration" xmi:id="_P5y7gHukEemSm8y_ktEBHQ" name="SecuritySchemeKind">
         <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_D6sVIHu4EemSm8y_ktEBHQ" name="nosec"/>
         <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_D6sVIXu4EemSm8y_ktEBHQ" name="basic"/>
@@ -1278,9 +1327,6 @@
       <packagedElement xmi:type="uml:Extension" xmi:id="_ZH7hMHuzEemSm8y_ktEBHQ" name="E_SecurityScheme_Classifier32" memberEnd="_ZH7hMXuzEemSm8y_ktEBHQ _ZH7hMnuzEemSm8y_ktEBHQ">
         <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ZH7hMXuzEemSm8y_ktEBHQ" name="extension_SecurityScheme" type="_GdG10EZ2Eemjs4KMC2ChPg" aggregation="composite" association="_ZH7hMHuzEemSm8y_ktEBHQ"/>
       </packagedElement>
-      <packagedElement xmi:type="uml:Extension" xmi:id="_rSovYHu5EemSm8y_ktEBHQ" name="E_EventAffordance_Signal1" memberEnd="_rSovYXu5EemSm8y_ktEBHQ _rSovYnu5EemSm8y_ktEBHQ">
-        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_rSovYXu5EemSm8y_ktEBHQ" name="extension_EventAffordance" type="_LxXkwEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_rSovYHu5EemSm8y_ktEBHQ"/>
-      </packagedElement>
       <packagedElement xmi:type="uml:Association" xmi:id="_upzisHu9EemSm8y_ktEBHQ" memberEnd="_upzis3u9EemSm8y_ktEBHQ _upzitHu9EemSm8y_ktEBHQ">
         <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_upzisXu9EemSm8y_ktEBHQ" source="org.eclipse.papyrus">
           <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_upzisnu9EemSm8y_ktEBHQ" key="nature" value="UML_Nature"/>
@@ -1401,6 +1447,24 @@
         </eAnnotations>
         <ownedEnd xmi:type="uml:Property" xmi:id="_3YogMD6uEeqAfKdldzYc-w" name="eventaffordance" type="_LxXkwEZ2Eemjs4KMC2ChPg" association="_3YfWQD6uEeqAfKdldzYc-w"/>
       </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_-lF1gHJkEeqvaKCRysa56A" memberEnd="_-lF1g3JkEeqvaKCRysa56A _-lF1hHJkEeqvaKCRysa56A">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-lF1gXJkEeqvaKCRysa56A" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-lF1gnJkEeqvaKCRysa56A" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_-lF1hHJkEeqvaKCRysa56A" name="thing" type="_npc7YEZ1Eemjs4KMC2ChPg" association="_-lF1gHJkEeqvaKCRysa56A"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_0rWQwHKGEeqvaKCRysa56A" name="E_ActionAffordance_Operation47" memberEnd="_0rWQwXKGEeqvaKCRysa56A _0rWQwnKGEeqvaKCRysa56A">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_0rWQwXKGEeqvaKCRysa56A" name="extension_ActionAffordance" type="_LLR1IEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_0rWQwHKGEeqvaKCRysa56A"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="__jhUMHKGEeqvaKCRysa56A" name="E_EventAffordance_Reception47" memberEnd="__jhUMXKGEeqvaKCRysa56A __jhUMnKGEeqvaKCRysa56A">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="__jhUMXKGEeqvaKCRysa56A" name="extension_EventAffordance" type="_LxXkwEZ2Eemjs4KMC2ChPg" aggregation="composite" association="__jhUMHKGEeqvaKCRysa56A"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_REyK0HOgEeqQkfqnZhbFqQ" name="E_Form_Comment49" memberEnd="_REyK0XOgEeqQkfqnZhbFqQ _REyK0nOgEeqQkfqnZhbFqQ">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_REyK0XOgEeqQkfqnZhbFqQ" name="extension_Form" type="_Pd7WEEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_REyK0HOgEeqQkfqnZhbFqQ"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_wwrU0HOgEeqQkfqnZhbFqQ" name="E_Thing_Class49" memberEnd="_wwrU0XOgEeqQkfqnZhbFqQ _wwrU0nOgEeqQkfqnZhbFqQ">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_wwrU0XOgEeqQkfqnZhbFqQ" name="extension_Thing" type="_npc7YEZ1Eemjs4KMC2ChPg" aggregation="composite" association="_wwrU0HOgEeqQkfqnZhbFqQ"/>
+      </packagedElement>
     </packagedElement>
     <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_pVg3QApVEei53_EZrjjGeA">
       <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pVj6kApVEei53_EZrjjGeA" source="http://www.eclipse.org/uml2/2.0.0/UML">
diff --git a/org.eclipse.papyrus.iotml.profile/model/iotml.ecore b/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
index f252c0a..29fe995 100644
--- a/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
+++ b/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
@@ -569,34 +569,53 @@
     <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
       <details key="originalName" value="WoT"/>
     </eAnnotations>
-    <eClassifiers xsi:type="ecore:EClass" name="Thing" eSuperTypes="#//software/artefact/VirtualEntity">
+    <eClassifiers xsi:type="ecore:EClass" name="Thing">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="base" ordered="false"
           eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="support" ordered="false"
           eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="security" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//wot/SecurityScheme"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="securityDefinitions"
           ordered="false" lowerBound="1" upperBound="-1" eType="#//wot/SecurityScheme"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="links" ordered="false"
           upperBound="-1" eType="#//wot/Link" volatile="true" transient="true" derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="events" ordered="false"
-          upperBound="-1" eType="#//wot/EventAffordance"/>
+          upperBound="-1" eType="#//wot/EventAffordance" volatile="true" transient="true"
+          derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="actions" ordered="false"
-          upperBound="-1" eType="#//wot/ActionAffordance"/>
+          upperBound="-1" eType="#//wot/ActionAffordance" volatile="true" transient="true"
+          derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
-          upperBound="-1" eType="#//wot/PropertyAffordance"/>
+          upperBound="-1" eType="#//wot/PropertyAffordance" volatile="true" transient="true"
+          derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" ordered="false"
           lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false"
+      <eStructuralFeatures xsi:type="ecore:EReference" name="aType" ordered="false"
           upperBound="-1" eType="#//wot/Type"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+      <eStructuralFeatures xsi:type="ecore:EReference" name="aContext" ordered="false"
           upperBound="-1" eType="#//wot/Context"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="forms" ordered="false"
           upperBound="-1" eType="#//wot/Form"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="SecurityScheme">
       <eStructuralFeatures xsi:type="ecore:EReference" name="base_Classifier" ordered="false"
           eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Classifier"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="scheme" ordered="false"
           lowerBound="1" eType="#//wot/SecuritySchemeKind"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="proxy" ordered="false"
@@ -681,8 +700,8 @@
           lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="EventAffordance" eSuperTypes="#//wot/InteractionAffordance">
-      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Signal" ordered="false"
-          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Signal"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Reception" ordered="false"
+          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Reception"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="data" ordered="false"
           eType="#//wot/DataSchema"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="subscription" ordered="false"
@@ -691,12 +710,18 @@
           eType="#//wot/DataSchema"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="InteractionAffordance" abstract="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="forms" ordered="false"
           lowerBound="1" upperBound="-1" eType="#//wot/Form"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false"
+      <eStructuralFeatures xsi:type="ecore:EReference" name="aType" ordered="false"
           upperBound="-1" eType="#//wot/Type"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="Form" eSuperTypes="#//software/core/structure/MetaValueSpecification">
+    <eClassifiers xsi:type="ecore:EClass" name="Form">
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" ordered="false" lowerBound="1"
           upperBound="-1" eType="#//wot/OpKind" defaultValueLiteral="readproperty"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="href" ordered="false"
@@ -709,11 +734,14 @@
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="subProtocol" ordered="false"
           eType="#//wot/SubProtocolKind"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="scopes" ordered="false"
-          upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
-          volatile="true" transient="true" derived="true"/>
+          upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="response" ordered="false"
           eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
           defaultValueLiteral="application/json"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="security" ordered="false"
+          lowerBound="1" upperBound="-1" eType="#//wot/SecurityScheme"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Comment" ordered="false"
+          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Comment"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EEnum" name="OpKind">
       <eLiterals name="readproperty"/>
@@ -741,19 +769,23 @@
           eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Type"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="DataSchema">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="title" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="base_TypedElement" ordered="false"
           eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//TypedElement"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="enum" ordered="false"
-          upperBound="-1" eType="#//software/core/structure/MetaValueSpecification"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="numberInterval" ordered="false"
-          lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Interval"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="enum" ordered="false"
+          upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
           upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="items" ordered="false"
           upperBound="-1" eType="#//wot/DataSchema"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
           upperBound="-1" eType="#//wot/DataSchema"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false"
+      <eStructuralFeatures xsi:type="ecore:EReference" name="aType" ordered="false"
           upperBound="-1" eType="#//wot/Type"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="writeOnly" ordered="false"
           lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Boolean"
@@ -762,14 +794,29 @@
           eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="oneOf" ordered="false"
           upperBound="-1" eType="#//wot/DataSchema"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="const" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minItems" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Integer"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxItems" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Integer"
+          volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="readOnly" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Boolean"
+          volatile="true" transient="true" derived="true"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="ActionAffordance" eSuperTypes="#//wot/InteractionAffordance">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Operation" ordered="false"
+          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="input" ordered="false"
-          eType="#//wot/DataSchema"/>
+          eType="#//wot/DataSchema" volatile="true" transient="true" derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="output" ordered="false"
-          eType="#//wot/DataSchema"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="base_BehavioralFeature"
-          ordered="false" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//BehavioralFeature"/>
+          eType="#//wot/DataSchema" volatile="true" transient="true" derived="true"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="safe" ordered="false"
           lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="idempotent" ordered="false"
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethod.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethod.java
index fecc283..0193e9e 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethod.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethod.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethodType.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethodType.java
index a7ab5e6..4900210 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethodType.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/AccessMethodType.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
@@ -82,10 +83,6 @@
 	/**
 	 * The '<em><b>GET</b></em>' literal value.
 	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>GET</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #GET
 	 * @model
@@ -97,10 +94,6 @@
 	/**
 	 * The '<em><b>SET</b></em>' literal value.
 	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>SET</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #SET
 	 * @model
@@ -112,10 +105,6 @@
 	/**
 	 * The '<em><b>ACT</b></em>' literal value.
 	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>ACT</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #ACT
 	 * @model
@@ -127,10 +116,6 @@
 	/**
 	 * The '<em><b>SUBSCRIBE</b></em>' literal value.
 	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>SUBSCRIBE</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #SUBSCRIBE
 	 * @model
@@ -142,10 +127,6 @@
 	/**
 	 * The '<em><b>UNSUBSCRIBE</b></em>' literal value.
 	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>UNSUBSCRIBE</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #UNSUBSCRIBE
 	 * @model
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Action.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Action.java
index ce3b953..1615e59 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Action.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Action.java
@@ -9,10 +9,12 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
 
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Action</b></em>'.
@@ -24,5 +26,4 @@
  * @generated
  */
 public interface Action extends Resource {
-
 } // Action
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Attribute.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Attribute.java
index c59cadb..3524312 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Attribute.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Attribute.java
@@ -9,11 +9,13 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
 
 import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.uml2.uml.Property;
 
 /**
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Gateway.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Gateway.java
index 0bcee62..b7c2095 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Gateway.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Gateway.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Metadata.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Metadata.java
index 7dd59d6..0f6826a 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Metadata.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Metadata.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Parameter.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Parameter.java
index 7e42830..ee796f4 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Parameter.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Parameter.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
@@ -31,7 +32,6 @@
  * @generated
  */
 public interface Parameter extends TypedElement {
-
 	/**
 	 * Returns the value of the '<em><b>Base Parameter</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -57,4 +57,5 @@
 	 * @generated
 	 */
 	void setBase_Parameter(org.eclipse.uml2.uml.Parameter value);
+
 } // Parameter
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Property.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Property.java
index f03b138..4958329 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Property.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Property.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
@@ -25,5 +26,4 @@
  * @generated
  */
 public interface Property extends Resource {
-
 } // Property
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Resource.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Resource.java
index 8ae2443..5f6a6c9 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Resource.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Resource.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactFactory.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactFactory.java
index 88262cb..62fcb6c 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactFactory.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactFactory.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactPackage.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactPackage.java
index 1bb14be..09fe66b 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactPackage.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensinactPackage.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensorData.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensorData.java
index 6d907d5..09b8f83 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensorData.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/SensorData.java
@@ -9,10 +9,12 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
 
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Sensor Data</b></em>'.
@@ -24,5 +26,4 @@
  * @generated
  */
 public interface SensorData extends Resource {
-
 } // SensorData
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Service.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Service.java
index 246d080..77b88bd 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Service.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Service.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/ServiceProvider.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/ServiceProvider.java
index 59728e9..4ea1bec 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/ServiceProvider.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/ServiceProvider.java
@@ -9,11 +9,13 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
 
 import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
 
 /**
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/StateVariable.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/StateVariable.java
index a859396..e37b3b7 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/StateVariable.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/StateVariable.java
@@ -9,10 +9,12 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
 
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>State Variable</b></em>'.
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Studio.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Studio.java
index a99d2c8..85aed25 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Studio.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/Studio.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/TypedElement.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/TypedElement.java
index c7c969a..b8ce40e 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/TypedElement.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/TypedElement.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AccessMethodImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AccessMethodImpl.java
index fedbb15..6bb9174 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AccessMethodImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AccessMethodImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ActionImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ActionImpl.java
index a2eb736..9c0ec9c 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ActionImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ActionImpl.java
@@ -9,11 +9,13 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
 
 import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.papyrus.iotml.sensinact.Action;
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AttributeImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AttributeImpl.java
index 0c2ddbf..767ed41 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AttributeImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/AttributeImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
@@ -16,17 +17,20 @@
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
+
 import org.eclipse.emf.common.util.EList;
 
 import org.eclipse.emf.ecore.EClass;
-
 import org.eclipse.emf.ecore.InternalEObject;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
 import org.eclipse.papyrus.iotml.sensinact.Attribute;
 import org.eclipse.papyrus.iotml.sensinact.Metadata;
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
+
 import org.eclipse.uml2.uml.Property;
 
 /**
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/GatewayImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/GatewayImpl.java
index bc2f029..ec21c34 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/GatewayImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/GatewayImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
@@ -20,6 +21,7 @@
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
 import org.eclipse.papyrus.iotml.sensinact.Gateway;
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
 import org.eclipse.papyrus.iotml.sensinact.ServiceProvider;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/MetadataImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/MetadataImpl.java
index edc709b..0f5f9f4 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/MetadataImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/MetadataImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ParameterImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ParameterImpl.java
index 14e4f40..7bdc130 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ParameterImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ParameterImpl.java
@@ -9,15 +9,18 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
 
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.papyrus.iotml.sensinact.Parameter;
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/PropertyImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/PropertyImpl.java
index 5f194eb..19b1b89 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/PropertyImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/PropertyImpl.java
@@ -9,11 +9,13 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
 
 import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.papyrus.iotml.sensinact.Property;
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ResourceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ResourceImpl.java
index 95c0c56..9077a76 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ResourceImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ResourceImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactFactoryImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactFactoryImpl.java
index 1605a32..113853a 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactFactoryImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactFactoryImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactPackageImpl.java
index 9b7a852..0608ba8 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensinactPackageImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
@@ -111,7 +112,9 @@
 import org.eclipse.papyrus.iotml.software.resource.impl.ResourcePackageImpl;
 
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
+
 import org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl;
+
 import org.eclipse.papyrus.sysml14.sysmlPackage;
 
 import org.eclipse.uml2.types.TypesPackage;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensorDataImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensorDataImpl.java
index 0c53275..41e213b 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensorDataImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/SensorDataImpl.java
@@ -9,11 +9,13 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
 
 import org.eclipse.emf.ecore.EClass;
+
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
 import org.eclipse.papyrus.iotml.sensinact.SensorData;
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceImpl.java
index e5571e8..0f09361 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceProviderImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceProviderImpl.java
index 6329690..975b6b4 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceProviderImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/ServiceProviderImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
@@ -24,9 +25,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
 import org.eclipse.papyrus.iotml.sensinact.Service;
 import org.eclipse.papyrus.iotml.sensinact.ServiceProvider;
+
 import org.eclipse.papyrus.iotml.software.artefact.impl.VirtualEntityImpl;
 
 /**
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StateVariableImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StateVariableImpl.java
index 493dd5a..f79a115 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StateVariableImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StateVariableImpl.java
@@ -9,14 +9,18 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
 
 import org.eclipse.emf.common.notify.Notification;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 import org.eclipse.papyrus.iotml.sensinact.Action;
 import org.eclipse.papyrus.iotml.sensinact.SensinactPackage;
 import org.eclipse.papyrus.iotml.sensinact.StateVariable;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StudioImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StudioImpl.java
index cc922cd..8852529 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StudioImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/StudioImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/TypedElementImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/TypedElementImpl.java
index 7c1f11b..59a0c89 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/TypedElementImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/impl/TypedElementImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactAdapterFactory.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactAdapterFactory.java
index 7d2d9e3..ba6a14d 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactAdapterFactory.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactAdapterFactory.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.util;
@@ -39,6 +40,7 @@
 
 import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
 import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
+
 import org.eclipse.papyrus.iotml.software.resource.OnDeviceResource;
 
 /**
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactSwitch.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactSwitch.java
index 22ba0bb..4079c79 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactSwitch.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/sensinact/util/SensinactSwitch.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.sensinact.util;
@@ -37,6 +38,7 @@
 
 import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
 import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
+
 import org.eclipse.papyrus.iotml.software.resource.OnDeviceResource;
 
 /**
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/ActionAffordance.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/ActionAffordance.java
index 3f275db..6a825e9 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/ActionAffordance.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/ActionAffordance.java
@@ -9,11 +9,12 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
 
-import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Operation;
 
 /**
  * <!-- begin-user-doc -->
@@ -24,9 +25,9 @@
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_Operation <em>Base Operation</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getInput <em>Input</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getOutput <em>Output</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#isSafe <em>Safe</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#isIdempotent <em>Idempotent</em>}</li>
  * </ul>
@@ -47,7 +48,7 @@
 	 * @return the value of the '<em>Input</em>' reference.
 	 * @see #setInput(DataSchema)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getActionAffordance_Input()
-	 * @model ordered="false"
+	 * @model transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
 	DataSchema getInput();
@@ -73,7 +74,7 @@
 	 * @return the value of the '<em>Output</em>' reference.
 	 * @see #setOutput(DataSchema)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getActionAffordance_Output()
-	 * @model ordered="false"
+	 * @model transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
 	DataSchema getOutput();
@@ -89,32 +90,6 @@
 	void setOutput(DataSchema value);
 
 	/**
-	 * Returns the value of the '<em><b>Base Behavioral Feature</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Base Behavioral Feature</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Base Behavioral Feature</em>' reference.
-	 * @see #setBase_BehavioralFeature(BehavioralFeature)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getActionAffordance_Base_BehavioralFeature()
-	 * @model ordered="false"
-	 * @generated
-	 */
-	BehavioralFeature getBase_BehavioralFeature();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Base Behavioral Feature</em>' reference.
-	 * @see #getBase_BehavioralFeature()
-	 * @generated
-	 */
-	void setBase_BehavioralFeature(BehavioralFeature value);
-
-	/**
 	 * Returns the value of the '<em><b>Safe</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -166,4 +141,30 @@
 	 */
 	void setIdempotent(boolean value);
 
+	/**
+	 * Returns the value of the '<em><b>Base Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Operation</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Operation</em>' reference.
+	 * @see #setBase_Operation(Operation)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getActionAffordance_Base_Operation()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Operation getBase_Operation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_Operation <em>Base Operation</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Operation</em>' reference.
+	 * @see #getBase_Operation()
+	 * @generated
+	 */
+	void setBase_Operation(Operation value);
+
 } // ActionAffordance
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/AuthorizationFlowKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/AuthorizationFlowKind.java
index 32ba58f..91a1344 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/AuthorizationFlowKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/AuthorizationFlowKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Context.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Context.java
index a3ba167..323209f 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Context.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Context.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataSchema.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataSchema.java
index 750f096..aff049e 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataSchema.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataSchema.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
@@ -17,10 +18,6 @@
 
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
-
-import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
-
-import org.eclipse.uml2.uml.Interval;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.TypedElement;
@@ -34,16 +31,22 @@
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getBase_TypedElement <em>Base Typed Element</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getEnum <em>Enum</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getNumberInterval <em>Number Interval</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getRequired <em>Required</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getItems <em>Items</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getProperties <em>Properties</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getAType <em>AType</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#isWriteOnly <em>Write Only</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getFormat <em>Format</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getOneOf <em>One Of</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getConst <em>Const</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getMinItems <em>Min Items</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#getMaxItems <em>Max Items</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.DataSchema#isReadOnly <em>Read Only</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema()
@@ -52,6 +55,58 @@
  */
 public interface DataSchema extends EObject {
 	/**
+	 * Returns the value of the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Title</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Title</em>' attribute.
+	 * @see #setTitle(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Title()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getTitle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getTitle <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Title</em>' attribute.
+	 * @see #getTitle()
+	 * @generated
+	 */
+	void setTitle(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Description()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
 	 * Returns the value of the '<em><b>Base Typed Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -78,46 +133,20 @@
 	void setBase_TypedElement(TypedElement value);
 
 	/**
-	 * Returns the value of the '<em><b>Enum</b></em>' reference list.
-	 * The list contents are of type {@link org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification}.
+	 * Returns the value of the '<em><b>Enum</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Enum</em>' reference list isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Enum</em>' reference list.
+	 * @return the value of the '<em>Enum</em>' attribute list.
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Enum()
-	 * @model ordered="false"
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
 	 * @generated
 	 */
-	EList<MetaValueSpecification> getEnum();
-
-	/**
-	 * Returns the value of the '<em><b>Number Interval</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Number Interval</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Number Interval</em>' reference.
-	 * @see #setNumberInterval(Interval)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_NumberInterval()
-	 * @model required="true" ordered="false"
-	 * @generated
-	 */
-	Interval getNumberInterval();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getNumberInterval <em>Number Interval</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Number Interval</em>' reference.
-	 * @see #getNumberInterval()
-	 * @generated
-	 */
-	void setNumberInterval(Interval value);
+	EList<String> getEnum();
 
 	/**
 	 * Returns the value of the '<em><b>Required</b></em>' reference list.
@@ -194,20 +223,20 @@
 	EList<DataSchema> getProperties();
 
 	/**
-	 * Returns the value of the '<em><b>Type</b></em>' reference list.
+	 * Returns the value of the '<em><b>AType</b></em>' reference list.
 	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.Type}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Type</em>' reference list isn't clear,
+	 * If the meaning of the '<em>AType</em>' reference list isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Type</em>' reference list.
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Type()
+	 * @return the value of the '<em>AType</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_AType()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	EList<org.eclipse.papyrus.iotml.wot.Type> getType();
+	EList<org.eclipse.papyrus.iotml.wot.Type> getAType();
 
 	/**
 	 * Returns the value of the '<em><b>Write Only</b></em>' attribute.
@@ -278,4 +307,134 @@
 	 */
 	EList<DataSchema> getOneOf();
 
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Type()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Const</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Const</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Const</em>' attribute.
+	 * @see #setConst(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Const()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getConst();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getConst <em>Const</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Const</em>' attribute.
+	 * @see #getConst()
+	 * @generated
+	 */
+	void setConst(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Min Items</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min Items</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min Items</em>' attribute.
+	 * @see #setMinItems(int)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_MinItems()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	int getMinItems();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getMinItems <em>Min Items</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min Items</em>' attribute.
+	 * @see #getMinItems()
+	 * @generated
+	 */
+	void setMinItems(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Max Items</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max Items</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max Items</em>' attribute.
+	 * @see #setMaxItems(int)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_MaxItems()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	int getMaxItems();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getMaxItems <em>Max Items</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max Items</em>' attribute.
+	 * @see #getMaxItems()
+	 * @generated
+	 */
+	void setMaxItems(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Read Only</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Read Only</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Read Only</em>' attribute.
+	 * @see #setReadOnly(boolean)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_ReadOnly()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	boolean isReadOnly();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#isReadOnly <em>Read Only</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Read Only</em>' attribute.
+	 * @see #isReadOnly()
+	 * @generated
+	 */
+	void setReadOnly(boolean value);
+
 } // DataSchema
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/EventAffordance.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/EventAffordance.java
index 806d3ba..6949ddf 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/EventAffordance.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/EventAffordance.java
@@ -9,11 +9,12 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
 
-import org.eclipse.uml2.uml.Signal;
+import org.eclipse.uml2.uml.Reception;
 
 /**
  * <!-- begin-user-doc -->
@@ -24,7 +25,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Signal <em>Base Signal</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Reception <em>Base Reception</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getData <em>Data</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getSubscription <em>Subscription</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getCancellation <em>Cancellation</em>}</li>
@@ -36,32 +37,6 @@
  */
 public interface EventAffordance extends InteractionAffordance {
 	/**
-	 * Returns the value of the '<em><b>Base Signal</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Base Signal</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Base Signal</em>' reference.
-	 * @see #setBase_Signal(Signal)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getEventAffordance_Base_Signal()
-	 * @model ordered="false"
-	 * @generated
-	 */
-	Signal getBase_Signal();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Signal <em>Base Signal</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Base Signal</em>' reference.
-	 * @see #getBase_Signal()
-	 * @generated
-	 */
-	void setBase_Signal(Signal value);
-
-	/**
 	 * Returns the value of the '<em><b>Data</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
@@ -139,4 +114,30 @@
 	 */
 	void setCancellation(DataSchema value);
 
+	/**
+	 * Returns the value of the '<em><b>Base Reception</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Reception</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Reception</em>' reference.
+	 * @see #setBase_Reception(Reception)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getEventAffordance_Base_Reception()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Reception getBase_Reception();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Reception <em>Base Reception</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Reception</em>' reference.
+	 * @see #getBase_Reception()
+	 * @generated
+	 */
+	void setBase_Reception(Reception value);
+
 } // EventAffordance
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Form.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Form.java
index cd66e66..0e3be91 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Form.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Form.java
@@ -9,13 +9,15 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
 
 import org.eclipse.emf.common.util.EList;
 
-import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Comment;
 
 /**
  * <!-- begin-user-doc -->
@@ -33,13 +35,15 @@
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getSubProtocol <em>Sub Protocol</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getScopes <em>Scopes</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getResponse <em>Response</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getSecurity <em>Security</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getBase_Comment <em>Base Comment</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm()
  * @model
  * @generated
  */
-public interface Form extends MetaValueSpecification {
+public interface Form extends EObject {
 	/**
 	 * Returns the value of the '<em><b>Op</b></em>' attribute list.
 	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.OpKind}.
@@ -177,7 +181,7 @@
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Scopes</em>' attribute list.
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_Scopes()
-	 * @model dataType="org.eclipse.uml2.types.String" transient="true" volatile="true" derived="true" ordered="false"
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
 	 * @generated
 	 */
 	EList<String> getScopes();
@@ -209,4 +213,46 @@
 	 */
 	void setResponse(String value);
 
+	/**
+	 * Returns the value of the '<em><b>Security</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.SecurityScheme}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Security</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Security</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_Security()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<SecurityScheme> getSecurity();
+
+	/**
+	 * Returns the value of the '<em><b>Base Comment</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Comment</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Comment</em>' reference.
+	 * @see #setBase_Comment(Comment)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_Base_Comment()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Comment getBase_Comment();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getBase_Comment <em>Base Comment</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Comment</em>' reference.
+	 * @see #getBase_Comment()
+	 * @generated
+	 */
+	void setBase_Comment(Comment value);
+
 } // Form
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionAffordance.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionAffordance.java
index 562c0a6..b91db54 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionAffordance.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionAffordance.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
@@ -26,8 +27,10 @@
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getForms <em>Forms</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getAType <em>AType</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionAffordance()
@@ -36,6 +39,58 @@
  */
 public interface InteractionAffordance extends EObject {
 	/**
+	 * Returns the value of the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Title</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Title</em>' attribute.
+	 * @see #setTitle(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionAffordance_Title()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getTitle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getTitle <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Title</em>' attribute.
+	 * @see #getTitle()
+	 * @generated
+	 */
+	void setTitle(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionAffordance_Description()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
 	 * Returns the value of the '<em><b>Forms</b></em>' reference list.
 	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.Form}.
 	 * <!-- begin-user-doc -->
@@ -52,19 +107,19 @@
 	EList<Form> getForms();
 
 	/**
-	 * Returns the value of the '<em><b>Type</b></em>' reference list.
+	 * Returns the value of the '<em><b>AType</b></em>' reference list.
 	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.Type}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Type</em>' reference list isn't clear,
+	 * If the meaning of the '<em>AType</em>' reference list isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Type</em>' reference list.
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionAffordance_Type()
+	 * @return the value of the '<em>AType</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionAffordance_AType()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	EList<Type> getType();
+	EList<Type> getAType();
 
 } // InteractionAffordance
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Link.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Link.java
index 644640a..c21f715 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Link.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Link.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/OpKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/OpKind.java
index a1392dd..73051ae 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/OpKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/OpKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/PropertyAffordance.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/PropertyAffordance.java
index 3a92277..778b290 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/PropertyAffordance.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/PropertyAffordance.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/QoPKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/QoPKind.java
index 2122973..372c9d1 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/QoPKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/QoPKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAlgorithmKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAlgorithmKind.java
index fc0f72c..065d93b 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAlgorithmKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAlgorithmKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationFormatKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationFormatKind.java
index 529cef2..0979171 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationFormatKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationFormatKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationInformationLocationKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationInformationLocationKind.java
index e4d4147..291041d 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationInformationLocationKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityAuthenticationInformationLocationKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityScheme.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityScheme.java
index 2b7f395..3c8eac6 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityScheme.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecurityScheme.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
@@ -29,6 +30,8 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getBase_Classifier <em>Base Classifier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getScheme <em>Scheme</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getProxy <em>Proxy</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getIn <em>In</em>}</li>
@@ -76,6 +79,58 @@
 	void setBase_Classifier(Classifier value);
 
 	/**
+	 * Returns the value of the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Title</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Title</em>' attribute.
+	 * @see #setTitle(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSecurityScheme_Title()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getTitle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getTitle <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Title</em>' attribute.
+	 * @see #getTitle()
+	 * @generated
+	 */
+	void setTitle(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSecurityScheme_Description()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
 	 * Returns the value of the '<em><b>Scheme</b></em>' attribute.
 	 * The literals are from the enumeration {@link org.eclipse.papyrus.iotml.wot.SecuritySchemeKind}.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecuritySchemeKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecuritySchemeKind.java
index c07d83a..89d018a 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecuritySchemeKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecuritySchemeKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SubProtocolKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SubProtocolKind.java
index 87227ab..383feb9 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SubProtocolKind.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SubProtocolKind.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Thing.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Thing.java
index 74a0401..56c44bc 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Thing.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Thing.java
@@ -9,13 +9,14 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
 
 import org.eclipse.emf.common.util.EList;
 
-import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
+import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
@@ -26,25 +27,81 @@
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getBase <em>Base</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getId <em>Id</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getSupport <em>Support</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getSecurity <em>Security</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getSecurityDefinitions <em>Security Definitions</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getLinks <em>Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getEvents <em>Events</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getActions <em>Actions</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getProperties <em>Properties</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getVersion <em>Version</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getType <em>Type</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getContext <em>Context</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getAType <em>AType</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getAContext <em>AContext</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getForms <em>Forms</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getBase_Class <em>Base Class</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing()
  * @model
  * @generated
  */
-public interface Thing extends VirtualEntity {
+public interface Thing extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Title</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Title</em>' attribute.
+	 * @see #setTitle(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Title()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getTitle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Thing#getTitle <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Title</em>' attribute.
+	 * @see #getTitle()
+	 * @generated
+	 */
+	void setTitle(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Description()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Thing#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
 	/**
 	 * Returns the value of the '<em><b>Base</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -124,6 +181,22 @@
 	void setSupport(String value);
 
 	/**
+	 * Returns the value of the '<em><b>Security</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.SecurityScheme}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Security</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Security</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Security()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EList<SecurityScheme> getSecurity();
+
+	/**
 	 * Returns the value of the '<em><b>Security Definitions</b></em>' reference list.
 	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.SecurityScheme}.
 	 * <!-- begin-user-doc -->
@@ -166,7 +239,7 @@
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Events</em>' reference list.
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Events()
-	 * @model ordered="false"
+	 * @model transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
 	EList<EventAffordance> getEvents();
@@ -182,7 +255,7 @@
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Actions</em>' reference list.
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Actions()
-	 * @model ordered="false"
+	 * @model transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
 	EList<ActionAffordance> getActions();
@@ -198,7 +271,7 @@
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Properties</em>' reference list.
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Properties()
-	 * @model ordered="false"
+	 * @model transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
 	EList<PropertyAffordance> getProperties();
@@ -230,36 +303,36 @@
 	void setVersion(String value);
 
 	/**
-	 * Returns the value of the '<em><b>Type</b></em>' reference list.
+	 * Returns the value of the '<em><b>AType</b></em>' reference list.
 	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.Type}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Type</em>' reference list isn't clear,
+	 * If the meaning of the '<em>AType</em>' reference list isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Type</em>' reference list.
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Type()
+	 * @return the value of the '<em>AType</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_AType()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	EList<Type> getType();
+	EList<Type> getAType();
 
 	/**
-	 * Returns the value of the '<em><b>Context</b></em>' reference list.
+	 * Returns the value of the '<em><b>AContext</b></em>' reference list.
 	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.Context}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Context</em>' reference list isn't clear,
+	 * If the meaning of the '<em>AContext</em>' reference list isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Context</em>' reference list.
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Context()
+	 * @return the value of the '<em>AContext</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_AContext()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	EList<Context> getContext();
+	EList<Context> getAContext();
 
 	/**
 	 * Returns the value of the '<em><b>Forms</b></em>' reference list.
@@ -277,4 +350,30 @@
 	 */
 	EList<Form> getForms();
 
+	/**
+	 * Returns the value of the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Class</em>' reference.
+	 * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Base_Class()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	org.eclipse.uml2.uml.Class getBase_Class();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Thing#getBase_Class <em>Base Class</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Class</em>' reference.
+	 * @see #getBase_Class()
+	 * @generated
+	 */
+	void setBase_Class(org.eclipse.uml2.uml.Class value);
+
 } // Thing
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Type.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Type.java
index 823cb21..a3bb789 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Type.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Type.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTFactory.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTFactory.java
index 102b791..43aa1a5 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTFactory.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTFactory.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTPackage.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTPackage.java
index dfe2a8b..2a53a36 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTPackage.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/WoTPackage.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot;
@@ -19,10 +20,6 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 
-import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
-
-import org.eclipse.papyrus.iotml.software.core.structure.StructurePackage;
-
 /**
  * <!-- begin-user-doc -->
  * The <b>Package</b> for the model.
@@ -83,31 +80,22 @@
 	int THING = 0;
 
 	/**
-	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * The feature id for the '<em><b>Title</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int THING__BASE_CLASS = ArtefactPackage.VIRTUAL_ENTITY__BASE_CLASS;
+	int THING__TITLE = 0;
 
 	/**
-	 * The feature id for the '<em><b>Phisical Entity Specification</b></em>' reference.
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int THING__PHISICAL_ENTITY_SPECIFICATION = ArtefactPackage.VIRTUAL_ENTITY__PHISICAL_ENTITY_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Physical Entity</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int THING__PHYSICAL_ENTITY = ArtefactPackage.VIRTUAL_ENTITY__PHYSICAL_ENTITY;
+	int THING__DESCRIPTION = 1;
 
 	/**
 	 * The feature id for the '<em><b>Base</b></em>' attribute.
@@ -116,7 +104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__BASE = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 0;
+	int THING__BASE = 2;
 
 	/**
 	 * The feature id for the '<em><b>Id</b></em>' attribute.
@@ -125,7 +113,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__ID = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 1;
+	int THING__ID = 3;
 
 	/**
 	 * The feature id for the '<em><b>Support</b></em>' attribute.
@@ -134,7 +122,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__SUPPORT = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 2;
+	int THING__SUPPORT = 4;
+
+	/**
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THING__SECURITY = 5;
 
 	/**
 	 * The feature id for the '<em><b>Security Definitions</b></em>' reference list.
@@ -143,7 +140,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__SECURITY_DEFINITIONS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 3;
+	int THING__SECURITY_DEFINITIONS = 6;
 
 	/**
 	 * The feature id for the '<em><b>Links</b></em>' reference list.
@@ -152,7 +149,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__LINKS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 4;
+	int THING__LINKS = 7;
 
 	/**
 	 * The feature id for the '<em><b>Events</b></em>' reference list.
@@ -161,7 +158,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__EVENTS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 5;
+	int THING__EVENTS = 8;
 
 	/**
 	 * The feature id for the '<em><b>Actions</b></em>' reference list.
@@ -170,7 +167,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__ACTIONS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 6;
+	int THING__ACTIONS = 9;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' reference list.
@@ -179,7 +176,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__PROPERTIES = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 7;
+	int THING__PROPERTIES = 10;
 
 	/**
 	 * The feature id for the '<em><b>Version</b></em>' attribute.
@@ -188,25 +185,25 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__VERSION = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 8;
+	int THING__VERSION = 11;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference list.
+	 * The feature id for the '<em><b>AType</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int THING__TYPE = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 9;
+	int THING__ATYPE = 12;
 
 	/**
-	 * The feature id for the '<em><b>Context</b></em>' reference list.
+	 * The feature id for the '<em><b>AContext</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int THING__CONTEXT = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 10;
+	int THING__ACONTEXT = 13;
 
 	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
@@ -215,7 +212,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING__FORMS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 11;
+	int THING__FORMS = 14;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THING__BASE_CLASS = 15;
 
 	/**
 	 * The number of structural features of the '<em>Thing</em>' class.
@@ -224,7 +230,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int THING_FEATURE_COUNT = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 12;
+	int THING_FEATURE_COUNT = 16;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl <em>Security Scheme</em>}' class.
@@ -246,13 +252,31 @@
 	int SECURITY_SCHEME__BASE_CLASSIFIER = 0;
 
 	/**
+	 * The feature id for the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SECURITY_SCHEME__TITLE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SECURITY_SCHEME__DESCRIPTION = 2;
+
+	/**
 	 * The feature id for the '<em><b>Scheme</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__SCHEME = 1;
+	int SECURITY_SCHEME__SCHEME = 3;
 
 	/**
 	 * The feature id for the '<em><b>Proxy</b></em>' attribute.
@@ -261,7 +285,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__PROXY = 2;
+	int SECURITY_SCHEME__PROXY = 4;
 
 	/**
 	 * The feature id for the '<em><b>In</b></em>' attribute.
@@ -270,7 +294,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__IN = 3;
+	int SECURITY_SCHEME__IN = 5;
 
 	/**
 	 * The feature id for the '<em><b>Qop</b></em>' attribute.
@@ -279,7 +303,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__QOP = 4;
+	int SECURITY_SCHEME__QOP = 6;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -288,7 +312,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__NAME = 5;
+	int SECURITY_SCHEME__NAME = 7;
 
 	/**
 	 * The feature id for the '<em><b>Authorization</b></em>' attribute.
@@ -297,7 +321,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__AUTHORIZATION = 6;
+	int SECURITY_SCHEME__AUTHORIZATION = 8;
 
 	/**
 	 * The feature id for the '<em><b>Alg</b></em>' attribute.
@@ -306,7 +330,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__ALG = 7;
+	int SECURITY_SCHEME__ALG = 9;
 
 	/**
 	 * The feature id for the '<em><b>Format</b></em>' attribute.
@@ -315,7 +339,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__FORMAT = 8;
+	int SECURITY_SCHEME__FORMAT = 10;
 
 	/**
 	 * The feature id for the '<em><b>Identity</b></em>' attribute.
@@ -324,7 +348,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__IDENTITY = 9;
+	int SECURITY_SCHEME__IDENTITY = 11;
 
 	/**
 	 * The feature id for the '<em><b>Token</b></em>' attribute.
@@ -333,7 +357,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__TOKEN = 10;
+	int SECURITY_SCHEME__TOKEN = 12;
 
 	/**
 	 * The feature id for the '<em><b>Refresh</b></em>' attribute.
@@ -342,7 +366,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__REFRESH = 11;
+	int SECURITY_SCHEME__REFRESH = 13;
 
 	/**
 	 * The feature id for the '<em><b>Scopes</b></em>' attribute list.
@@ -351,7 +375,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__SCOPES = 12;
+	int SECURITY_SCHEME__SCOPES = 14;
 
 	/**
 	 * The feature id for the '<em><b>Flow</b></em>' attribute.
@@ -360,7 +384,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__FLOW = 13;
+	int SECURITY_SCHEME__FLOW = 15;
 
 	/**
 	 * The number of structural features of the '<em>Security Scheme</em>' class.
@@ -369,7 +393,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME_FEATURE_COUNT = 14;
+	int SECURITY_SCHEME_FEATURE_COUNT = 16;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl <em>Link</em>}' class.
@@ -446,22 +470,40 @@
 	int INTERACTION_AFFORDANCE = 4;
 
 	/**
+	 * The feature id for the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION_AFFORDANCE__TITLE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION_AFFORDANCE__DESCRIPTION = 1;
+
+	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_AFFORDANCE__FORMS = 0;
+	int INTERACTION_AFFORDANCE__FORMS = 2;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference list.
+	 * The feature id for the '<em><b>AType</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_AFFORDANCE__TYPE = 1;
+	int INTERACTION_AFFORDANCE__ATYPE = 3;
 
 	/**
 	 * The number of structural features of the '<em>Interaction Affordance</em>' class.
@@ -470,7 +512,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_AFFORDANCE_FEATURE_COUNT = 2;
+	int INTERACTION_AFFORDANCE_FEATURE_COUNT = 4;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.EventAffordanceImpl <em>Event Affordance</em>}' class.
@@ -483,6 +525,24 @@
 	int EVENT_AFFORDANCE = 3;
 
 	/**
+	 * The feature id for the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_AFFORDANCE__TITLE = INTERACTION_AFFORDANCE__TITLE;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EVENT_AFFORDANCE__DESCRIPTION = INTERACTION_AFFORDANCE__DESCRIPTION;
+
+	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -492,22 +552,22 @@
 	int EVENT_AFFORDANCE__FORMS = INTERACTION_AFFORDANCE__FORMS;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference list.
+	 * The feature id for the '<em><b>AType</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT_AFFORDANCE__TYPE = INTERACTION_AFFORDANCE__TYPE;
+	int EVENT_AFFORDANCE__ATYPE = INTERACTION_AFFORDANCE__ATYPE;
 
 	/**
-	 * The feature id for the '<em><b>Base Signal</b></em>' reference.
+	 * The feature id for the '<em><b>Base Reception</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT_AFFORDANCE__BASE_SIGNAL = INTERACTION_AFFORDANCE_FEATURE_COUNT + 0;
+	int EVENT_AFFORDANCE__BASE_RECEPTION = INTERACTION_AFFORDANCE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Data</b></em>' reference.
@@ -556,40 +616,13 @@
 	int FORM = 5;
 
 	/**
-	 * The feature id for the '<em><b>Base Value Specification</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__BASE_VALUE_SPECIFICATION = StructurePackage.META_VALUE_SPECIFICATION__BASE_VALUE_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__TYPE = StructurePackage.META_VALUE_SPECIFICATION__TYPE;
-
-	/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__DESCRIPTION = StructurePackage.META_VALUE_SPECIFICATION__DESCRIPTION;
-
-	/**
 	 * The feature id for the '<em><b>Op</b></em>' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__OP = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+	int FORM__OP = 0;
 
 	/**
 	 * The feature id for the '<em><b>Href</b></em>' attribute.
@@ -598,7 +631,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__HREF = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+	int FORM__HREF = 1;
 
 	/**
 	 * The feature id for the '<em><b>Content Type</b></em>' attribute.
@@ -607,7 +640,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__CONTENT_TYPE = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 2;
+	int FORM__CONTENT_TYPE = 2;
 
 	/**
 	 * The feature id for the '<em><b>Content Coding</b></em>' attribute.
@@ -616,7 +649,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__CONTENT_CODING = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 3;
+	int FORM__CONTENT_CODING = 3;
 
 	/**
 	 * The feature id for the '<em><b>Sub Protocol</b></em>' attribute.
@@ -625,7 +658,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__SUB_PROTOCOL = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 4;
+	int FORM__SUB_PROTOCOL = 4;
 
 	/**
 	 * The feature id for the '<em><b>Scopes</b></em>' attribute list.
@@ -634,7 +667,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__SCOPES = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 5;
+	int FORM__SCOPES = 5;
 
 	/**
 	 * The feature id for the '<em><b>Response</b></em>' attribute.
@@ -643,7 +676,25 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__RESPONSE = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 6;
+	int FORM__RESPONSE = 6;
+
+	/**
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORM__SECURITY = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Comment</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORM__BASE_COMMENT = 8;
 
 	/**
 	 * The number of structural features of the '<em>Form</em>' class.
@@ -652,7 +703,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM_FEATURE_COUNT = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 7;
+	int FORM_FEATURE_COUNT = 9;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.TypeImpl <em>Type</em>}' class.
@@ -702,31 +753,40 @@
 	int DATA_SCHEMA = 7;
 
 	/**
+	 * The feature id for the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_SCHEMA__TITLE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_SCHEMA__DESCRIPTION = 1;
+
+	/**
 	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__BASE_TYPED_ELEMENT = 0;
+	int DATA_SCHEMA__BASE_TYPED_ELEMENT = 2;
 
 	/**
-	 * The feature id for the '<em><b>Enum</b></em>' reference list.
+	 * The feature id for the '<em><b>Enum</b></em>' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__ENUM = 1;
-
-	/**
-	 * The feature id for the '<em><b>Number Interval</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_SCHEMA__NUMBER_INTERVAL = 2;
+	int DATA_SCHEMA__ENUM = 3;
 
 	/**
 	 * The feature id for the '<em><b>Required</b></em>' reference list.
@@ -735,7 +795,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__REQUIRED = 3;
+	int DATA_SCHEMA__REQUIRED = 4;
 
 	/**
 	 * The feature id for the '<em><b>Items</b></em>' reference list.
@@ -744,7 +804,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__ITEMS = 4;
+	int DATA_SCHEMA__ITEMS = 5;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' reference list.
@@ -753,16 +813,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__PROPERTIES = 5;
+	int DATA_SCHEMA__PROPERTIES = 6;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference list.
+	 * The feature id for the '<em><b>AType</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__TYPE = 6;
+	int DATA_SCHEMA__ATYPE = 7;
 
 	/**
 	 * The feature id for the '<em><b>Write Only</b></em>' attribute.
@@ -771,7 +831,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__WRITE_ONLY = 7;
+	int DATA_SCHEMA__WRITE_ONLY = 8;
 
 	/**
 	 * The feature id for the '<em><b>Format</b></em>' attribute.
@@ -780,7 +840,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__FORMAT = 8;
+	int DATA_SCHEMA__FORMAT = 9;
 
 	/**
 	 * The feature id for the '<em><b>One Of</b></em>' reference list.
@@ -789,7 +849,52 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA__ONE_OF = 9;
+	int DATA_SCHEMA__ONE_OF = 10;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_SCHEMA__TYPE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Const</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_SCHEMA__CONST = 12;
+
+	/**
+	 * The feature id for the '<em><b>Min Items</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_SCHEMA__MIN_ITEMS = 13;
+
+	/**
+	 * The feature id for the '<em><b>Max Items</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_SCHEMA__MAX_ITEMS = 14;
+
+	/**
+	 * The feature id for the '<em><b>Read Only</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_SCHEMA__READ_ONLY = 15;
 
 	/**
 	 * The number of structural features of the '<em>Data Schema</em>' class.
@@ -798,7 +903,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEMA_FEATURE_COUNT = 10;
+	int DATA_SCHEMA_FEATURE_COUNT = 16;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl <em>Action Affordance</em>}' class.
@@ -811,6 +916,24 @@
 	int ACTION_AFFORDANCE = 8;
 
 	/**
+	 * The feature id for the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_AFFORDANCE__TITLE = INTERACTION_AFFORDANCE__TITLE;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_AFFORDANCE__DESCRIPTION = INTERACTION_AFFORDANCE__DESCRIPTION;
+
+	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -820,13 +943,22 @@
 	int ACTION_AFFORDANCE__FORMS = INTERACTION_AFFORDANCE__FORMS;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference list.
+	 * The feature id for the '<em><b>AType</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_AFFORDANCE__TYPE = INTERACTION_AFFORDANCE__TYPE;
+	int ACTION_AFFORDANCE__ATYPE = INTERACTION_AFFORDANCE__ATYPE;
+
+	/**
+	 * The feature id for the '<em><b>Base Operation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTION_AFFORDANCE__BASE_OPERATION = INTERACTION_AFFORDANCE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Input</b></em>' reference.
@@ -835,7 +967,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_AFFORDANCE__INPUT = INTERACTION_AFFORDANCE_FEATURE_COUNT + 0;
+	int ACTION_AFFORDANCE__INPUT = INTERACTION_AFFORDANCE_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Output</b></em>' reference.
@@ -844,16 +976,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_AFFORDANCE__OUTPUT = INTERACTION_AFFORDANCE_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Base Behavioral Feature</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE = INTERACTION_AFFORDANCE_FEATURE_COUNT + 2;
+	int ACTION_AFFORDANCE__OUTPUT = INTERACTION_AFFORDANCE_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Safe</b></em>' attribute.
@@ -893,6 +1016,24 @@
 	int PROPERTY_AFFORDANCE = 9;
 
 	/**
+	 * The feature id for the '<em><b>Title</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_AFFORDANCE__TITLE = INTERACTION_AFFORDANCE__TITLE;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_AFFORDANCE__DESCRIPTION = INTERACTION_AFFORDANCE__DESCRIPTION;
+
+	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -902,13 +1043,13 @@
 	int PROPERTY_AFFORDANCE__FORMS = INTERACTION_AFFORDANCE__FORMS;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference list.
+	 * The feature id for the '<em><b>AType</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY_AFFORDANCE__TYPE = INTERACTION_AFFORDANCE__TYPE;
+	int PROPERTY_AFFORDANCE__ATYPE = INTERACTION_AFFORDANCE__ATYPE;
 
 	/**
 	 * The feature id for the '<em><b>Observable</b></em>' attribute.
@@ -1057,6 +1198,28 @@
 	EClass getThing();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Thing#getTitle <em>Title</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Title</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getTitle()
+	 * @see #getThing()
+	 * @generated
+	 */
+	EAttribute getThing_Title();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Thing#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getDescription()
+	 * @see #getThing()
+	 * @generated
+	 */
+	EAttribute getThing_Description();
+
+	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Thing#getBase <em>Base</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1090,6 +1253,17 @@
 	EAttribute getThing_Support();
 
 	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getSecurity <em>Security</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Security</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getSecurity()
+	 * @see #getThing()
+	 * @generated
+	 */
+	EReference getThing_Security();
+
+	/**
 	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getSecurityDefinitions <em>Security Definitions</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1156,26 +1330,26 @@
 	EAttribute getThing_Version();
 
 	/**
-	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getType <em>Type</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getAType <em>AType</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference list '<em>Type</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Thing#getType()
+	 * @return the meta object for the reference list '<em>AType</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getAType()
 	 * @see #getThing()
 	 * @generated
 	 */
-	EReference getThing_Type();
+	EReference getThing_AType();
 
 	/**
-	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getContext <em>Context</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getAContext <em>AContext</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference list '<em>Context</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Thing#getContext()
+	 * @return the meta object for the reference list '<em>AContext</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getAContext()
 	 * @see #getThing()
 	 * @generated
 	 */
-	EReference getThing_Context();
+	EReference getThing_AContext();
 
 	/**
 	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getForms <em>Forms</em>}'.
@@ -1189,6 +1363,17 @@
 	EReference getThing_Forms();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Thing#getBase_Class <em>Base Class</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Class</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getBase_Class()
+	 * @see #getThing()
+	 * @generated
+	 */
+	EReference getThing_Base_Class();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme <em>Security Scheme</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1210,6 +1395,28 @@
 	EReference getSecurityScheme_Base_Classifier();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getTitle <em>Title</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Title</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.SecurityScheme#getTitle()
+	 * @see #getSecurityScheme()
+	 * @generated
+	 */
+	EAttribute getSecurityScheme_Title();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.SecurityScheme#getDescription()
+	 * @see #getSecurityScheme()
+	 * @generated
+	 */
+	EAttribute getSecurityScheme_Description();
+
+	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getScheme <em>Scheme</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1428,17 +1635,6 @@
 	EClass getEventAffordance();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Signal <em>Base Signal</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Base Signal</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Signal()
-	 * @see #getEventAffordance()
-	 * @generated
-	 */
-	EReference getEventAffordance_Base_Signal();
-
-	/**
 	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getData <em>Data</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1472,6 +1668,17 @@
 	EReference getEventAffordance_Cancellation();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Reception <em>Base Reception</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Reception</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.EventAffordance#getBase_Reception()
+	 * @see #getEventAffordance()
+	 * @generated
+	 */
+	EReference getEventAffordance_Base_Reception();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance <em>Interaction Affordance</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1482,6 +1689,28 @@
 	EClass getInteractionAffordance();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getTitle <em>Title</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Title</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.InteractionAffordance#getTitle()
+	 * @see #getInteractionAffordance()
+	 * @generated
+	 */
+	EAttribute getInteractionAffordance_Title();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.InteractionAffordance#getDescription()
+	 * @see #getInteractionAffordance()
+	 * @generated
+	 */
+	EAttribute getInteractionAffordance_Description();
+
+	/**
 	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getForms <em>Forms</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1493,15 +1722,15 @@
 	EReference getInteractionAffordance_Forms();
 
 	/**
-	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getType <em>Type</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.InteractionAffordance#getAType <em>AType</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference list '<em>Type</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.InteractionAffordance#getType()
+	 * @return the meta object for the reference list '<em>AType</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.InteractionAffordance#getAType()
 	 * @see #getInteractionAffordance()
 	 * @generated
 	 */
-	EReference getInteractionAffordance_Type();
+	EReference getInteractionAffordance_AType();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.Form <em>Form</em>}'.
@@ -1591,6 +1820,28 @@
 	EAttribute getForm_Response();
 
 	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Form#getSecurity <em>Security</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Security</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Form#getSecurity()
+	 * @see #getForm()
+	 * @generated
+	 */
+	EReference getForm_Security();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Form#getBase_Comment <em>Base Comment</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Comment</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Form#getBase_Comment()
+	 * @see #getForm()
+	 * @generated
+	 */
+	EReference getForm_Base_Comment();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.Type <em>Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1633,6 +1884,28 @@
 	EClass getDataSchema();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getTitle <em>Title</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Title</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getTitle()
+	 * @see #getDataSchema()
+	 * @generated
+	 */
+	EAttribute getDataSchema_Title();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getDescription()
+	 * @see #getDataSchema()
+	 * @generated
+	 */
+	EAttribute getDataSchema_Description();
+
+	/**
 	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getBase_TypedElement <em>Base Typed Element</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1644,26 +1917,15 @@
 	EReference getDataSchema_Base_TypedElement();
 
 	/**
-	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getEnum <em>Enum</em>}'.
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getEnum <em>Enum</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference list '<em>Enum</em>'.
+	 * @return the meta object for the attribute list '<em>Enum</em>'.
 	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getEnum()
 	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EReference getDataSchema_Enum();
-
-	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getNumberInterval <em>Number Interval</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Number Interval</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getNumberInterval()
-	 * @see #getDataSchema()
-	 * @generated
-	 */
-	EReference getDataSchema_NumberInterval();
+	EAttribute getDataSchema_Enum();
 
 	/**
 	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getRequired <em>Required</em>}'.
@@ -1699,15 +1961,15 @@
 	EReference getDataSchema_Properties();
 
 	/**
-	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getType <em>Type</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getAType <em>AType</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference list '<em>Type</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getType()
+	 * @return the meta object for the reference list '<em>AType</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getAType()
 	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EReference getDataSchema_Type();
+	EReference getDataSchema_AType();
 
 	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#isWriteOnly <em>Write Only</em>}'.
@@ -1743,6 +2005,61 @@
 	EReference getDataSchema_OneOf();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getType()
+	 * @see #getDataSchema()
+	 * @generated
+	 */
+	EAttribute getDataSchema_Type();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getConst <em>Const</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Const</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getConst()
+	 * @see #getDataSchema()
+	 * @generated
+	 */
+	EAttribute getDataSchema_Const();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getMinItems <em>Min Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min Items</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getMinItems()
+	 * @see #getDataSchema()
+	 * @generated
+	 */
+	EAttribute getDataSchema_MinItems();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getMaxItems <em>Max Items</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max Items</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getMaxItems()
+	 * @see #getDataSchema()
+	 * @generated
+	 */
+	EAttribute getDataSchema_MaxItems();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataSchema#isReadOnly <em>Read Only</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Read Only</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#isReadOnly()
+	 * @see #getDataSchema()
+	 * @generated
+	 */
+	EAttribute getDataSchema_ReadOnly();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.ActionAffordance <em>Action Affordance</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1775,17 +2092,6 @@
 	EReference getActionAffordance_Output();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Base Behavioral Feature</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_BehavioralFeature()
-	 * @see #getActionAffordance()
-	 * @generated
-	 */
-	EReference getActionAffordance_Base_BehavioralFeature();
-
-	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#isSafe <em>Safe</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1808,6 +2114,17 @@
 	EAttribute getActionAffordance_Idempotent();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_Operation <em>Base Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Operation</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.ActionAffordance#getBase_Operation()
+	 * @see #getActionAffordance()
+	 * @generated
+	 */
+	EReference getActionAffordance_Base_Operation();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.PropertyAffordance <em>Property Affordance</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1973,6 +2290,22 @@
 		EClass THING = eINSTANCE.getThing();
 
 		/**
+		 * The meta object literal for the '<em><b>Title</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THING__TITLE = eINSTANCE.getThing_Title();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THING__DESCRIPTION = eINSTANCE.getThing_Description();
+
+		/**
 		 * The meta object literal for the '<em><b>Base</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1997,6 +2330,14 @@
 		EAttribute THING__SUPPORT = eINSTANCE.getThing_Support();
 
 		/**
+		 * The meta object literal for the '<em><b>Security</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference THING__SECURITY = eINSTANCE.getThing_Security();
+
+		/**
 		 * The meta object literal for the '<em><b>Security Definitions</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2045,20 +2386,20 @@
 		EAttribute THING__VERSION = eINSTANCE.getThing_Version();
 
 		/**
-		 * The meta object literal for the '<em><b>Type</b></em>' reference list feature.
+		 * The meta object literal for the '<em><b>AType</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference THING__TYPE = eINSTANCE.getThing_Type();
+		EReference THING__ATYPE = eINSTANCE.getThing_AType();
 
 		/**
-		 * The meta object literal for the '<em><b>Context</b></em>' reference list feature.
+		 * The meta object literal for the '<em><b>AContext</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference THING__CONTEXT = eINSTANCE.getThing_Context();
+		EReference THING__ACONTEXT = eINSTANCE.getThing_AContext();
 
 		/**
 		 * The meta object literal for the '<em><b>Forms</b></em>' reference list feature.
@@ -2069,6 +2410,14 @@
 		EReference THING__FORMS = eINSTANCE.getThing_Forms();
 
 		/**
+		 * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference THING__BASE_CLASS = eINSTANCE.getThing_Base_Class();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl <em>Security Scheme</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2087,6 +2436,22 @@
 		EReference SECURITY_SCHEME__BASE_CLASSIFIER = eINSTANCE.getSecurityScheme_Base_Classifier();
 
 		/**
+		 * The meta object literal for the '<em><b>Title</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SECURITY_SCHEME__TITLE = eINSTANCE.getSecurityScheme_Title();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SECURITY_SCHEME__DESCRIPTION = eINSTANCE.getSecurityScheme_Description();
+
+		/**
 		 * The meta object literal for the '<em><b>Scheme</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2251,14 +2616,6 @@
 		EClass EVENT_AFFORDANCE = eINSTANCE.getEventAffordance();
 
 		/**
-		 * The meta object literal for the '<em><b>Base Signal</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference EVENT_AFFORDANCE__BASE_SIGNAL = eINSTANCE.getEventAffordance_Base_Signal();
-
-		/**
 		 * The meta object literal for the '<em><b>Data</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2283,6 +2640,14 @@
 		EReference EVENT_AFFORDANCE__CANCELLATION = eINSTANCE.getEventAffordance_Cancellation();
 
 		/**
+		 * The meta object literal for the '<em><b>Base Reception</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EVENT_AFFORDANCE__BASE_RECEPTION = eINSTANCE.getEventAffordance_Base_Reception();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.InteractionAffordanceImpl <em>Interaction Affordance</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2293,6 +2658,22 @@
 		EClass INTERACTION_AFFORDANCE = eINSTANCE.getInteractionAffordance();
 
 		/**
+		 * The meta object literal for the '<em><b>Title</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INTERACTION_AFFORDANCE__TITLE = eINSTANCE.getInteractionAffordance_Title();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INTERACTION_AFFORDANCE__DESCRIPTION = eINSTANCE.getInteractionAffordance_Description();
+
+		/**
 		 * The meta object literal for the '<em><b>Forms</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2301,12 +2682,12 @@
 		EReference INTERACTION_AFFORDANCE__FORMS = eINSTANCE.getInteractionAffordance_Forms();
 
 		/**
-		 * The meta object literal for the '<em><b>Type</b></em>' reference list feature.
+		 * The meta object literal for the '<em><b>AType</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference INTERACTION_AFFORDANCE__TYPE = eINSTANCE.getInteractionAffordance_Type();
+		EReference INTERACTION_AFFORDANCE__ATYPE = eINSTANCE.getInteractionAffordance_AType();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl <em>Form</em>}' class.
@@ -2375,6 +2756,22 @@
 		EAttribute FORM__RESPONSE = eINSTANCE.getForm_Response();
 
 		/**
+		 * The meta object literal for the '<em><b>Security</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FORM__SECURITY = eINSTANCE.getForm_Security();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Comment</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FORM__BASE_COMMENT = eINSTANCE.getForm_Base_Comment();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.TypeImpl <em>Type</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2411,6 +2808,22 @@
 		EClass DATA_SCHEMA = eINSTANCE.getDataSchema();
 
 		/**
+		 * The meta object literal for the '<em><b>Title</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_SCHEMA__TITLE = eINSTANCE.getDataSchema_Title();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_SCHEMA__DESCRIPTION = eINSTANCE.getDataSchema_Description();
+
+		/**
 		 * The meta object literal for the '<em><b>Base Typed Element</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2419,20 +2832,12 @@
 		EReference DATA_SCHEMA__BASE_TYPED_ELEMENT = eINSTANCE.getDataSchema_Base_TypedElement();
 
 		/**
-		 * The meta object literal for the '<em><b>Enum</b></em>' reference list feature.
+		 * The meta object literal for the '<em><b>Enum</b></em>' attribute list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference DATA_SCHEMA__ENUM = eINSTANCE.getDataSchema_Enum();
-
-		/**
-		 * The meta object literal for the '<em><b>Number Interval</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference DATA_SCHEMA__NUMBER_INTERVAL = eINSTANCE.getDataSchema_NumberInterval();
+		EAttribute DATA_SCHEMA__ENUM = eINSTANCE.getDataSchema_Enum();
 
 		/**
 		 * The meta object literal for the '<em><b>Required</b></em>' reference list feature.
@@ -2459,12 +2864,12 @@
 		EReference DATA_SCHEMA__PROPERTIES = eINSTANCE.getDataSchema_Properties();
 
 		/**
-		 * The meta object literal for the '<em><b>Type</b></em>' reference list feature.
+		 * The meta object literal for the '<em><b>AType</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference DATA_SCHEMA__TYPE = eINSTANCE.getDataSchema_Type();
+		EReference DATA_SCHEMA__ATYPE = eINSTANCE.getDataSchema_AType();
 
 		/**
 		 * The meta object literal for the '<em><b>Write Only</b></em>' attribute feature.
@@ -2491,6 +2896,46 @@
 		EReference DATA_SCHEMA__ONE_OF = eINSTANCE.getDataSchema_OneOf();
 
 		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_SCHEMA__TYPE = eINSTANCE.getDataSchema_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Const</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_SCHEMA__CONST = eINSTANCE.getDataSchema_Const();
+
+		/**
+		 * The meta object literal for the '<em><b>Min Items</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_SCHEMA__MIN_ITEMS = eINSTANCE.getDataSchema_MinItems();
+
+		/**
+		 * The meta object literal for the '<em><b>Max Items</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_SCHEMA__MAX_ITEMS = eINSTANCE.getDataSchema_MaxItems();
+
+		/**
+		 * The meta object literal for the '<em><b>Read Only</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_SCHEMA__READ_ONLY = eINSTANCE.getDataSchema_ReadOnly();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl <em>Action Affordance</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2517,14 +2962,6 @@
 		EReference ACTION_AFFORDANCE__OUTPUT = eINSTANCE.getActionAffordance_Output();
 
 		/**
-		 * The meta object literal for the '<em><b>Base Behavioral Feature</b></em>' reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE = eINSTANCE.getActionAffordance_Base_BehavioralFeature();
-
-		/**
 		 * The meta object literal for the '<em><b>Safe</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2541,6 +2978,14 @@
 		EAttribute ACTION_AFFORDANCE__IDEMPOTENT = eINSTANCE.getActionAffordance_Idempotent();
 
 		/**
+		 * The meta object literal for the '<em><b>Base Operation</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ACTION_AFFORDANCE__BASE_OPERATION = eINSTANCE.getActionAffordance_Base_Operation();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.PropertyAffordanceImpl <em>Property Affordance</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionAffordanceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionAffordanceImpl.java
index bc001a4..8ca1596 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionAffordanceImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionAffordanceImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -25,6 +26,13 @@
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
 import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 
 /**
  * <!-- begin-user-doc -->
@@ -34,45 +42,26 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl#getBase_Operation <em>Base Operation</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl#getInput <em>Input</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl#getOutput <em>Output</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl#isSafe <em>Safe</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionAffordanceImpl#isIdempotent <em>Idempotent</em>}</li>
  * </ul>
  *
  * @generated
  */
+@JsonPropertyOrder({"@type", "title", "description", "input", "output", "safe", "idempotent"})
 public class ActionAffordanceImpl extends InteractionAffordanceImpl implements ActionAffordance {
 	/**
-	 * The cached value of the '{@link #getInput() <em>Input</em>}' reference.
+	 * The cached value of the '{@link #getBase_Operation() <em>Base Operation</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getInput()
+	 * @see #getBase_Operation()
 	 * @generated
 	 * @ordered
 	 */
-	protected DataSchema input;
-
-	/**
-	 * The cached value of the '{@link #getOutput() <em>Output</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getOutput()
-	 * @generated
-	 * @ordered
-	 */
-	protected DataSchema output;
-
-	/**
-	 * The cached value of the '{@link #getBase_BehavioralFeature() <em>Base Behavioral Feature</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getBase_BehavioralFeature()
-	 * @generated
-	 * @ordered
-	 */
-	protected BehavioralFeature base_BehavioralFeature;
+	protected Operation base_Operation;
 
 	/**
 	 * The default value of the '{@link #isSafe() <em>Safe</em>}' attribute.
@@ -139,56 +128,28 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("input")
 	public DataSchema getInput() {
-		if (input != null && input.eIsProxy()) {
-			InternalEObject oldInput = (InternalEObject)input;
-			input = (DataSchema)eResolveProxy(oldInput);
-			if (input != oldInput) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.ACTION_AFFORDANCE__INPUT, oldInput, input));
-			}
-		}
-		return input;
+		DataSchema input = basicGetInput();
+		return input != null && input.eIsProxy() ? (DataSchema)eResolveProxy((InternalEObject)input) : input;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	public DataSchema basicGetInput() {
-		return input;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setInput(DataSchema newInput) {
-		DataSchema oldInput = input;
-		input = newInput;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.ACTION_AFFORDANCE__INPUT, oldInput, input));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public DataSchema getOutput() {
-		if (output != null && output.eIsProxy()) {
-			InternalEObject oldOutput = (InternalEObject)output;
-			output = (DataSchema)eResolveProxy(oldOutput);
-			if (output != oldOutput) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.ACTION_AFFORDANCE__OUTPUT, oldOutput, output));
+		BehavioralFeature behaviorFeature = this.getBase_Operation();
+		if (behaviorFeature != null) {
+			for (Parameter inputParameter : behaviorFeature.inputParameters()) {
+				DataSchema dataSchema = UMLUtil.getStereotypeApplication(inputParameter, DataSchema.class);
+				if (dataSchema != null) {
+					return dataSchema;
+				}
 			}
 		}
-		return output;
+		return null;
 	}
 
 	/**
@@ -196,48 +157,42 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
+	@JsonIgnore
+	public void setInput(DataSchema newInput) {
+		// TODO: implement this method to set the 'Input' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonGetter("output")
+	public DataSchema getOutput() {
+		DataSchema output = basicGetOutput();
+		return output != null && output.eIsProxy() ? (DataSchema)eResolveProxy((InternalEObject)output) : output;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
 	public DataSchema basicGetOutput() {
-		return output;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setOutput(DataSchema newOutput) {
-		DataSchema oldOutput = output;
-		output = newOutput;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.ACTION_AFFORDANCE__OUTPUT, oldOutput, output));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public BehavioralFeature getBase_BehavioralFeature() {
-		if (base_BehavioralFeature != null && base_BehavioralFeature.eIsProxy()) {
-			InternalEObject oldBase_BehavioralFeature = (InternalEObject)base_BehavioralFeature;
-			base_BehavioralFeature = (BehavioralFeature)eResolveProxy(oldBase_BehavioralFeature);
-			if (base_BehavioralFeature != oldBase_BehavioralFeature) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE, oldBase_BehavioralFeature, base_BehavioralFeature));
+		BehavioralFeature behaviorFeature = this.getBase_Operation();
+		if (behaviorFeature != null) {
+			for (Parameter inputParameter : behaviorFeature.inputParameters()) {
+				DataSchema dataSchema = UMLUtil.getStereotypeApplication(inputParameter, DataSchema.class);
+				if (dataSchema != null) {
+					return dataSchema;
+				}
 			}
 		}
-		return base_BehavioralFeature;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public BehavioralFeature basicGetBase_BehavioralFeature() {
-		return base_BehavioralFeature;
+		return null;
 	}
 
 	/**
@@ -246,11 +201,11 @@
 	 * @generated
 	 */
 	@Override
-	public void setBase_BehavioralFeature(BehavioralFeature newBase_BehavioralFeature) {
-		BehavioralFeature oldBase_BehavioralFeature = base_BehavioralFeature;
-		base_BehavioralFeature = newBase_BehavioralFeature;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE, oldBase_BehavioralFeature, base_BehavioralFeature));
+	@JsonIgnore
+	public void setOutput(DataSchema newOutput) {
+		// TODO: implement this method to set the 'Output' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
 	}
 
 	/**
@@ -259,6 +214,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("safe")
 	public boolean isSafe() {
 		return safe;
 	}
@@ -269,6 +225,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setSafe(boolean newSafe) {
 		boolean oldSafe = safe;
 		safe = newSafe;
@@ -282,6 +239,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("idempotent")
 	public boolean isIdempotent() {
 		return idempotent;
 	}
@@ -292,6 +250,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setIdempotent(boolean newIdempotent) {
 		boolean oldIdempotent = idempotent;
 		idempotent = newIdempotent;
@@ -305,17 +264,59 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public Operation getBase_Operation() {
+		if (base_Operation != null && base_Operation.eIsProxy()) {
+			InternalEObject oldBase_Operation = (InternalEObject)base_Operation;
+			base_Operation = (Operation)eResolveProxy(oldBase_Operation);
+			if (base_Operation != oldBase_Operation) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.ACTION_AFFORDANCE__BASE_OPERATION, oldBase_Operation, base_Operation));
+			}
+		}
+		return base_Operation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Operation basicGetBase_Operation() {
+		return base_Operation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setBase_Operation(Operation newBase_Operation) {
+		Operation oldBase_Operation = base_Operation;
+		base_Operation = newBase_Operation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.ACTION_AFFORDANCE__BASE_OPERATION, oldBase_Operation, base_Operation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case WoTPackage.ACTION_AFFORDANCE__BASE_OPERATION:
+				if (resolve) return getBase_Operation();
+				return basicGetBase_Operation();
 			case WoTPackage.ACTION_AFFORDANCE__INPUT:
 				if (resolve) return getInput();
 				return basicGetInput();
 			case WoTPackage.ACTION_AFFORDANCE__OUTPUT:
 				if (resolve) return getOutput();
 				return basicGetOutput();
-			case WoTPackage.ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE:
-				if (resolve) return getBase_BehavioralFeature();
-				return basicGetBase_BehavioralFeature();
 			case WoTPackage.ACTION_AFFORDANCE__SAFE:
 				return isSafe();
 			case WoTPackage.ACTION_AFFORDANCE__IDEMPOTENT:
@@ -332,15 +333,15 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case WoTPackage.ACTION_AFFORDANCE__BASE_OPERATION:
+				setBase_Operation((Operation)newValue);
+				return;
 			case WoTPackage.ACTION_AFFORDANCE__INPUT:
 				setInput((DataSchema)newValue);
 				return;
 			case WoTPackage.ACTION_AFFORDANCE__OUTPUT:
 				setOutput((DataSchema)newValue);
 				return;
-			case WoTPackage.ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE:
-				setBase_BehavioralFeature((BehavioralFeature)newValue);
-				return;
 			case WoTPackage.ACTION_AFFORDANCE__SAFE:
 				setSafe((Boolean)newValue);
 				return;
@@ -359,15 +360,15 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case WoTPackage.ACTION_AFFORDANCE__BASE_OPERATION:
+				setBase_Operation((Operation)null);
+				return;
 			case WoTPackage.ACTION_AFFORDANCE__INPUT:
 				setInput((DataSchema)null);
 				return;
 			case WoTPackage.ACTION_AFFORDANCE__OUTPUT:
 				setOutput((DataSchema)null);
 				return;
-			case WoTPackage.ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE:
-				setBase_BehavioralFeature((BehavioralFeature)null);
-				return;
 			case WoTPackage.ACTION_AFFORDANCE__SAFE:
 				setSafe(SAFE_EDEFAULT);
 				return;
@@ -386,12 +387,12 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case WoTPackage.ACTION_AFFORDANCE__BASE_OPERATION:
+				return base_Operation != null;
 			case WoTPackage.ACTION_AFFORDANCE__INPUT:
-				return input != null;
+				return basicGetInput() != null;
 			case WoTPackage.ACTION_AFFORDANCE__OUTPUT:
-				return output != null;
-			case WoTPackage.ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE:
-				return base_BehavioralFeature != null;
+				return basicGetOutput() != null;
 			case WoTPackage.ACTION_AFFORDANCE__SAFE:
 				return safe != SAFE_EDEFAULT;
 			case WoTPackage.ACTION_AFFORDANCE__IDEMPOTENT:
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ContextImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ContextImpl.java
index 40ca2df..a98b664 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ContextImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ContextImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -26,6 +27,8 @@
 
 import org.eclipse.uml2.uml.Namespace;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Context</b></em>'.
@@ -119,6 +122,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public Namespace getBase_Namespace() {
 		if (base_Namespace != null && base_Namespace.eIsProxy()) {
 			InternalEObject oldBase_Namespace = (InternalEObject)base_Namespace;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemaImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemaImpl.java
index 621f688..895dc25 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemaImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemaImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -18,25 +19,31 @@
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.EList;
-
+import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
-
-import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
-
 import org.eclipse.papyrus.iotml.wot.DataSchema;
 import org.eclipse.papyrus.iotml.wot.Type;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
-
-import org.eclipse.uml2.uml.Interval;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.MultiplicityElement;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuralFeature;
 import org.eclipse.uml2.uml.TypedElement;
 
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Data Schema</b></em>'.
@@ -45,22 +52,49 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getBase_TypedElement <em>Base Typed Element</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getEnum <em>Enum</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getNumberInterval <em>Number Interval</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getRequired <em>Required</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getItems <em>Items</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getProperties <em>Properties</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getAType <em>AType</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#isWriteOnly <em>Write Only</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getFormat <em>Format</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getOneOf <em>One Of</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getConst <em>Const</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getMinItems <em>Min Items</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#getMaxItems <em>Max Items</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl#isReadOnly <em>Read Only</em>}</li>
  * </ul>
  *
  * @generated
  */
+@JsonPropertyOrder({"@type", "title", "description", "type", "const", "oneOf", "enum", "readOnly", "writeOnly", "format", "required", "properties", "items", "minItems", "maxItems"})
 public class DataSchemaImpl extends MinimalEObjectImpl.Container implements DataSchema {
 	/**
+	 * The default value of the '{@link #getTitle() <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTitle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TITLE_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
 	 * The cached value of the '{@link #getBase_TypedElement() <em>Base Typed Element</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -71,24 +105,14 @@
 	protected TypedElement base_TypedElement;
 
 	/**
-	 * The cached value of the '{@link #getEnum() <em>Enum</em>}' reference list.
+	 * The cached value of the '{@link #getEnum() <em>Enum</em>}' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #getEnum()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<MetaValueSpecification> enum_;
-
-	/**
-	 * The cached value of the '{@link #getNumberInterval() <em>Number Interval</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getNumberInterval()
-	 * @generated
-	 * @ordered
-	 */
-	protected Interval numberInterval;
+	protected EList<String> enum_;
 
 	/**
 	 * The cached value of the '{@link #getRequired() <em>Required</em>}' reference list.
@@ -121,14 +145,14 @@
 	protected EList<DataSchema> properties;
 
 	/**
-	 * The cached value of the '{@link #getType() <em>Type</em>}' reference list.
+	 * The cached value of the '{@link #getAType() <em>AType</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getType()
+	 * @see #getAType()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Type> type;
+	protected EList<Type> aType;
 
 	/**
 	 * The default value of the '{@link #isWriteOnly() <em>Write Only</em>}' attribute.
@@ -181,6 +205,56 @@
 	protected EList<DataSchema> oneOf;
 
 	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TYPE_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getConst() <em>Const</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConst()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CONST_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getMinItems() <em>Min Items</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MIN_ITEMS_EDEFAULT = 0;
+
+	/**
+	 * The default value of the '{@link #getMaxItems() <em>Max Items</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MAX_ITEMS_EDEFAULT = 0;
+
+	/**
+	 * The default value of the '{@link #isReadOnly() <em>Read Only</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReadOnly()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean READ_ONLY_EDEFAULT = false;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -202,9 +276,70 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("title")
+	public String getTitle() {
+		NamedElement namedElement = this.getBase_TypedElement();
+		if (namedElement != null) {
+			return namedElement.getName();
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public void setTitle(String newTitle) {
+		// TODO: implement this method to set the 'Title' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("description")
+	public String getDescription() {
+		Element element = this.getBase_TypedElement();
+		if (element != null) {
+			for (Comment comment : element.getOwnedComments()) {
+				if (comment.getBody() != null && !comment.getBody().isEmpty()) {
+					return comment.getBody();
+				}
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setDescription(String newDescription) {
+		// TODO: implement this method to set the 'Description' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
 	public TypedElement getBase_TypedElement() {
 		if (base_TypedElement != null && base_TypedElement.eIsProxy()) {
 			InternalEObject oldBase_TypedElement = (InternalEObject)base_TypedElement;
@@ -232,6 +367,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setBase_TypedElement(TypedElement newBase_TypedElement) {
 		TypedElement oldBase_TypedElement = base_TypedElement;
 		base_TypedElement = newBase_TypedElement;
@@ -245,9 +381,10 @@
 	 * @generated
 	 */
 	@Override
-	public EList<MetaValueSpecification> getEnum() {
+	@JsonGetter("enum")
+	public EList<String> getEnum() {
 		if (enum_ == null) {
-			enum_ = new EObjectResolvingEList<MetaValueSpecification>(MetaValueSpecification.class, this, WoTPackage.DATA_SCHEMA__ENUM);
+			enum_ = new EDataTypeUniqueEList<String>(String.class, this, WoTPackage.DATA_SCHEMA__ENUM);
 		}
 		return enum_;
 	}
@@ -258,46 +395,7 @@
 	 * @generated
 	 */
 	@Override
-	public Interval getNumberInterval() {
-		if (numberInterval != null && numberInterval.eIsProxy()) {
-			InternalEObject oldNumberInterval = (InternalEObject)numberInterval;
-			numberInterval = (Interval)eResolveProxy(oldNumberInterval);
-			if (numberInterval != oldNumberInterval) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL, oldNumberInterval, numberInterval));
-			}
-		}
-		return numberInterval;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Interval basicGetNumberInterval() {
-		return numberInterval;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setNumberInterval(Interval newNumberInterval) {
-		Interval oldNumberInterval = numberInterval;
-		numberInterval = newNumberInterval;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL, oldNumberInterval, numberInterval));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
+	@JsonIgnore
 	public EList<Property> getRequired() {
 		if (required == null) {
 			required = new EObjectResolvingEList<Property>(Property.class, this, WoTPackage.DATA_SCHEMA__REQUIRED);
@@ -310,6 +408,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@JsonIgnore
 	public Property getRequired(String name, org.eclipse.uml2.uml.Type type) {
 		return getRequired(name, type, false, null);
 	}
@@ -319,6 +418,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@JsonIgnore
 	public Property getRequired(String name, org.eclipse.uml2.uml.Type type, boolean ignoreCase, EClass eClass) {
 		requiredLoop: for (Property required : getRequired()) {
 			if (eClass != null && !eClass.isInstance(required))
@@ -338,6 +438,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("items")
 	public EList<DataSchema> getItems() {
 		if (items == null) {
 			items = new EObjectResolvingEList<DataSchema>(DataSchema.class, this, WoTPackage.DATA_SCHEMA__ITEMS);
@@ -351,6 +452,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("properties")
 	public EList<DataSchema> getProperties() {
 		if (properties == null) {
 			properties = new EObjectResolvingEList<DataSchema>(DataSchema.class, this, WoTPackage.DATA_SCHEMA__PROPERTIES);
@@ -364,11 +466,12 @@
 	 * @generated
 	 */
 	@Override
-	public EList<Type> getType() {
-		if (type == null) {
-			type = new EObjectResolvingEList<Type>(Type.class, this, WoTPackage.DATA_SCHEMA__TYPE);
+	@JsonGetter("@type")
+	public EList<Type> getAType() {
+		if (aType == null) {
+			aType = new EObjectResolvingEList<Type>(Type.class, this, WoTPackage.DATA_SCHEMA__ATYPE);
 		}
-		return type;
+		return aType;
 	}
 
 	/**
@@ -377,6 +480,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("writeOnly")
 	public boolean isWriteOnly() {
 		return writeOnly;
 	}
@@ -387,6 +491,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setWriteOnly(boolean newWriteOnly) {
 		boolean oldWriteOnly = writeOnly;
 		writeOnly = newWriteOnly;
@@ -400,6 +505,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("format")
 	public String getFormat() {
 		return format;
 	}
@@ -410,6 +516,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setFormat(String newFormat) {
 		String oldFormat = format;
 		format = newFormat;
@@ -423,6 +530,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("oneOf")
 	public EList<DataSchema> getOneOf() {
 		if (oneOf == null) {
 			oneOf = new EObjectResolvingEList<DataSchema>(DataSchema.class, this, WoTPackage.DATA_SCHEMA__ONE_OF);
@@ -433,33 +541,212 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("type")
+	public String getType() {
+		TypedElement typedElement = this.getBase_TypedElement();
+		if (typedElement != null) {
+			if (typedElement instanceof MultiplicityElement) {
+				MultiplicityElement multiplicityElement = (MultiplicityElement) typedElement;
+				if (multiplicityElement.upperBound() > 1) {
+					return "array";
+				}
+			}
+			if (typedElement.getType() != null) {
+				String typeName = typedElement.getType().getName();
+				if (typeName.equalsIgnoreCase("Boolean")) {
+					return "boolean";		
+				} else if (typeName.equalsIgnoreCase("Integer") || typeName.equalsIgnoreCase("UnlimitedNatural")) {
+					return "integer";
+				} else if (typeName.equalsIgnoreCase("String")) {
+					return "string";
+				} else {
+					return "object";
+				}
+			}
+		}
+		return "null";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setType(String newType) {
+		// TODO: implement this method to set the 'Type' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("const")
+	public String getConst() {
+		TypedElement typedElement = this.getBase_TypedElement();
+		if (typedElement instanceof Property) {
+			Property property = (Property) typedElement;
+			if (property.getDefault() != null) {
+				return property.getDefault();
+			}
+		} else if (typedElement instanceof Parameter) {
+			Parameter parameter = (Parameter) typedElement;
+			if (parameter.getDefault() != null) {
+				return parameter.getDefault();
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setConst(String newConst) {
+		// TODO: implement this method to set the 'Const' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("minItems")
+	public int getMinItems() {
+		TypedElement typedElement = this.getBase_TypedElement();
+		if (typedElement instanceof MultiplicityElement) {
+			MultiplicityElement multiplicityElement = (MultiplicityElement) typedElement;
+			return multiplicityElement.lowerBound();
+		}
+		return 1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setMinItems(int newMinItems) {
+		// TODO: implement this method to set the 'Min Items' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("maxItems")
+	public int getMaxItems() {
+		TypedElement typedElement = this.getBase_TypedElement();
+		if (typedElement instanceof MultiplicityElement) {
+			MultiplicityElement multiplicityElement = (MultiplicityElement) typedElement;
+			return multiplicityElement.upperBound();
+		}
+		return 1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setMaxItems(int newMaxItems) {
+		// TODO: implement this method to set the 'Max Items' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("readOnly")
+	public boolean isReadOnly() {
+		TypedElement typedElement = this.getBase_TypedElement();
+		if (typedElement instanceof StructuralFeature) {
+			StructuralFeature structuralFeature = (StructuralFeature) typedElement;
+			return structuralFeature.isReadOnly();
+		}
+		return false;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setReadOnly(boolean newReadOnly) {
+		// TODO: implement this method to set the 'Read Only' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case WoTPackage.DATA_SCHEMA__TITLE:
+				return getTitle();
+			case WoTPackage.DATA_SCHEMA__DESCRIPTION:
+				return getDescription();
 			case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT:
 				if (resolve) return getBase_TypedElement();
 				return basicGetBase_TypedElement();
 			case WoTPackage.DATA_SCHEMA__ENUM:
 				return getEnum();
-			case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL:
-				if (resolve) return getNumberInterval();
-				return basicGetNumberInterval();
 			case WoTPackage.DATA_SCHEMA__REQUIRED:
 				return getRequired();
 			case WoTPackage.DATA_SCHEMA__ITEMS:
 				return getItems();
 			case WoTPackage.DATA_SCHEMA__PROPERTIES:
 				return getProperties();
-			case WoTPackage.DATA_SCHEMA__TYPE:
-				return getType();
+			case WoTPackage.DATA_SCHEMA__ATYPE:
+				return getAType();
 			case WoTPackage.DATA_SCHEMA__WRITE_ONLY:
 				return isWriteOnly();
 			case WoTPackage.DATA_SCHEMA__FORMAT:
 				return getFormat();
 			case WoTPackage.DATA_SCHEMA__ONE_OF:
 				return getOneOf();
+			case WoTPackage.DATA_SCHEMA__TYPE:
+				return getType();
+			case WoTPackage.DATA_SCHEMA__CONST:
+				return getConst();
+			case WoTPackage.DATA_SCHEMA__MIN_ITEMS:
+				return getMinItems();
+			case WoTPackage.DATA_SCHEMA__MAX_ITEMS:
+				return getMaxItems();
+			case WoTPackage.DATA_SCHEMA__READ_ONLY:
+				return isReadOnly();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -473,15 +760,18 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case WoTPackage.DATA_SCHEMA__TITLE:
+				setTitle((String)newValue);
+				return;
+			case WoTPackage.DATA_SCHEMA__DESCRIPTION:
+				setDescription((String)newValue);
+				return;
 			case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT:
 				setBase_TypedElement((TypedElement)newValue);
 				return;
 			case WoTPackage.DATA_SCHEMA__ENUM:
 				getEnum().clear();
-				getEnum().addAll((Collection<? extends MetaValueSpecification>)newValue);
-				return;
-			case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL:
-				setNumberInterval((Interval)newValue);
+				getEnum().addAll((Collection<? extends String>)newValue);
 				return;
 			case WoTPackage.DATA_SCHEMA__REQUIRED:
 				getRequired().clear();
@@ -495,9 +785,9 @@
 				getProperties().clear();
 				getProperties().addAll((Collection<? extends DataSchema>)newValue);
 				return;
-			case WoTPackage.DATA_SCHEMA__TYPE:
-				getType().clear();
-				getType().addAll((Collection<? extends Type>)newValue);
+			case WoTPackage.DATA_SCHEMA__ATYPE:
+				getAType().clear();
+				getAType().addAll((Collection<? extends Type>)newValue);
 				return;
 			case WoTPackage.DATA_SCHEMA__WRITE_ONLY:
 				setWriteOnly((Boolean)newValue);
@@ -509,6 +799,21 @@
 				getOneOf().clear();
 				getOneOf().addAll((Collection<? extends DataSchema>)newValue);
 				return;
+			case WoTPackage.DATA_SCHEMA__TYPE:
+				setType((String)newValue);
+				return;
+			case WoTPackage.DATA_SCHEMA__CONST:
+				setConst((String)newValue);
+				return;
+			case WoTPackage.DATA_SCHEMA__MIN_ITEMS:
+				setMinItems((Integer)newValue);
+				return;
+			case WoTPackage.DATA_SCHEMA__MAX_ITEMS:
+				setMaxItems((Integer)newValue);
+				return;
+			case WoTPackage.DATA_SCHEMA__READ_ONLY:
+				setReadOnly((Boolean)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -521,15 +826,18 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case WoTPackage.DATA_SCHEMA__TITLE:
+				setTitle(TITLE_EDEFAULT);
+				return;
+			case WoTPackage.DATA_SCHEMA__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
 			case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT:
 				setBase_TypedElement((TypedElement)null);
 				return;
 			case WoTPackage.DATA_SCHEMA__ENUM:
 				getEnum().clear();
 				return;
-			case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL:
-				setNumberInterval((Interval)null);
-				return;
 			case WoTPackage.DATA_SCHEMA__REQUIRED:
 				getRequired().clear();
 				return;
@@ -539,8 +847,8 @@
 			case WoTPackage.DATA_SCHEMA__PROPERTIES:
 				getProperties().clear();
 				return;
-			case WoTPackage.DATA_SCHEMA__TYPE:
-				getType().clear();
+			case WoTPackage.DATA_SCHEMA__ATYPE:
+				getAType().clear();
 				return;
 			case WoTPackage.DATA_SCHEMA__WRITE_ONLY:
 				setWriteOnly(WRITE_ONLY_EDEFAULT);
@@ -551,6 +859,21 @@
 			case WoTPackage.DATA_SCHEMA__ONE_OF:
 				getOneOf().clear();
 				return;
+			case WoTPackage.DATA_SCHEMA__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+			case WoTPackage.DATA_SCHEMA__CONST:
+				setConst(CONST_EDEFAULT);
+				return;
+			case WoTPackage.DATA_SCHEMA__MIN_ITEMS:
+				setMinItems(MIN_ITEMS_EDEFAULT);
+				return;
+			case WoTPackage.DATA_SCHEMA__MAX_ITEMS:
+				setMaxItems(MAX_ITEMS_EDEFAULT);
+				return;
+			case WoTPackage.DATA_SCHEMA__READ_ONLY:
+				setReadOnly(READ_ONLY_EDEFAULT);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -563,26 +886,38 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case WoTPackage.DATA_SCHEMA__TITLE:
+				return TITLE_EDEFAULT == null ? getTitle() != null : !TITLE_EDEFAULT.equals(getTitle());
+			case WoTPackage.DATA_SCHEMA__DESCRIPTION:
+				return DESCRIPTION_EDEFAULT == null ? getDescription() != null : !DESCRIPTION_EDEFAULT.equals(getDescription());
 			case WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT:
 				return base_TypedElement != null;
 			case WoTPackage.DATA_SCHEMA__ENUM:
 				return enum_ != null && !enum_.isEmpty();
-			case WoTPackage.DATA_SCHEMA__NUMBER_INTERVAL:
-				return numberInterval != null;
 			case WoTPackage.DATA_SCHEMA__REQUIRED:
 				return required != null && !required.isEmpty();
 			case WoTPackage.DATA_SCHEMA__ITEMS:
 				return items != null && !items.isEmpty();
 			case WoTPackage.DATA_SCHEMA__PROPERTIES:
 				return properties != null && !properties.isEmpty();
-			case WoTPackage.DATA_SCHEMA__TYPE:
-				return type != null && !type.isEmpty();
+			case WoTPackage.DATA_SCHEMA__ATYPE:
+				return aType != null && !aType.isEmpty();
 			case WoTPackage.DATA_SCHEMA__WRITE_ONLY:
 				return writeOnly != WRITE_ONLY_EDEFAULT;
 			case WoTPackage.DATA_SCHEMA__FORMAT:
 				return FORMAT_EDEFAULT == null ? format != null : !FORMAT_EDEFAULT.equals(format);
 			case WoTPackage.DATA_SCHEMA__ONE_OF:
 				return oneOf != null && !oneOf.isEmpty();
+			case WoTPackage.DATA_SCHEMA__TYPE:
+				return TYPE_EDEFAULT == null ? getType() != null : !TYPE_EDEFAULT.equals(getType());
+			case WoTPackage.DATA_SCHEMA__CONST:
+				return CONST_EDEFAULT == null ? getConst() != null : !CONST_EDEFAULT.equals(getConst());
+			case WoTPackage.DATA_SCHEMA__MIN_ITEMS:
+				return getMinItems() != MIN_ITEMS_EDEFAULT;
+			case WoTPackage.DATA_SCHEMA__MAX_ITEMS:
+				return getMaxItems() != MAX_ITEMS_EDEFAULT;
+			case WoTPackage.DATA_SCHEMA__READ_ONLY:
+				return isReadOnly() != READ_ONLY_EDEFAULT;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -597,12 +932,32 @@
 		if (eIsProxy()) return super.toString();
 
 		StringBuilder result = new StringBuilder(super.toString());
-		result.append(" (writeOnly: ");
+		result.append(" (enum: ");
+		result.append(enum_);
+		result.append(", writeOnly: ");
 		result.append(writeOnly);
 		result.append(", format: ");
 		result.append(format);
 		result.append(')');
 		return result.toString();
 	}
+	
+	/**
+	 * Getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("required")
+	public EList<String> getRequiredAsString() {
+		EList<String> requiredAsString = new UniqueEList<String>();
+		if (required == null) {
+			required = new EObjectResolvingEList<Property>(Property.class, this, WoTPackage.DATA_SCHEMA__REQUIRED);
+		}
+		for (Property property : required) {
+			if (!property.getName().isEmpty()) {
+				requiredAsString.add(property.getName());
+			}
+		}
+		return requiredAsString;
+	}
 
 } //DataSchemaImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventAffordanceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventAffordanceImpl.java
index 68690a7..5c9dd65 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventAffordanceImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventAffordanceImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -23,8 +24,11 @@
 import org.eclipse.papyrus.iotml.wot.DataSchema;
 import org.eclipse.papyrus.iotml.wot.EventAffordance;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
+import org.eclipse.uml2.uml.Reception;
 
-import org.eclipse.uml2.uml.Signal;
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 
 /**
  * <!-- begin-user-doc -->
@@ -34,7 +38,7 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventAffordanceImpl#getBase_Signal <em>Base Signal</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventAffordanceImpl#getBase_Reception <em>Base Reception</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventAffordanceImpl#getData <em>Data</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventAffordanceImpl#getSubscription <em>Subscription</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventAffordanceImpl#getCancellation <em>Cancellation</em>}</li>
@@ -42,16 +46,17 @@
  *
  * @generated
  */
+@JsonPropertyOrder({"@type", "title", "description", "data", "subscription", "cancellation"})
 public class EventAffordanceImpl extends InteractionAffordanceImpl implements EventAffordance {
 	/**
-	 * The cached value of the '{@link #getBase_Signal() <em>Base Signal</em>}' reference.
+	 * The cached value of the '{@link #getBase_Reception() <em>Base Reception</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getBase_Signal()
+	 * @see #getBase_Reception()
 	 * @generated
 	 * @ordered
 	 */
-	protected Signal base_Signal;
+	protected Reception base_Reception;
 
 	/**
 	 * The cached value of the '{@link #getData() <em>Data</em>}' reference.
@@ -108,46 +113,7 @@
 	 * @generated
 	 */
 	@Override
-	public Signal getBase_Signal() {
-		if (base_Signal != null && base_Signal.eIsProxy()) {
-			InternalEObject oldBase_Signal = (InternalEObject)base_Signal;
-			base_Signal = (Signal)eResolveProxy(oldBase_Signal);
-			if (base_Signal != oldBase_Signal) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.EVENT_AFFORDANCE__BASE_SIGNAL, oldBase_Signal, base_Signal));
-			}
-		}
-		return base_Signal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Signal basicGetBase_Signal() {
-		return base_Signal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setBase_Signal(Signal newBase_Signal) {
-		Signal oldBase_Signal = base_Signal;
-		base_Signal = newBase_Signal;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.EVENT_AFFORDANCE__BASE_SIGNAL, oldBase_Signal, base_Signal));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
+	@JsonGetter("data")
 	public DataSchema getData() {
 		if (data != null && data.eIsProxy()) {
 			InternalEObject oldData = (InternalEObject)data;
@@ -175,6 +141,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setData(DataSchema newData) {
 		DataSchema oldData = data;
 		data = newData;
@@ -188,6 +155,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("subscription")
 	public DataSchema getSubscription() {
 		if (subscription != null && subscription.eIsProxy()) {
 			InternalEObject oldSubscription = (InternalEObject)subscription;
@@ -215,6 +183,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setSubscription(DataSchema newSubscription) {
 		DataSchema oldSubscription = subscription;
 		subscription = newSubscription;
@@ -228,6 +197,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("cancellation")
 	public DataSchema getCancellation() {
 		if (cancellation != null && cancellation.eIsProxy()) {
 			InternalEObject oldCancellation = (InternalEObject)cancellation;
@@ -255,6 +225,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setCancellation(DataSchema newCancellation) {
 		DataSchema oldCancellation = cancellation;
 		cancellation = newCancellation;
@@ -268,11 +239,53 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public Reception getBase_Reception() {
+		if (base_Reception != null && base_Reception.eIsProxy()) {
+			InternalEObject oldBase_Reception = (InternalEObject)base_Reception;
+			base_Reception = (Reception)eResolveProxy(oldBase_Reception);
+			if (base_Reception != oldBase_Reception) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.EVENT_AFFORDANCE__BASE_RECEPTION, oldBase_Reception, base_Reception));
+			}
+		}
+		return base_Reception;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Reception basicGetBase_Reception() {
+		return base_Reception;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setBase_Reception(Reception newBase_Reception) {
+		Reception oldBase_Reception = base_Reception;
+		base_Reception = newBase_Reception;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.EVENT_AFFORDANCE__BASE_RECEPTION, oldBase_Reception, base_Reception));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case WoTPackage.EVENT_AFFORDANCE__BASE_SIGNAL:
-				if (resolve) return getBase_Signal();
-				return basicGetBase_Signal();
+			case WoTPackage.EVENT_AFFORDANCE__BASE_RECEPTION:
+				if (resolve) return getBase_Reception();
+				return basicGetBase_Reception();
 			case WoTPackage.EVENT_AFFORDANCE__DATA:
 				if (resolve) return getData();
 				return basicGetData();
@@ -294,8 +307,8 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case WoTPackage.EVENT_AFFORDANCE__BASE_SIGNAL:
-				setBase_Signal((Signal)newValue);
+			case WoTPackage.EVENT_AFFORDANCE__BASE_RECEPTION:
+				setBase_Reception((Reception)newValue);
 				return;
 			case WoTPackage.EVENT_AFFORDANCE__DATA:
 				setData((DataSchema)newValue);
@@ -318,8 +331,8 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case WoTPackage.EVENT_AFFORDANCE__BASE_SIGNAL:
-				setBase_Signal((Signal)null);
+			case WoTPackage.EVENT_AFFORDANCE__BASE_RECEPTION:
+				setBase_Reception((Reception)null);
 				return;
 			case WoTPackage.EVENT_AFFORDANCE__DATA:
 				setData((DataSchema)null);
@@ -342,8 +355,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case WoTPackage.EVENT_AFFORDANCE__BASE_SIGNAL:
-				return base_Signal != null;
+			case WoTPackage.EVENT_AFFORDANCE__BASE_RECEPTION:
+				return base_Reception != null;
 			case WoTPackage.EVENT_AFFORDANCE__DATA:
 				return data != null;
 			case WoTPackage.EVENT_AFFORDANCE__SUBSCRIPTION:
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/FormImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/FormImpl.java
index 0a3b214..dcbc1eb 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/FormImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/FormImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -18,18 +19,25 @@
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.EList;
-
+import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
-import org.eclipse.papyrus.iotml.software.core.structure.impl.MetaValueSpecificationImpl;
-
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.papyrus.iotml.wot.Form;
 import org.eclipse.papyrus.iotml.wot.OpKind;
+import org.eclipse.papyrus.iotml.wot.SecurityScheme;
 import org.eclipse.papyrus.iotml.wot.SubProtocolKind;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
+import org.eclipse.uml2.uml.Comment;
+
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 
 /**
  * <!-- begin-user-doc -->
@@ -46,11 +54,14 @@
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getSubProtocol <em>Sub Protocol</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getScopes <em>Scopes</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getResponse <em>Response</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getSecurity <em>Security</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getBase_Comment <em>Base Comment</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class FormImpl extends MetaValueSpecificationImpl implements Form {
+@JsonPropertyOrder({"op", "href", "contentType", "contentCoding", "subProtocol", "security", "scopes", "response"})
+public class FormImpl extends MinimalEObjectImpl.Container implements Form {
 	/**
 	 * The cached value of the '{@link #getOp() <em>Op</em>}' attribute list.
 	 * <!-- begin-user-doc -->
@@ -142,6 +153,16 @@
 	protected SubProtocolKind subProtocol = SUB_PROTOCOL_EDEFAULT;
 
 	/**
+	 * The cached value of the '{@link #getScopes() <em>Scopes</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScopes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<String> scopes;
+
+	/**
 	 * The default value of the '{@link #getResponse() <em>Response</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -162,6 +183,26 @@
 	protected String response = RESPONSE_EDEFAULT;
 
 	/**
+	 * The cached value of the '{@link #getSecurity() <em>Security</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSecurity()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SecurityScheme> security;
+
+	/**
+	 * The cached value of the '{@link #getBase_Comment() <em>Base Comment</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Comment()
+	 * @generated
+	 * @ordered
+	 */
+	protected Comment base_Comment;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -186,6 +227,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("op")
 	public EList<OpKind> getOp() {
 		if (op == null) {
 			op = new EDataTypeUniqueEList<OpKind>(OpKind.class, this, WoTPackage.FORM__OP);
@@ -199,6 +241,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("op")
 	public String getHref() {
 		return href;
 	}
@@ -209,6 +252,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setHref(String newHref) {
 		String oldHref = href;
 		href = newHref;
@@ -222,6 +266,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("contentType")
 	public String getContentType() {
 		return contentType;
 	}
@@ -232,6 +277,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setContentType(String newContentType) {
 		String oldContentType = contentType;
 		contentType = newContentType;
@@ -245,6 +291,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("contentCoding")
 	public String getContentCoding() {
 		return contentCoding;
 	}
@@ -255,6 +302,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setContentCoding(String newContentCoding) {
 		String oldContentCoding = contentCoding;
 		contentCoding = newContentCoding;
@@ -268,6 +316,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("subProtocol")
 	public SubProtocolKind getSubProtocol() {
 		return subProtocol;
 	}
@@ -278,6 +327,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setSubProtocol(SubProtocolKind newSubProtocol) {
 		SubProtocolKind oldSubProtocol = subProtocol;
 		subProtocol = newSubProtocol == null ? SUB_PROTOCOL_EDEFAULT : newSubProtocol;
@@ -291,10 +341,12 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("scopes")
 	public EList<String> getScopes() {
-		// TODO: implement this method to return the 'Scopes' attribute list
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+		if (scopes == null) {
+			scopes = new EDataTypeUniqueEList<String>(String.class, this, WoTPackage.FORM__SCOPES);
+		}
+		return scopes;
 	}
 
 	/**
@@ -303,6 +355,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("response")
 	public String getResponse() {
 		return response;
 	}
@@ -313,6 +366,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setResponse(String newResponse) {
 		String oldResponse = response;
 		response = newResponse;
@@ -326,6 +380,62 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public EList<SecurityScheme> getSecurity() {
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.FORM__SECURITY);
+		}
+		return security;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public Comment getBase_Comment() {
+		if (base_Comment != null && base_Comment.eIsProxy()) {
+			InternalEObject oldBase_Comment = (InternalEObject)base_Comment;
+			base_Comment = (Comment)eResolveProxy(oldBase_Comment);
+			if (base_Comment != oldBase_Comment) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.FORM__BASE_COMMENT, oldBase_Comment, base_Comment));
+			}
+		}
+		return base_Comment;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Comment basicGetBase_Comment() {
+		return base_Comment;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setBase_Comment(Comment newBase_Comment) {
+		Comment oldBase_Comment = base_Comment;
+		base_Comment = newBase_Comment;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__BASE_COMMENT, oldBase_Comment, base_Comment));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case WoTPackage.FORM__OP:
@@ -342,6 +452,11 @@
 				return getScopes();
 			case WoTPackage.FORM__RESPONSE:
 				return getResponse();
+			case WoTPackage.FORM__SECURITY:
+				return getSecurity();
+			case WoTPackage.FORM__BASE_COMMENT:
+				if (resolve) return getBase_Comment();
+				return basicGetBase_Comment();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -378,6 +493,13 @@
 			case WoTPackage.FORM__RESPONSE:
 				setResponse((String)newValue);
 				return;
+			case WoTPackage.FORM__SECURITY:
+				getSecurity().clear();
+				getSecurity().addAll((Collection<? extends SecurityScheme>)newValue);
+				return;
+			case WoTPackage.FORM__BASE_COMMENT:
+				setBase_Comment((Comment)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -411,6 +533,12 @@
 			case WoTPackage.FORM__RESPONSE:
 				setResponse(RESPONSE_EDEFAULT);
 				return;
+			case WoTPackage.FORM__SECURITY:
+				getSecurity().clear();
+				return;
+			case WoTPackage.FORM__BASE_COMMENT:
+				setBase_Comment((Comment)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -434,9 +562,13 @@
 			case WoTPackage.FORM__SUB_PROTOCOL:
 				return subProtocol != SUB_PROTOCOL_EDEFAULT;
 			case WoTPackage.FORM__SCOPES:
-				return !getScopes().isEmpty();
+				return scopes != null && !scopes.isEmpty();
 			case WoTPackage.FORM__RESPONSE:
 				return RESPONSE_EDEFAULT == null ? response != null : !RESPONSE_EDEFAULT.equals(response);
+			case WoTPackage.FORM__SECURITY:
+				return security != null && !security.isEmpty();
+			case WoTPackage.FORM__BASE_COMMENT:
+				return base_Comment != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -461,10 +593,30 @@
 		result.append(contentCoding);
 		result.append(", subProtocol: ");
 		result.append(subProtocol);
+		result.append(", scopes: ");
+		result.append(scopes);
 		result.append(", response: ");
 		result.append(response);
 		result.append(')');
 		return result.toString();
 	}
+	
+	/**
+	 * Security attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("security")
+	public EList<String> getSecurityAsString() {
+		EList<String> securityAsString = new UniqueEList<String>();
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.THING__SECURITY);
+		}
+		for (SecurityScheme securityScheme : security) {
+			if (securityScheme.getTitle() != null && !securityScheme.getTitle().isEmpty()) {
+				securityAsString.add(securityScheme.getTitle());
+			}
+		}
+		return securityAsString;
+	}
 
 } //FormImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionAffordanceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionAffordanceImpl.java
index 385688a..9b7dae9 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionAffordanceImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionAffordanceImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -22,11 +23,17 @@
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
-
+import org.eclipse.papyrus.iotml.wot.ActionAffordance;
+import org.eclipse.papyrus.iotml.wot.EventAffordance;
 import org.eclipse.papyrus.iotml.wot.Form;
 import org.eclipse.papyrus.iotml.wot.InteractionAffordance;
 import org.eclipse.papyrus.iotml.wot.Type;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+
+import com.fasterxml.jackson.annotation.JsonGetter;
 
 /**
  * <!-- begin-user-doc -->
@@ -36,14 +43,36 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionAffordanceImpl#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionAffordanceImpl#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionAffordanceImpl#getForms <em>Forms</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionAffordanceImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionAffordanceImpl#getAType <em>AType</em>}</li>
  * </ul>
  *
  * @generated
  */
 public abstract class InteractionAffordanceImpl extends MinimalEObjectImpl.Container implements InteractionAffordance {
 	/**
+	 * The default value of the '{@link #getTitle() <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTitle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TITLE_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
 	 * The cached value of the '{@link #getForms() <em>Forms</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -54,14 +83,14 @@
 	protected EList<Form> forms;
 
 	/**
-	 * The cached value of the '{@link #getType() <em>Type</em>}' reference list.
+	 * The cached value of the '{@link #getAType() <em>AType</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getType()
+	 * @see #getAType()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Type> type;
+	protected EList<Type> aType;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -85,6 +114,76 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public String getTitle() {
+		NamedElement namedElement = null;
+		if (this instanceof ActionAffordance) {
+			ActionAffordance affordance = (ActionAffordance) this;
+			namedElement = affordance.getBase_Operation();
+		} else if (this instanceof EventAffordance) {
+			EventAffordance affordance = (EventAffordance) this;
+			namedElement = affordance.getBase_Reception();
+		}
+		if (namedElement != null) {
+			return namedElement.getName();
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setTitle(String newTitle) {
+		// TODO: implement this method to set the 'Title' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public String getDescription() {
+		Element element = null;
+		if (this instanceof ActionAffordance) {
+			ActionAffordance affordance = (ActionAffordance) this;
+			element = affordance.getBase_Operation();
+		} else if (this instanceof EventAffordance) {
+			EventAffordance affordance = (EventAffordance) this;
+			element = affordance.getBase_Reception();
+		}
+		if (element != null) {
+			for (Comment comment : element.getOwnedComments()) {
+				if (!comment.getBody().isEmpty()) {
+					return comment.getBody();
+				}
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		// TODO: implement this method to set the 'Description' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -101,11 +200,12 @@
 	 * @generated
 	 */
 	@Override
-	public EList<Type> getType() {
-		if (type == null) {
-			type = new EObjectResolvingEList<Type>(Type.class, this, WoTPackage.INTERACTION_AFFORDANCE__TYPE);
+	@JsonGetter("@type")
+	public EList<Type> getAType() {
+		if (aType == null) {
+			aType = new EObjectResolvingEList<Type>(Type.class, this, WoTPackage.INTERACTION_AFFORDANCE__ATYPE);
 		}
-		return type;
+		return aType;
 	}
 
 	/**
@@ -116,10 +216,14 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case WoTPackage.INTERACTION_AFFORDANCE__TITLE:
+				return getTitle();
+			case WoTPackage.INTERACTION_AFFORDANCE__DESCRIPTION:
+				return getDescription();
 			case WoTPackage.INTERACTION_AFFORDANCE__FORMS:
 				return getForms();
-			case WoTPackage.INTERACTION_AFFORDANCE__TYPE:
-				return getType();
+			case WoTPackage.INTERACTION_AFFORDANCE__ATYPE:
+				return getAType();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -133,13 +237,19 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case WoTPackage.INTERACTION_AFFORDANCE__TITLE:
+				setTitle((String)newValue);
+				return;
+			case WoTPackage.INTERACTION_AFFORDANCE__DESCRIPTION:
+				setDescription((String)newValue);
+				return;
 			case WoTPackage.INTERACTION_AFFORDANCE__FORMS:
 				getForms().clear();
 				getForms().addAll((Collection<? extends Form>)newValue);
 				return;
-			case WoTPackage.INTERACTION_AFFORDANCE__TYPE:
-				getType().clear();
-				getType().addAll((Collection<? extends Type>)newValue);
+			case WoTPackage.INTERACTION_AFFORDANCE__ATYPE:
+				getAType().clear();
+				getAType().addAll((Collection<? extends Type>)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -153,11 +263,17 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case WoTPackage.INTERACTION_AFFORDANCE__TITLE:
+				setTitle(TITLE_EDEFAULT);
+				return;
+			case WoTPackage.INTERACTION_AFFORDANCE__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
 			case WoTPackage.INTERACTION_AFFORDANCE__FORMS:
 				getForms().clear();
 				return;
-			case WoTPackage.INTERACTION_AFFORDANCE__TYPE:
-				getType().clear();
+			case WoTPackage.INTERACTION_AFFORDANCE__ATYPE:
+				getAType().clear();
 				return;
 		}
 		super.eUnset(featureID);
@@ -171,10 +287,14 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case WoTPackage.INTERACTION_AFFORDANCE__TITLE:
+				return TITLE_EDEFAULT == null ? getTitle() != null : !TITLE_EDEFAULT.equals(getTitle());
+			case WoTPackage.INTERACTION_AFFORDANCE__DESCRIPTION:
+				return DESCRIPTION_EDEFAULT == null ? getDescription() != null : !DESCRIPTION_EDEFAULT.equals(getDescription());
 			case WoTPackage.INTERACTION_AFFORDANCE__FORMS:
 				return forms != null && !forms.isEmpty();
-			case WoTPackage.INTERACTION_AFFORDANCE__TYPE:
-				return type != null && !type.isEmpty();
+			case WoTPackage.INTERACTION_AFFORDANCE__ATYPE:
+				return aType != null && !aType.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/LinkImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/LinkImpl.java
index 9a538de..eb4a3e6 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/LinkImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/LinkImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -26,6 +27,10 @@
 
 import org.eclipse.uml2.uml.Association;
 
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Link</b></em>'.
@@ -43,6 +48,7 @@
  *
  * @generated
  */
+@JsonPropertyOrder({"href", "type", "rel", "anchor"})
 public class LinkImpl extends MinimalEObjectImpl.Container implements Link {
 	/**
 	 * The cached value of the '{@link #getBase_Association() <em>Base Association</em>}' reference.
@@ -159,6 +165,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public Association getBase_Association() {
 		if (base_Association != null && base_Association.eIsProxy()) {
 			InternalEObject oldBase_Association = (InternalEObject)base_Association;
@@ -186,6 +193,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setBase_Association(Association newBase_Association) {
 		Association oldBase_Association = base_Association;
 		base_Association = newBase_Association;
@@ -199,6 +207,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("href")
 	public String getHref() {
 		return href;
 	}
@@ -209,6 +218,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setHref(String newHref) {
 		String oldHref = href;
 		href = newHref;
@@ -222,6 +232,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("type")
 	public String getType() {
 		return type;
 	}
@@ -232,6 +243,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setType(String newType) {
 		String oldType = type;
 		type = newType;
@@ -245,6 +257,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("rel")
 	public String getRel() {
 		return rel;
 	}
@@ -255,6 +268,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setRel(String newRel) {
 		String oldRel = rel;
 		rel = newRel;
@@ -268,6 +282,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("anchor")
 	public String getAnchor() {
 		return anchor;
 	}
@@ -278,6 +293,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setAnchor(String newAnchor) {
 		String oldAnchor = anchor;
 		anchor = newAnchor;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyAffordanceImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyAffordanceImpl.java
index a6b1ae9..7c04eef 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyAffordanceImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyAffordanceImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -22,6 +23,10 @@
 import org.eclipse.papyrus.iotml.wot.PropertyAffordance;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Property Affordance</b></em>'.
@@ -35,6 +40,7 @@
  *
  * @generated
  */
+@JsonPropertyOrder({"@type", "title", "description", "observable"})
 public class PropertyAffordanceImpl extends InteractionAffordanceImpl implements PropertyAffordance {
 	/**
 	 * The default value of the '{@link #isObservable() <em>Observable</em>}' attribute.
@@ -81,6 +87,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("observable")
 	public boolean isObservable() {
 		return observable;
 	}
@@ -91,6 +98,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setObservable(boolean newObservable) {
 		boolean oldObservable = observable;
 		observable = newObservable;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/SecuritySchemeImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/SecuritySchemeImpl.java
index 0e8fbed..cda51ab 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/SecuritySchemeImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/SecuritySchemeImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -37,6 +38,13 @@
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 
 /**
  * <!-- begin-user-doc -->
@@ -47,6 +55,8 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getBase_Classifier <em>Base Classifier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getScheme <em>Scheme</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getProxy <em>Proxy</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getIn <em>In</em>}</li>
@@ -64,6 +74,7 @@
  *
  * @generated
  */
+@JsonPropertyOrder({"@type", "title", "description", "scheme", "proxy", "in", "qop", "name", "authorization", "alg", "format", "identity", "token", "refresh", "scopes", "flow"})
 public class SecuritySchemeImpl extends MinimalEObjectImpl.Container implements SecurityScheme {
 	/**
 	 * The cached value of the '{@link #getBase_Classifier() <em>Base Classifier</em>}' reference.
@@ -76,6 +87,26 @@
 	protected Classifier base_Classifier;
 
 	/**
+	 * The default value of the '{@link #getTitle() <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTitle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TITLE_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
+	/**
 	 * The default value of the '{@link #getScheme() <em>Scheme</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -350,6 +381,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public Classifier getBase_Classifier() {
 		if (base_Classifier != null && base_Classifier.eIsProxy()) {
 			InternalEObject oldBase_Classifier = (InternalEObject)base_Classifier;
@@ -377,6 +409,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setBase_Classifier(Classifier newBase_Classifier) {
 		Classifier oldBase_Classifier = base_Classifier;
 		base_Classifier = newBase_Classifier;
@@ -387,9 +420,70 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("title")
+	public String getTitle() {
+		NamedElement namedElement = this.getBase_Classifier();
+		if (namedElement != null) {
+			return namedElement.getName();
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public void setTitle(String newTitle) {
+		// TODO: implement this method to set the 'Title' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("description")
+	public String getDescription() {
+		Element element = this.getBase_Classifier();
+		if (element != null) {
+			for (Comment comment : element.getOwnedComments()) {
+				if (!comment.getBody().isEmpty()) {
+					return comment.getBody();
+				}
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setDescription(String newDescription) {
+		// TODO: implement this method to set the 'Description' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonGetter("scheme")
 	public SecuritySchemeKind getScheme() {
 		return scheme;
 	}
@@ -400,6 +494,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setScheme(SecuritySchemeKind newScheme) {
 		SecuritySchemeKind oldScheme = scheme;
 		scheme = newScheme == null ? SCHEME_EDEFAULT : newScheme;
@@ -413,6 +508,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("proxy")
 	public String getProxy() {
 		return proxy;
 	}
@@ -423,6 +519,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setProxy(String newProxy) {
 		String oldProxy = proxy;
 		proxy = newProxy;
@@ -436,6 +533,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("in")
 	public SecurityAuthenticationInformationLocationKind getIn() {
 		return in;
 	}
@@ -446,6 +544,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setIn(SecurityAuthenticationInformationLocationKind newIn) {
 		SecurityAuthenticationInformationLocationKind oldIn = in;
 		in = newIn == null ? IN_EDEFAULT : newIn;
@@ -459,6 +558,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("qop")
 	public QoPKind getQop() {
 		return qop;
 	}
@@ -469,6 +569,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setQop(QoPKind newQop) {
 		QoPKind oldQop = qop;
 		qop = newQop == null ? QOP_EDEFAULT : newQop;
@@ -482,6 +583,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("name")
 	public String getName() {
 		return name;
 	}
@@ -492,6 +594,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setName(String newName) {
 		String oldName = name;
 		name = newName;
@@ -505,6 +608,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("authorization")
 	public String getAuthorization() {
 		return authorization;
 	}
@@ -515,6 +619,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setAuthorization(String newAuthorization) {
 		String oldAuthorization = authorization;
 		authorization = newAuthorization;
@@ -528,6 +633,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("alg")
 	public SecurityAlgorithmKind getAlg() {
 		return alg;
 	}
@@ -538,6 +644,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setAlg(SecurityAlgorithmKind newAlg) {
 		SecurityAlgorithmKind oldAlg = alg;
 		alg = newAlg == null ? ALG_EDEFAULT : newAlg;
@@ -551,6 +658,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("format")
 	public SecurityAuthenticationFormatKind getFormat() {
 		return format;
 	}
@@ -561,6 +669,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setFormat(SecurityAuthenticationFormatKind newFormat) {
 		SecurityAuthenticationFormatKind oldFormat = format;
 		format = newFormat == null ? FORMAT_EDEFAULT : newFormat;
@@ -574,6 +683,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("identity")
 	public String getIdentity() {
 		return identity;
 	}
@@ -584,6 +694,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setIdentity(String newIdentity) {
 		String oldIdentity = identity;
 		identity = newIdentity;
@@ -597,6 +708,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("token")
 	public String getToken() {
 		return token;
 	}
@@ -607,6 +719,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setToken(String newToken) {
 		String oldToken = token;
 		token = newToken;
@@ -620,6 +733,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("refresh")
 	public String getRefresh() {
 		return refresh;
 	}
@@ -630,6 +744,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setRefresh(String newRefresh) {
 		String oldRefresh = refresh;
 		refresh = newRefresh;
@@ -643,6 +758,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("scopes")
 	public EList<String> getScopes() {
 		if (scopes == null) {
 			scopes = new EDataTypeUniqueEList<String>(String.class, this, WoTPackage.SECURITY_SCHEME__SCOPES);
@@ -656,6 +772,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("flow")
 	public AuthorizationFlowKind getFlow() {
 		return flow;
 	}
@@ -666,6 +783,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setFlow(AuthorizationFlowKind newFlow) {
 		AuthorizationFlowKind oldFlow = flow;
 		flow = newFlow == null ? FLOW_EDEFAULT : newFlow;
@@ -684,6 +802,10 @@
 			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
 				if (resolve) return getBase_Classifier();
 				return basicGetBase_Classifier();
+			case WoTPackage.SECURITY_SCHEME__TITLE:
+				return getTitle();
+			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
+				return getDescription();
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
 				return getScheme();
 			case WoTPackage.SECURITY_SCHEME__PROXY:
@@ -726,6 +848,12 @@
 			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
 				setBase_Classifier((Classifier)newValue);
 				return;
+			case WoTPackage.SECURITY_SCHEME__TITLE:
+				setTitle((String)newValue);
+				return;
+			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
+				setDescription((String)newValue);
+				return;
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
 				setScheme((SecuritySchemeKind)newValue);
 				return;
@@ -781,6 +909,12 @@
 			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
 				setBase_Classifier((Classifier)null);
 				return;
+			case WoTPackage.SECURITY_SCHEME__TITLE:
+				setTitle(TITLE_EDEFAULT);
+				return;
+			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
 				setScheme(SCHEME_EDEFAULT);
 				return;
@@ -834,6 +968,10 @@
 		switch (featureID) {
 			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
 				return base_Classifier != null;
+			case WoTPackage.SECURITY_SCHEME__TITLE:
+				return TITLE_EDEFAULT == null ? getTitle() != null : !TITLE_EDEFAULT.equals(getTitle());
+			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
+				return DESCRIPTION_EDEFAULT == null ? getDescription() != null : !DESCRIPTION_EDEFAULT.equals(getDescription());
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
 				return scheme != SCHEME_EDEFAULT;
 			case WoTPackage.SECURITY_SCHEME__PROXY:
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ThingImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ThingImpl.java
index 188189b..81767ad 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ThingImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ThingImpl.java
@@ -9,24 +9,24 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
 
 import java.util.Collection;
-
 import org.eclipse.emf.common.notify.Notification;
-
+import org.eclipse.emf.common.util.BasicEMap;
 import org.eclipse.emf.common.util.EList;
-
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
-
-import org.eclipse.papyrus.iotml.software.artefact.impl.VirtualEntityImpl;
-
 import org.eclipse.papyrus.iotml.wot.ActionAffordance;
 import org.eclipse.papyrus.iotml.wot.Context;
 import org.eclipse.papyrus.iotml.wot.EventAffordance;
@@ -37,6 +37,18 @@
 import org.eclipse.papyrus.iotml.wot.Thing;
 import org.eclipse.papyrus.iotml.wot.Type;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 
 /**
  * <!-- begin-user-doc -->
@@ -46,23 +58,48 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getTitle <em>Title</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getBase <em>Base</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getId <em>Id</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getSupport <em>Support</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getSecurity <em>Security</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getSecurityDefinitions <em>Security Definitions</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getLinks <em>Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getEvents <em>Events</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getActions <em>Actions</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getProperties <em>Properties</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getVersion <em>Version</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getType <em>Type</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getContext <em>Context</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getAType <em>AType</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getAContext <em>AContext</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getForms <em>Forms</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getBase_Class <em>Base Class</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ThingImpl extends VirtualEntityImpl implements Thing {
+@JsonPropertyOrder({"@context", "@type", "id", "title", "description", "version", "support", "base", "properties", "actions", "events", "links", "forms", "security", "securityDefinitions"})
+public class ThingImpl extends MinimalEObjectImpl.Container implements Thing {
+	/**
+	 * The default value of the '{@link #getTitle() <em>Title</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTitle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TITLE_EDEFAULT = null;
+
+	/**
+	 * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DESCRIPTION_EDEFAULT = null;
+
 	/**
 	 * The default value of the '{@link #getBase() <em>Base</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -124,6 +161,16 @@
 	protected String support = SUPPORT_EDEFAULT;
 
 	/**
+	 * The cached value of the '{@link #getSecurity() <em>Security</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSecurity()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SecurityScheme> security;
+
+	/**
 	 * The cached value of the '{@link #getSecurityDefinitions() <em>Security Definitions</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -134,36 +181,6 @@
 	protected EList<SecurityScheme> securityDefinitions;
 
 	/**
-	 * The cached value of the '{@link #getEvents() <em>Events</em>}' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getEvents()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<EventAffordance> events;
-
-	/**
-	 * The cached value of the '{@link #getActions() <em>Actions</em>}' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getActions()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<ActionAffordance> actions;
-
-	/**
-	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getProperties()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<PropertyAffordance> properties;
-
-	/**
 	 * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -184,24 +201,24 @@
 	protected String version = VERSION_EDEFAULT;
 
 	/**
-	 * The cached value of the '{@link #getType() <em>Type</em>}' reference list.
+	 * The cached value of the '{@link #getAType() <em>AType</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getType()
+	 * @see #getAType()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Type> type;
+	protected EList<Type> aType;
 
 	/**
-	 * The cached value of the '{@link #getContext() <em>Context</em>}' reference list.
+	 * The cached value of the '{@link #getAContext() <em>AContext</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getContext()
+	 * @see #getAContext()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Context> context;
+	protected EList<Context> aContext;
 
 	/**
 	 * The cached value of the '{@link #getForms() <em>Forms</em>}' reference list.
@@ -214,6 +231,16 @@
 	protected EList<Form> forms;
 
 	/**
+	 * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Class()
+	 * @generated
+	 * @ordered
+	 */
+	protected org.eclipse.uml2.uml.Class base_Class;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -235,9 +262,70 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("title")
+	public String getTitle() {
+		NamedElement namedElement = this.getBase_Class();
+		if (namedElement != null) {
+			return namedElement.getName();
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public void setTitle(String newTitle) {
+		// TODO: implement this method to set the 'Title' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	@JsonGetter("description")
+	public String getDescription() {
+		Element element = this.getBase_Class();
+		if (element != null) {
+			for (Comment comment : element.getOwnedComments()) {
+				if (!comment.getBody().isEmpty()) {
+					return comment.getBody();
+				}
+			}
+		}
+		return "";
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setDescription(String newDescription) {
+		// TODO: implement this method to set the 'Description' attribute
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonGetter("base")
 	public String getBase() {
 		return base;
 	}
@@ -248,6 +336,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setBase(String newBase) {
 		String oldBase = base;
 		base = newBase;
@@ -261,6 +350,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("id")
 	public String getId() {
 		return id;
 	}
@@ -271,6 +361,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setId(String newId) {
 		String oldId = id;
 		id = newId;
@@ -284,6 +375,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("support")
 	public String getSupport() {
 		return support;
 	}
@@ -294,6 +386,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setSupport(String newSupport) {
 		String oldSupport = support;
 		support = newSupport;
@@ -307,6 +400,21 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public EList<SecurityScheme> getSecurity() {
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.THING__SECURITY);
+		}
+		return security;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
 	public EList<SecurityScheme> getSecurityDefinitions() {
 		if (securityDefinitions == null) {
 			securityDefinitions = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.THING__SECURITY_DEFINITIONS);
@@ -317,52 +425,84 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public EList<Link> getLinks() {
-		// TODO: implement this method to return the 'Links' reference list
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+		EList<Link> links = new UniqueEList<Link>();
+		org.eclipse.uml2.uml.Type thisType = this.getBase_Class();
+		for (Association association : thisType.getAssociations()) {
+			Link link = UMLUtil.getStereotypeApplication(association, Link.class);
+			if (link != null) {
+				if (association.getOwnedEnds().containsAll(association.getMemberEnds())) {
+					links.add(link);
+				} else {
+					for (Property end : association.getMemberEnds()) {
+						if (end.isNavigable() && end.getType() != thisType) {
+							links.add(link);
+						}
+					}
+				}
+			}
+		}
+		return links;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
+	@JsonIgnore
 	public EList<EventAffordance> getEvents() {
-		if (events == null) {
-			events = new EObjectResolvingEList<EventAffordance>(EventAffordance.class, this, WoTPackage.THING__EVENTS);
+		EList<EventAffordance> affordances = new UniqueEList<EventAffordance>();
+		org.eclipse.uml2.uml.Class thisType = this.getBase_Class();
+		for (Reception reception : thisType.getOwnedReceptions()) {
+			EventAffordance affordance = UMLUtil.getStereotypeApplication(reception, EventAffordance.class);
+			if (affordance != null) {
+				affordances.add(affordance);
+			}
 		}
-		return events;
+		return affordances;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
+	@JsonIgnore
 	public EList<ActionAffordance> getActions() {
-		if (actions == null) {
-			actions = new EObjectResolvingEList<ActionAffordance>(ActionAffordance.class, this, WoTPackage.THING__ACTIONS);
+		EList<ActionAffordance> affordances = new UniqueEList<ActionAffordance>();
+		org.eclipse.uml2.uml.Class thisType = this.getBase_Class();
+		for (Operation operation : thisType.getOwnedOperations()) {
+			ActionAffordance affordance = UMLUtil.getStereotypeApplication(operation, ActionAffordance.class);
+			if (affordance != null) {
+				affordances.add(affordance);
+			}
 		}
-		return actions;
+		return affordances;
 	}
 
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
+	@JsonIgnore
 	public EList<PropertyAffordance> getProperties() {
-		if (properties == null) {
-			properties = new EObjectResolvingEList<PropertyAffordance>(PropertyAffordance.class, this, WoTPackage.THING__PROPERTIES);
+		EList<PropertyAffordance> affordances = new UniqueEList<PropertyAffordance>();
+		org.eclipse.uml2.uml.Class thisType = this.getBase_Class();
+		for (Operation operation : thisType.getOwnedOperations()) {
+			PropertyAffordance affordance = UMLUtil.getStereotypeApplication(operation, PropertyAffordance.class);
+			if (affordance != null) {
+				affordances.add(affordance);
+			}
 		}
-		return properties;
+		return affordances;
 	}
 
 	/**
@@ -371,6 +511,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonGetter("version")
 	public String getVersion() {
 		return version;
 	}
@@ -381,6 +522,7 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
 	public void setVersion(String newVersion) {
 		String oldVersion = version;
 		version = newVersion;
@@ -394,11 +536,12 @@
 	 * @generated
 	 */
 	@Override
-	public EList<Type> getType() {
-		if (type == null) {
-			type = new EObjectResolvingEList<Type>(Type.class, this, WoTPackage.THING__TYPE);
+	@JsonIgnore
+	public EList<Type> getAType() {
+		if (aType == null) {
+			aType = new EObjectResolvingEList<Type>(Type.class, this, WoTPackage.THING__ATYPE);
 		}
-		return type;
+		return aType;
 	}
 
 	/**
@@ -407,11 +550,12 @@
 	 * @generated
 	 */
 	@Override
-	public EList<Context> getContext() {
-		if (context == null) {
-			context = new EObjectResolvingEList<Context>(Context.class, this, WoTPackage.THING__CONTEXT);
+	@JsonIgnore
+	public EList<Context> getAContext() {
+		if (aContext == null) {
+			aContext = new EObjectResolvingEList<Context>(Context.class, this, WoTPackage.THING__ACONTEXT);
 		}
-		return context;
+		return aContext;
 	}
 
 	/**
@@ -433,14 +577,62 @@
 	 * @generated
 	 */
 	@Override
+	@JsonIgnore
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		if (base_Class != null && base_Class.eIsProxy()) {
+			InternalEObject oldBase_Class = (InternalEObject)base_Class;
+			base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+			if (base_Class != oldBase_Class) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.THING__BASE_CLASS, oldBase_Class, base_Class));
+			}
+		}
+		return base_Class;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return base_Class;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@JsonIgnore
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+		base_Class = newBase_Class;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.THING__BASE_CLASS, oldBase_Class, base_Class));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case WoTPackage.THING__TITLE:
+				return getTitle();
+			case WoTPackage.THING__DESCRIPTION:
+				return getDescription();
 			case WoTPackage.THING__BASE:
 				return getBase();
 			case WoTPackage.THING__ID:
 				return getId();
 			case WoTPackage.THING__SUPPORT:
 				return getSupport();
+			case WoTPackage.THING__SECURITY:
+				return getSecurity();
 			case WoTPackage.THING__SECURITY_DEFINITIONS:
 				return getSecurityDefinitions();
 			case WoTPackage.THING__LINKS:
@@ -453,12 +645,15 @@
 				return getProperties();
 			case WoTPackage.THING__VERSION:
 				return getVersion();
-			case WoTPackage.THING__TYPE:
-				return getType();
-			case WoTPackage.THING__CONTEXT:
-				return getContext();
+			case WoTPackage.THING__ATYPE:
+				return getAType();
+			case WoTPackage.THING__ACONTEXT:
+				return getAContext();
 			case WoTPackage.THING__FORMS:
 				return getForms();
+			case WoTPackage.THING__BASE_CLASS:
+				if (resolve) return getBase_Class();
+				return basicGetBase_Class();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -472,6 +667,12 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case WoTPackage.THING__TITLE:
+				setTitle((String)newValue);
+				return;
+			case WoTPackage.THING__DESCRIPTION:
+				setDescription((String)newValue);
+				return;
 			case WoTPackage.THING__BASE:
 				setBase((String)newValue);
 				return;
@@ -481,6 +682,10 @@
 			case WoTPackage.THING__SUPPORT:
 				setSupport((String)newValue);
 				return;
+			case WoTPackage.THING__SECURITY:
+				getSecurity().clear();
+				getSecurity().addAll((Collection<? extends SecurityScheme>)newValue);
+				return;
 			case WoTPackage.THING__SECURITY_DEFINITIONS:
 				getSecurityDefinitions().clear();
 				getSecurityDefinitions().addAll((Collection<? extends SecurityScheme>)newValue);
@@ -504,18 +709,21 @@
 			case WoTPackage.THING__VERSION:
 				setVersion((String)newValue);
 				return;
-			case WoTPackage.THING__TYPE:
-				getType().clear();
-				getType().addAll((Collection<? extends Type>)newValue);
+			case WoTPackage.THING__ATYPE:
+				getAType().clear();
+				getAType().addAll((Collection<? extends Type>)newValue);
 				return;
-			case WoTPackage.THING__CONTEXT:
-				getContext().clear();
-				getContext().addAll((Collection<? extends Context>)newValue);
+			case WoTPackage.THING__ACONTEXT:
+				getAContext().clear();
+				getAContext().addAll((Collection<? extends Context>)newValue);
 				return;
 			case WoTPackage.THING__FORMS:
 				getForms().clear();
 				getForms().addAll((Collection<? extends Form>)newValue);
 				return;
+			case WoTPackage.THING__BASE_CLASS:
+				setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -528,6 +736,12 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case WoTPackage.THING__TITLE:
+				setTitle(TITLE_EDEFAULT);
+				return;
+			case WoTPackage.THING__DESCRIPTION:
+				setDescription(DESCRIPTION_EDEFAULT);
+				return;
 			case WoTPackage.THING__BASE:
 				setBase(BASE_EDEFAULT);
 				return;
@@ -537,6 +751,9 @@
 			case WoTPackage.THING__SUPPORT:
 				setSupport(SUPPORT_EDEFAULT);
 				return;
+			case WoTPackage.THING__SECURITY:
+				getSecurity().clear();
+				return;
 			case WoTPackage.THING__SECURITY_DEFINITIONS:
 				getSecurityDefinitions().clear();
 				return;
@@ -555,15 +772,18 @@
 			case WoTPackage.THING__VERSION:
 				setVersion(VERSION_EDEFAULT);
 				return;
-			case WoTPackage.THING__TYPE:
-				getType().clear();
+			case WoTPackage.THING__ATYPE:
+				getAType().clear();
 				return;
-			case WoTPackage.THING__CONTEXT:
-				getContext().clear();
+			case WoTPackage.THING__ACONTEXT:
+				getAContext().clear();
 				return;
 			case WoTPackage.THING__FORMS:
 				getForms().clear();
 				return;
+			case WoTPackage.THING__BASE_CLASS:
+				setBase_Class((org.eclipse.uml2.uml.Class)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -576,30 +796,38 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case WoTPackage.THING__TITLE:
+				return TITLE_EDEFAULT == null ? getTitle() != null : !TITLE_EDEFAULT.equals(getTitle());
+			case WoTPackage.THING__DESCRIPTION:
+				return DESCRIPTION_EDEFAULT == null ? getDescription() != null : !DESCRIPTION_EDEFAULT.equals(getDescription());
 			case WoTPackage.THING__BASE:
 				return BASE_EDEFAULT == null ? base != null : !BASE_EDEFAULT.equals(base);
 			case WoTPackage.THING__ID:
 				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
 			case WoTPackage.THING__SUPPORT:
 				return SUPPORT_EDEFAULT == null ? support != null : !SUPPORT_EDEFAULT.equals(support);
+			case WoTPackage.THING__SECURITY:
+				return security != null && !security.isEmpty();
 			case WoTPackage.THING__SECURITY_DEFINITIONS:
 				return securityDefinitions != null && !securityDefinitions.isEmpty();
 			case WoTPackage.THING__LINKS:
 				return !getLinks().isEmpty();
 			case WoTPackage.THING__EVENTS:
-				return events != null && !events.isEmpty();
+				return !getEvents().isEmpty();
 			case WoTPackage.THING__ACTIONS:
-				return actions != null && !actions.isEmpty();
+				return !getActions().isEmpty();
 			case WoTPackage.THING__PROPERTIES:
-				return properties != null && !properties.isEmpty();
+				return !getProperties().isEmpty();
 			case WoTPackage.THING__VERSION:
 				return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
-			case WoTPackage.THING__TYPE:
-				return type != null && !type.isEmpty();
-			case WoTPackage.THING__CONTEXT:
-				return context != null && !context.isEmpty();
+			case WoTPackage.THING__ATYPE:
+				return aType != null && !aType.isEmpty();
+			case WoTPackage.THING__ACONTEXT:
+				return aContext != null && !aContext.isEmpty();
 			case WoTPackage.THING__FORMS:
 				return forms != null && !forms.isEmpty();
+			case WoTPackage.THING__BASE_CLASS:
+				return base_Class != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -625,5 +853,127 @@
 		result.append(')');
 		return result.toString();
 	}
+	
+	/**
+	 * Security attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("security")
+	public EList<String> getSecurityAsString() {
+		EList<String> securityAsString = new UniqueEList<String>();
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.THING__SECURITY);
+		}
+		for (SecurityScheme securityScheme : security) {
+			if (securityScheme.getTitle() != null && !securityScheme.getTitle().isEmpty()) {
+				securityAsString.add(securityScheme.getTitle());
+			}
+		}
+		return securityAsString;
+	}
+	
+	/**
+	 * SecurityDefinition attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("securityDefinitions")
+	public EMap<String, SecurityScheme> getSecurityDefinitionsAsMap() {
+		EMap<String, SecurityScheme> securityDefinitionsAsMap = new BasicEMap<String, SecurityScheme>();
+		if (securityDefinitions == null) {
+			securityDefinitions = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.THING__SECURITY_DEFINITIONS);
+		}
+		for (SecurityScheme securityScheme : securityDefinitions) {
+			if (securityScheme.getTitle() != null && !securityScheme.getTitle().isEmpty()) {
+				securityDefinitionsAsMap.put(securityScheme.getTitle(), securityScheme);
+			}
+		}
+		return securityDefinitionsAsMap;
+	}
+	
+	/**
+	 * Events attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("events")
+	public EMap<String, EventAffordance> getEventsAsMap() {
+		EMap<String, EventAffordance> eventsAsMap = new BasicEMap<String, EventAffordance>();
+		EList<EventAffordance> affordances = this.getEvents();
+		for (EventAffordance affordance : affordances) {
+			if (affordance.getTitle() != null && !affordance.getTitle().isEmpty()) {
+				eventsAsMap.put(affordance.getTitle(), affordance);
+			}
+		}
+		return eventsAsMap;
+	}
+
+	/**
+	 * Actions attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("actions")
+	public EMap<String, ActionAffordance> getActionsAsMap() {
+		EMap<String, ActionAffordance> actionsAsMap = new BasicEMap<String, ActionAffordance>();
+		EList<ActionAffordance> affordances = this.getActions();
+		for (ActionAffordance affordance : affordances) {
+			if (affordance.getTitle() != null && !affordance.getTitle().isEmpty()) {
+				actionsAsMap.put(affordance.getTitle(), affordance);
+			}
+		}
+		return actionsAsMap;
+	}
+
+	/**
+	 * Properties attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("properties")
+	public EMap<String, PropertyAffordance> getPropertiesAsMap() {
+		EMap<String, PropertyAffordance> actionsAsMap = new BasicEMap<String, PropertyAffordance>();
+		EList<PropertyAffordance> affordances = this.getProperties();
+		for (PropertyAffordance affordance : affordances) {
+			if (affordance.getTitle() != null && !affordance.getTitle().isEmpty()) {
+				actionsAsMap.put(affordance.getTitle(), affordance);
+			}
+		}
+		return actionsAsMap;
+	}
+	
+	/**
+	 * AType attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("@type")
+	public EList<String> getATypeAsStringList() {
+		EList<String> aTypeAsList = new UniqueEList<String>();
+		EList<Type> types = this.getAType();
+		for (Type type : types) {
+			if (type.getName() != null && !type.getName().isEmpty()) {
+				aTypeAsList.add(type.getName());
+			} else if (type.getBase_Type() instanceof NamedElement) {
+				NamedElement namedElement = (NamedElement) type.getBase_Type();
+				if (!namedElement.getName().isEmpty()) {
+					aTypeAsList.add(namedElement.getName());
+				}
+			}
+		}
+		return aTypeAsList;
+	}
+
+	/**
+	 * AContext attribute getter for JSON serialization
+	 * @generated NOT
+	 */
+	@JsonGetter("@context")
+	public EMap<String, String> getAContextAsMap() {
+		EMap<String, String> aContextAsMap = new BasicEMap<String, String>();
+		aContextAsMap.put("", "https://www.w3.org/2019/wot/td/v1");
+		EList<Context> contexts = this.getAContext();
+		for (Context context : contexts) {
+			if (context.getUri() != null && !context.getUri().isEmpty() && !context.getBase_Namespace().getName().isEmpty()) {
+				aContextAsMap.put(context.getBase_Namespace().getName(), context.getUri());
+			}
+		}
+		return aContextAsMap;
+	}
 
 } //ThingImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/TypeImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/TypeImpl.java
index 43def2a..fcb3687 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/TypeImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/TypeImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTFactoryImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTFactoryImpl.java
index 30356f4..542c8dc 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTFactoryImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTFactoryImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTPackageImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTPackageImpl.java
index 759582e..d55aa2a 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTPackageImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/WoTPackageImpl.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.impl;
@@ -417,7 +418,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getThing_Base() {
+	public EAttribute getThing_Title() {
 		return (EAttribute)thingEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -427,7 +428,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getThing_Id() {
+	public EAttribute getThing_Description() {
 		return (EAttribute)thingEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -437,7 +438,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getThing_Support() {
+	public EAttribute getThing_Base() {
 		return (EAttribute)thingEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -447,8 +448,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_SecurityDefinitions() {
-		return (EReference)thingEClass.getEStructuralFeatures().get(3);
+	public EAttribute getThing_Id() {
+		return (EAttribute)thingEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -457,8 +458,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Links() {
-		return (EReference)thingEClass.getEStructuralFeatures().get(4);
+	public EAttribute getThing_Support() {
+		return (EAttribute)thingEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -467,7 +468,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Events() {
+	public EReference getThing_Security() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(5);
 	}
 
@@ -477,7 +478,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Actions() {
+	public EReference getThing_SecurityDefinitions() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(6);
 	}
 
@@ -487,7 +488,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Properties() {
+	public EReference getThing_Links() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(7);
 	}
 
@@ -497,8 +498,8 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getThing_Version() {
-		return (EAttribute)thingEClass.getEStructuralFeatures().get(8);
+	public EReference getThing_Events() {
+		return (EReference)thingEClass.getEStructuralFeatures().get(8);
 	}
 
 	/**
@@ -507,7 +508,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Type() {
+	public EReference getThing_Actions() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(9);
 	}
 
@@ -517,7 +518,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Context() {
+	public EReference getThing_Properties() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(10);
 	}
 
@@ -527,8 +528,48 @@
 	 * @generated
 	 */
 	@Override
+	public EAttribute getThing_Version() {
+		return (EAttribute)thingEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getThing_AType() {
+		return (EReference)thingEClass.getEStructuralFeatures().get(12);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getThing_AContext() {
+		return (EReference)thingEClass.getEStructuralFeatures().get(13);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EReference getThing_Forms() {
-		return (EReference)thingEClass.getEStructuralFeatures().get(11);
+		return (EReference)thingEClass.getEStructuralFeatures().get(14);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getThing_Base_Class() {
+		return (EReference)thingEClass.getEStructuralFeatures().get(15);
 	}
 
 	/**
@@ -557,7 +598,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Scheme() {
+	public EAttribute getSecurityScheme_Title() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -567,7 +608,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Proxy() {
+	public EAttribute getSecurityScheme_Description() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -577,7 +618,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_In() {
+	public EAttribute getSecurityScheme_Scheme() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(3);
 	}
 
@@ -587,7 +628,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Qop() {
+	public EAttribute getSecurityScheme_Proxy() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(4);
 	}
 
@@ -597,7 +638,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Name() {
+	public EAttribute getSecurityScheme_In() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(5);
 	}
 
@@ -607,7 +648,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Authorization() {
+	public EAttribute getSecurityScheme_Qop() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(6);
 	}
 
@@ -617,7 +658,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Alg() {
+	public EAttribute getSecurityScheme_Name() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(7);
 	}
 
@@ -627,7 +668,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Format() {
+	public EAttribute getSecurityScheme_Authorization() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(8);
 	}
 
@@ -637,7 +678,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Identity() {
+	public EAttribute getSecurityScheme_Alg() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(9);
 	}
 
@@ -647,7 +688,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Token() {
+	public EAttribute getSecurityScheme_Format() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(10);
 	}
 
@@ -657,7 +698,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Refresh() {
+	public EAttribute getSecurityScheme_Identity() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(11);
 	}
 
@@ -667,7 +708,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Scopes() {
+	public EAttribute getSecurityScheme_Token() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(12);
 	}
 
@@ -677,7 +718,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Flow() {
+	public EAttribute getSecurityScheme_Refresh() {
 		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(13);
 	}
 
@@ -687,6 +728,26 @@
 	 * @generated
 	 */
 	@Override
+	public EAttribute getSecurityScheme_Scopes() {
+		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(14);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSecurityScheme_Flow() {
+		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(15);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EClass getLink() {
 		return linkEClass;
 	}
@@ -757,16 +818,6 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getEventAffordance_Base_Signal() {
-		return (EReference)eventAffordanceEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public EReference getEventAffordance_Data() {
 		return (EReference)eventAffordanceEClass.getEStructuralFeatures().get(1);
 	}
@@ -797,6 +848,16 @@
 	 * @generated
 	 */
 	@Override
+	public EReference getEventAffordance_Base_Reception() {
+		return (EReference)eventAffordanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EClass getInteractionAffordance() {
 		return interactionAffordanceEClass;
 	}
@@ -807,8 +868,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getInteractionAffordance_Forms() {
-		return (EReference)interactionAffordanceEClass.getEStructuralFeatures().get(0);
+	public EAttribute getInteractionAffordance_Title() {
+		return (EAttribute)interactionAffordanceEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -817,8 +878,28 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getInteractionAffordance_Type() {
-		return (EReference)interactionAffordanceEClass.getEStructuralFeatures().get(1);
+	public EAttribute getInteractionAffordance_Description() {
+		return (EAttribute)interactionAffordanceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getInteractionAffordance_Forms() {
+		return (EReference)interactionAffordanceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getInteractionAffordance_AType() {
+		return (EReference)interactionAffordanceEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -907,6 +988,26 @@
 	 * @generated
 	 */
 	@Override
+	public EReference getForm_Security() {
+		return (EReference)formEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getForm_Base_Comment() {
+		return (EReference)formEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EClass getType() {
 		return typeEClass;
 	}
@@ -947,27 +1048,27 @@
 	 * @generated
 	 */
 	@Override
+	public EAttribute getDataSchema_Title() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataSchema_Description() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EReference getDataSchema_Base_TypedElement() {
-		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EReference getDataSchema_Enum() {
-		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(1);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EReference getDataSchema_NumberInterval() {
 		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -977,8 +1078,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getDataSchema_Required() {
-		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(3);
+	public EAttribute getDataSchema_Enum() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -987,7 +1088,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getDataSchema_Items() {
+	public EReference getDataSchema_Required() {
 		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(4);
 	}
 
@@ -997,7 +1098,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getDataSchema_Properties() {
+	public EReference getDataSchema_Items() {
 		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(5);
 	}
 
@@ -1007,7 +1108,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getDataSchema_Type() {
+	public EReference getDataSchema_Properties() {
 		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(6);
 	}
 
@@ -1017,8 +1118,8 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getDataSchema_WriteOnly() {
-		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(7);
+	public EReference getDataSchema_AType() {
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -1027,7 +1128,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getDataSchema_Format() {
+	public EAttribute getDataSchema_WriteOnly() {
 		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(8);
 	}
 
@@ -1037,8 +1138,68 @@
 	 * @generated
 	 */
 	@Override
+	public EAttribute getDataSchema_Format() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EReference getDataSchema_OneOf() {
-		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(9);
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataSchema_Type() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataSchema_Const() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(12);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataSchema_MinItems() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(13);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataSchema_MaxItems() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(14);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataSchema_ReadOnly() {
+		return (EAttribute)dataSchemaEClass.getEStructuralFeatures().get(15);
 	}
 
 	/**
@@ -1058,16 +1219,6 @@
 	 */
 	@Override
 	public EReference getActionAffordance_Input() {
-		return (EReference)actionAffordanceEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EReference getActionAffordance_Output() {
 		return (EReference)actionAffordanceEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -1077,7 +1228,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getActionAffordance_Base_BehavioralFeature() {
+	public EReference getActionAffordance_Output() {
 		return (EReference)actionAffordanceEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -1107,6 +1258,16 @@
 	 * @generated
 	 */
 	@Override
+	public EReference getActionAffordance_Base_Operation() {
+		return (EReference)actionAffordanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EClass getPropertyAffordance() {
 		return propertyAffordanceEClass;
 	}
@@ -1261,21 +1422,27 @@
 
 		// Create classes and their features
 		thingEClass = createEClass(THING);
+		createEAttribute(thingEClass, THING__TITLE);
+		createEAttribute(thingEClass, THING__DESCRIPTION);
 		createEAttribute(thingEClass, THING__BASE);
 		createEAttribute(thingEClass, THING__ID);
 		createEAttribute(thingEClass, THING__SUPPORT);
+		createEReference(thingEClass, THING__SECURITY);
 		createEReference(thingEClass, THING__SECURITY_DEFINITIONS);
 		createEReference(thingEClass, THING__LINKS);
 		createEReference(thingEClass, THING__EVENTS);
 		createEReference(thingEClass, THING__ACTIONS);
 		createEReference(thingEClass, THING__PROPERTIES);
 		createEAttribute(thingEClass, THING__VERSION);
-		createEReference(thingEClass, THING__TYPE);
-		createEReference(thingEClass, THING__CONTEXT);
+		createEReference(thingEClass, THING__ATYPE);
+		createEReference(thingEClass, THING__ACONTEXT);
 		createEReference(thingEClass, THING__FORMS);
+		createEReference(thingEClass, THING__BASE_CLASS);
 
 		securitySchemeEClass = createEClass(SECURITY_SCHEME);
 		createEReference(securitySchemeEClass, SECURITY_SCHEME__BASE_CLASSIFIER);
+		createEAttribute(securitySchemeEClass, SECURITY_SCHEME__TITLE);
+		createEAttribute(securitySchemeEClass, SECURITY_SCHEME__DESCRIPTION);
 		createEAttribute(securitySchemeEClass, SECURITY_SCHEME__SCHEME);
 		createEAttribute(securitySchemeEClass, SECURITY_SCHEME__PROXY);
 		createEAttribute(securitySchemeEClass, SECURITY_SCHEME__IN);
@@ -1298,14 +1465,16 @@
 		createEAttribute(linkEClass, LINK__ANCHOR);
 
 		eventAffordanceEClass = createEClass(EVENT_AFFORDANCE);
-		createEReference(eventAffordanceEClass, EVENT_AFFORDANCE__BASE_SIGNAL);
+		createEReference(eventAffordanceEClass, EVENT_AFFORDANCE__BASE_RECEPTION);
 		createEReference(eventAffordanceEClass, EVENT_AFFORDANCE__DATA);
 		createEReference(eventAffordanceEClass, EVENT_AFFORDANCE__SUBSCRIPTION);
 		createEReference(eventAffordanceEClass, EVENT_AFFORDANCE__CANCELLATION);
 
 		interactionAffordanceEClass = createEClass(INTERACTION_AFFORDANCE);
+		createEAttribute(interactionAffordanceEClass, INTERACTION_AFFORDANCE__TITLE);
+		createEAttribute(interactionAffordanceEClass, INTERACTION_AFFORDANCE__DESCRIPTION);
 		createEReference(interactionAffordanceEClass, INTERACTION_AFFORDANCE__FORMS);
-		createEReference(interactionAffordanceEClass, INTERACTION_AFFORDANCE__TYPE);
+		createEReference(interactionAffordanceEClass, INTERACTION_AFFORDANCE__ATYPE);
 
 		formEClass = createEClass(FORM);
 		createEAttribute(formEClass, FORM__OP);
@@ -1315,27 +1484,35 @@
 		createEAttribute(formEClass, FORM__SUB_PROTOCOL);
 		createEAttribute(formEClass, FORM__SCOPES);
 		createEAttribute(formEClass, FORM__RESPONSE);
+		createEReference(formEClass, FORM__SECURITY);
+		createEReference(formEClass, FORM__BASE_COMMENT);
 
 		typeEClass = createEClass(TYPE);
 		createEAttribute(typeEClass, TYPE__NAME);
 		createEReference(typeEClass, TYPE__BASE_TYPE);
 
 		dataSchemaEClass = createEClass(DATA_SCHEMA);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__TITLE);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__DESCRIPTION);
 		createEReference(dataSchemaEClass, DATA_SCHEMA__BASE_TYPED_ELEMENT);
-		createEReference(dataSchemaEClass, DATA_SCHEMA__ENUM);
-		createEReference(dataSchemaEClass, DATA_SCHEMA__NUMBER_INTERVAL);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__ENUM);
 		createEReference(dataSchemaEClass, DATA_SCHEMA__REQUIRED);
 		createEReference(dataSchemaEClass, DATA_SCHEMA__ITEMS);
 		createEReference(dataSchemaEClass, DATA_SCHEMA__PROPERTIES);
-		createEReference(dataSchemaEClass, DATA_SCHEMA__TYPE);
+		createEReference(dataSchemaEClass, DATA_SCHEMA__ATYPE);
 		createEAttribute(dataSchemaEClass, DATA_SCHEMA__WRITE_ONLY);
 		createEAttribute(dataSchemaEClass, DATA_SCHEMA__FORMAT);
 		createEReference(dataSchemaEClass, DATA_SCHEMA__ONE_OF);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__TYPE);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__CONST);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__MIN_ITEMS);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__MAX_ITEMS);
+		createEAttribute(dataSchemaEClass, DATA_SCHEMA__READ_ONLY);
 
 		actionAffordanceEClass = createEClass(ACTION_AFFORDANCE);
+		createEReference(actionAffordanceEClass, ACTION_AFFORDANCE__BASE_OPERATION);
 		createEReference(actionAffordanceEClass, ACTION_AFFORDANCE__INPUT);
 		createEReference(actionAffordanceEClass, ACTION_AFFORDANCE__OUTPUT);
-		createEReference(actionAffordanceEClass, ACTION_AFFORDANCE__BASE_BEHAVIORAL_FEATURE);
 		createEAttribute(actionAffordanceEClass, ACTION_AFFORDANCE__SAFE);
 		createEAttribute(actionAffordanceEClass, ACTION_AFFORDANCE__IDEMPOTENT);
 
@@ -1381,39 +1558,41 @@
 		setNsURI(eNS_URI);
 
 		// Obtain other dependent packages
-		ArtefactPackage theArtefactPackage = (ArtefactPackage)EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
 		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
 		UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
-		StructurePackage theStructurePackage = (StructurePackage)EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
 
 		// Create type parameters
 
 		// Set bounds for type parameters
 
 		// Add supertypes to classes
-		thingEClass.getESuperTypes().add(theArtefactPackage.getVirtualEntity());
 		eventAffordanceEClass.getESuperTypes().add(this.getInteractionAffordance());
-		formEClass.getESuperTypes().add(theStructurePackage.getMetaValueSpecification());
 		actionAffordanceEClass.getESuperTypes().add(this.getInteractionAffordance());
 		propertyAffordanceEClass.getESuperTypes().add(this.getInteractionAffordance());
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(thingEClass, Thing.class, "Thing", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getThing_Title(), theTypesPackage.getString(), "title", null, 1, 1, Thing.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getThing_Description(), theTypesPackage.getString(), "description", null, 1, 1, Thing.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getThing_Base(), theTypesPackage.getString(), "base", null, 0, 1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getThing_Id(), theTypesPackage.getString(), "id", null, 0, 1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getThing_Support(), theTypesPackage.getString(), "support", null, 0, 1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getThing_Security(), this.getSecurityScheme(), null, "security", null, 1, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getThing_SecurityDefinitions(), this.getSecurityScheme(), null, "securityDefinitions", null, 1, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getThing_Links(), this.getLink(), null, "links", null, 0, -1, Thing.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
-		initEReference(getThing_Events(), this.getEventAffordance(), null, "events", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getThing_Actions(), this.getActionAffordance(), null, "actions", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getThing_Properties(), this.getPropertyAffordance(), null, "properties", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getThing_Events(), this.getEventAffordance(), null, "events", null, 0, -1, Thing.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEReference(getThing_Actions(), this.getActionAffordance(), null, "actions", null, 0, -1, Thing.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEReference(getThing_Properties(), this.getPropertyAffordance(), null, "properties", null, 0, -1, Thing.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getThing_Version(), theTypesPackage.getString(), "version", null, 1, 1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getThing_Type(), this.getType(), null, "type", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getThing_Context(), this.getContext(), null, "context", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getThing_AType(), this.getType(), null, "aType", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getThing_AContext(), this.getContext(), null, "aContext", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getThing_Forms(), this.getForm(), null, "forms", null, 0, -1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getThing_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 0, 1, Thing.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(securitySchemeEClass, SecurityScheme.class, "SecurityScheme", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getSecurityScheme_Base_Classifier(), theUMLPackage.getClassifier(), null, "base_Classifier", null, 0, 1, SecurityScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getSecurityScheme_Title(), theTypesPackage.getString(), "title", null, 1, 1, SecurityScheme.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getSecurityScheme_Description(), theTypesPackage.getString(), "description", null, 1, 1, SecurityScheme.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getSecurityScheme_Scheme(), this.getSecuritySchemeKind(), "scheme", null, 1, 1, SecurityScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getSecurityScheme_Proxy(), theTypesPackage.getString(), "proxy", null, 0, 1, SecurityScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getSecurityScheme_In(), this.getSecurityAuthenticationInformationLocationKind(), "in", "header", 1, 1, SecurityScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
@@ -1436,14 +1615,16 @@
 		initEAttribute(getLink_Anchor(), theTypesPackage.getString(), "anchor", null, 1, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(eventAffordanceEClass, EventAffordance.class, "EventAffordance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getEventAffordance_Base_Signal(), theUMLPackage.getSignal(), null, "base_Signal", null, 0, 1, EventAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getEventAffordance_Base_Reception(), theUMLPackage.getReception(), null, "base_Reception", null, 0, 1, EventAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getEventAffordance_Data(), this.getDataSchema(), null, "data", null, 0, 1, EventAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getEventAffordance_Subscription(), this.getDataSchema(), null, "subscription", null, 0, 1, EventAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getEventAffordance_Cancellation(), this.getDataSchema(), null, "cancellation", null, 0, 1, EventAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(interactionAffordanceEClass, InteractionAffordance.class, "InteractionAffordance", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getInteractionAffordance_Title(), theTypesPackage.getString(), "title", null, 1, 1, InteractionAffordance.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getInteractionAffordance_Description(), theTypesPackage.getString(), "description", null, 1, 1, InteractionAffordance.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
 		initEReference(getInteractionAffordance_Forms(), this.getForm(), null, "forms", null, 1, -1, InteractionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getInteractionAffordance_Type(), this.getType(), null, "type", null, 0, -1, InteractionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getInteractionAffordance_AType(), this.getType(), null, "aType", null, 0, -1, InteractionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(formEClass, Form.class, "Form", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getForm_Op(), this.getOpKind(), "op", "readproperty", 1, -1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
@@ -1451,29 +1632,37 @@
 		initEAttribute(getForm_ContentType(), theTypesPackage.getString(), "contentType", "application/json", 1, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getForm_ContentCoding(), theTypesPackage.getString(), "contentCoding", null, 0, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getForm_SubProtocol(), this.getSubProtocolKind(), "subProtocol", null, 0, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEAttribute(getForm_Scopes(), theTypesPackage.getString(), "scopes", null, 0, -1, Form.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getForm_Scopes(), theTypesPackage.getString(), "scopes", null, 0, -1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getForm_Response(), theTypesPackage.getString(), "response", "application/json", 0, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getForm_Security(), this.getSecurityScheme(), null, "security", null, 1, -1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getForm_Base_Comment(), theUMLPackage.getComment(), null, "base_Comment", null, 0, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(typeEClass, Type.class, "Type", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getType_Name(), theTypesPackage.getString(), "name", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getType_Base_Type(), theUMLPackage.getType(), null, "base_Type", null, 0, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(dataSchemaEClass, DataSchema.class, "DataSchema", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDataSchema_Title(), theTypesPackage.getString(), "title", null, 1, 1, DataSchema.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getDataSchema_Description(), theTypesPackage.getString(), "description", null, 1, 1, DataSchema.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
 		initEReference(getDataSchema_Base_TypedElement(), theUMLPackage.getTypedElement(), null, "base_TypedElement", null, 0, 1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getDataSchema_Enum(), theStructurePackage.getMetaValueSpecification(), null, "enum", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getDataSchema_NumberInterval(), theUMLPackage.getInterval(), null, "numberInterval", null, 1, 1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getDataSchema_Enum(), theTypesPackage.getString(), "enum", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getDataSchema_Required(), theUMLPackage.getProperty(), null, "required", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getDataSchema_Items(), this.getDataSchema(), null, "items", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getDataSchema_Properties(), this.getDataSchema(), null, "properties", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getDataSchema_Type(), this.getType(), null, "type", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getDataSchema_AType(), this.getType(), null, "aType", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getDataSchema_WriteOnly(), theTypesPackage.getBoolean(), "writeOnly", "false", 1, 1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getDataSchema_Format(), theTypesPackage.getString(), "format", null, 0, 1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getDataSchema_OneOf(), this.getDataSchema(), null, "oneOf", null, 0, -1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getDataSchema_Type(), theTypesPackage.getString(), "type", null, 1, 1, DataSchema.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getDataSchema_Const(), theTypesPackage.getString(), "const", null, 1, 1, DataSchema.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getDataSchema_MinItems(), theTypesPackage.getInteger(), "minItems", null, 1, 1, DataSchema.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getDataSchema_MaxItems(), theTypesPackage.getInteger(), "maxItems", null, 1, 1, DataSchema.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getDataSchema_ReadOnly(), theTypesPackage.getBoolean(), "readOnly", null, 1, 1, DataSchema.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
 
 		initEClass(actionAffordanceEClass, ActionAffordance.class, "ActionAffordance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getActionAffordance_Input(), this.getDataSchema(), null, "input", null, 0, 1, ActionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getActionAffordance_Output(), this.getDataSchema(), null, "output", null, 0, 1, ActionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getActionAffordance_Base_BehavioralFeature(), theUMLPackage.getBehavioralFeature(), null, "base_BehavioralFeature", null, 0, 1, ActionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getActionAffordance_Base_Operation(), theUMLPackage.getOperation(), null, "base_Operation", null, 0, 1, ActionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getActionAffordance_Input(), this.getDataSchema(), null, "input", null, 0, 1, ActionAffordance.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEReference(getActionAffordance_Output(), this.getDataSchema(), null, "output", null, 0, 1, ActionAffordance.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getActionAffordance_Safe(), theTypesPackage.getBoolean(), "safe", null, 1, 1, ActionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getActionAffordance_Idempotent(), theTypesPackage.getBoolean(), "idempotent", null, 1, 1, ActionAffordance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTAdapterFactory.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTAdapterFactory.java
index 18124c2..f3e8b53 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTAdapterFactory.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTAdapterFactory.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.util;
@@ -19,12 +20,6 @@
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 
 import org.eclipse.emf.ecore.EObject;
-
-import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
-import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
-
-import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
-
 import org.eclipse.papyrus.iotml.wot.*;
 
 /**
@@ -128,18 +123,6 @@
 				return createContextAdapter();
 			}
 			@Override
-			public Adapter caseDigitalArtefact(DigitalArtefact object) {
-				return createDigitalArtefactAdapter();
-			}
-			@Override
-			public Adapter caseVirtualEntity(VirtualEntity object) {
-				return createVirtualEntityAdapter();
-			}
-			@Override
-			public Adapter caseMetaValueSpecification(MetaValueSpecification object) {
-				return createMetaValueSpecificationAdapter();
-			}
-			@Override
 			public Adapter defaultCase(EObject object) {
 				return createEObjectAdapter();
 			}
@@ -314,48 +297,6 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact <em>Digital Artefact</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact
-	 * @generated
-	 */
-	public Adapter createDigitalArtefactAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.artefact.VirtualEntity <em>Virtual Entity</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.papyrus.iotml.software.artefact.VirtualEntity
-	 * @generated
-	 */
-	public Adapter createVirtualEntityAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification <em>Meta Value Specification</em>}'.
-	 * <!-- begin-user-doc -->
-	 * This default implementation returns null so that we can easily ignore cases;
-	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
-	 * <!-- end-user-doc -->
-	 * @return the new adapter.
-	 * @see org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification
-	 * @generated
-	 */
-	public Adapter createMetaValueSpecificationAdapter() {
-		return null;
-	}
-
-	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null.
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTSwitch.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTSwitch.java
index 54739b9..09a2417 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTSwitch.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/util/WoTSwitch.java
@@ -9,6 +9,7 @@
  * Contributors:
  *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
  *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ *   Shuai Li (CEA) shuai.li@cea.fr - Integration of sensiNact and Web of Things Thing Description
  * 
  */
 package org.eclipse.papyrus.iotml.wot.util;
@@ -17,12 +18,6 @@
 import org.eclipse.emf.ecore.EPackage;
 
 import org.eclipse.emf.ecore.util.Switch;
-
-import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
-import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
-
-import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
-
 import org.eclipse.papyrus.iotml.wot.*;
 
 /**
@@ -85,8 +80,6 @@
 			case WoTPackage.THING: {
 				Thing thing = (Thing)theEObject;
 				T result = caseThing(thing);
-				if (result == null) result = caseVirtualEntity(thing);
-				if (result == null) result = caseDigitalArtefact(thing);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -118,7 +111,6 @@
 			case WoTPackage.FORM: {
 				Form form = (Form)theEObject;
 				T result = caseForm(form);
-				if (result == null) result = caseMetaValueSpecification(form);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -324,51 +316,6 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Digital Artefact</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Digital Artefact</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseDigitalArtefact(DigitalArtefact object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Virtual Entity</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Virtual Entity</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseVirtualEntity(VirtualEntity object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Meta Value Specification</em>'.
-	 * <!-- begin-user-doc -->
-	 * This implementation returns null;
-	 * returning a non-null result will terminate the switch.
-	 * <!-- end-user-doc -->
-	 * @param object the target of the switch.
-	 * @return the result of interpreting the object as an instance of '<em>Meta Value Specification</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseMetaValueSpecification(MetaValueSpecification object) {
-		return null;
-	}
-
-	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
diff --git a/org.eclipse.papyrus.iotml.targetplatform.photon/org.eclipse.papyrus.iotml.targetplatform.photon.target b/org.eclipse.papyrus.iotml.targetplatform.photon/org.eclipse.papyrus.iotml.targetplatform.photon.target
index 7805a64..92b42d2 100644
--- a/org.eclipse.papyrus.iotml.targetplatform.photon/org.eclipse.papyrus.iotml.targetplatform.photon.target
+++ b/org.eclipse.papyrus.iotml.targetplatform.photon/org.eclipse.papyrus.iotml.targetplatform.photon.target
@@ -82,5 +82,15 @@
       <unit id="org.eclipse.papyrus.toolsmiths.feature.feature.group" version="0.0.0"/>
       <repository id="papyrus-toolsmith" location="http://download.eclipse.org/modeling/mdt/papyrus/updates/releases/2019-03/"/>
     </location>
+		<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+		<unit id="com.fasterxml.jackson.core.jackson-annotations" version="0.0.0"/>
+		<unit id="com.fasterxml.jackson.core.jackson-core" version="0.0.0"/>
+		<unit id="com.fasterxml.jackson.core.jackson-databind" version="0.0.0"/>
+		<repository id="orbit" location="https://download.eclipse.org/tools/orbit/downloads/drops/R20200224183213/repository/"/>
+	</location>
+	<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+		<unit id="org.eclipse.papyrus.designer.languages.common.feature.feature.group" version="0.0.0"/>
+		<repository id="swdesigner" location="https://ci.eclipse.org/papyrus/job/papyrus-designer-photon/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.designer.p2/target/repository/"/>
+	</location>
   </locations>
 </target>
diff --git a/releng/org.eclipse.papyrus.iotml.p2/category.xml b/releng/org.eclipse.papyrus.iotml.p2/category.xml
index 021e8f5..404b2fa 100644
--- a/releng/org.eclipse.papyrus.iotml.p2/category.xml
+++ b/releng/org.eclipse.papyrus.iotml.p2/category.xml
@@ -1,9 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <site>
    <feature url="features/org.eclipse.papyrus.iotml.feature_1.0.0.qualifier.jar" id="org.eclipse.papyrus.iotml.feature" version="1.0.0.qualifier">
-      <category name="org.eclipse.papyrus.category"/>
+      <category name="org.eclipse.papyrus.iotml.category"/>
    </feature>
-   <category-def name="org.eclipse.papyrus.category" label="Papyrus IoTML Category">
+   <feature url="features/org.eclipse.papyrus.iotml.wot.td.feature_1.0.0.qualifier.jar" id="org.eclipse.papyrus.iotml.wot.td.feature" version="1.0.0.qualifier">
+      <category name="org.eclipse.papyrus.iotml.category"/>
+   </feature>
+   <category-def name="org.eclipse.papyrus.iotml.category" label="Papyrus IoTML Category">
       <description>
          Papyrus IoTML Category
       </description>
diff --git a/releng/org.eclipse.papyrus.iotml.product/category.xml b/releng/org.eclipse.papyrus.iotml.product/category.xml
index 9744b8d..2a5501b 100644
--- a/releng/org.eclipse.papyrus.iotml.product/category.xml
+++ b/releng/org.eclipse.papyrus.iotml.product/category.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <site>
    <feature url="features/org.eclipse.papyrus.iotml.feature_1.0.0.qualifier.jar" id="org.eclipse.papyrus.iotml.feature" version="1.0.0.qualifier"/>
+   <feature url="features/org.eclipse.papyrus.iotml.wot.td.feature_1.0.0.qualifier.jar" id="org.eclipse.papyrus.iotml.wot.td.feature" version="1.0.0.qualifier"/>
 </site>
diff --git a/releng/org.eclipse.papyrus.iotml.product/papyrusIotml.product b/releng/org.eclipse.papyrus.iotml.product/papyrusIotml.product
index d4a3d30..70b800b 100644
--- a/releng/org.eclipse.papyrus.iotml.product/papyrusIotml.product
+++ b/releng/org.eclipse.papyrus.iotml.product/papyrusIotml.product
@@ -193,6 +193,7 @@
       <feature id="org.eclipse.rcp"/>
       <feature id="org.eclipse.papyrus.iotml.feature" installMode="root"/>
       <feature id="org.eclipse.papyrus.iotml.rcp.feature" installMode="root"/>
+	  <feature id="org.eclipse.papyrus.iotml.wot.td.feature" installMode="root"/>
       <feature id="org.eclipse.emf.compare"/>
       <feature id="org.eclipse.emf.compare.diagram.gmf"/>
       <feature id="org.eclipse.emf.compare.egit"/>