Bug 547511 - [IoTML] Conformance of WoT TD package to the specification

- Conformance to WoT TD specification
- Better UML integration
- This version does not yet contain the children of SecurityScheme

Change-Id: I13e65dc060877a75064df8b09440b751dad8df3c
Signed-off-by: Shuai Li <shuai.li@cea.fr>
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 e23d52c..f0fd3a7 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.genmodel
@@ -360,78 +360,110 @@
     </nestedGenPackages>
     <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="WoT" basePackage="org.eclipse.papyrus.iotml"
         disposableProviderFactory="true" ecorePackage="iotml.ecore#//wot">
+      <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="iotml.ecore#//wot/SecuritySchemeKind">
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/nosec"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/basic"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/cert"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/digest"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/bearer"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/pop"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/psk"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/public"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/oauth"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SecuritySchemeKind/apikey"/>
+      </genEnums>
+      <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="iotml.ecore#//wot/RelKind">
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/RelKind/none"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/RelKind/readproperty"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/RelKind/writeproperty"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/RelKind/observerproperty"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/RelKind/invokeaction"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/RelKind/subscribeevent"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/RelKind/unsubscribeevent"/>
+      </genEnums>
+      <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="iotml.ecore#//wot/SubProtocolKind">
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SubProtocolKind/None"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="iotml.ecore#//wot/SubProtocolKind/LongPoll"/>
+      </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/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/thingSec"/>
+            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/base"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/links"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/event"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/events"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/action"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/actions"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Thing/properties"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/SecurityScheme">
         <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/description"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/SecurityScheme/proxyUrl"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/SecurityScheme/base_Classifier"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Link">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Link/href"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Link/mediaType"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Link/rel"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Link/href"/>
+            propertySortChoices="true" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Link/anchor"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Link/anchor"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Link/base_PrimitiveType"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Event">
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Event/base_Event"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Event/base_Signal"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/InteractionPattern">
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/InteractionPattern/label"/>
-        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/InteractionPattern/description"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/InteractionPattern/scopes"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/InteractionPattern/intSec"/>
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/InteractionPattern/security"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/InteractionPattern/forms"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Form">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Form/href"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/mediaType"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/rel"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/subProtocol"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Form/security"/>
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Form/scopes"/>
-        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Form/href"/>
-        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Form/formSec"/>
       </genClasses>
-      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/DataScheme">
-        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataScheme/type"/>
-        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/DataScheme/description"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/DataSchema">
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataScheme/const"/>
+            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/DataScheme/enum"/>
+            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"/>
+        <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"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/items"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/DataSchema/properties"/>
       </genClasses>
-      <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Date"/>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Action">
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Action/input"/>
         <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
             propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Action/output"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Action/base_BehavioralFeature"/>
       </genClasses>
       <genClasses xsi:type="genmodel:GenClass" ecoreClass="iotml.ecore#//wot/Property">
         <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute iotml.ecore#//wot/Property/observable"/>
-        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-            propertySortChoices="true" ecoreFeature="ecore:EReference iotml.ecore#//wot/Property/base_Property"/>
       </genClasses>
     </nestedGenPackages>
   </genPackages>
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 dd63a44..9f7e57d 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.notation
@@ -4470,10 +4470,6 @@
           <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_HnGuUEZ3Eemjs4KMC2ChPg"/>
           <layoutConstraint xmi:type="notation:Location" xmi:id="_HnQfUUZ3Eemjs4KMC2ChPg"/>
         </children>
-        <children xmi:type="notation:Shape" xmi:id="_IqW7EEZ3Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
-          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_IqEAIEZ3Eemjs4KMC2ChPg"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_IqW7EUZ3Eemjs4KMC2ChPg"/>
-        </children>
         <styles xmi:type="notation:TitleStyle" xmi:id="_GdG11UZ2Eemjs4KMC2ChPg"/>
         <styles xmi:type="notation:SortingStyle" xmi:id="_GdG11kZ2Eemjs4KMC2ChPg"/>
         <styles xmi:type="notation:FilteringStyle" xmi:id="_GdG110Z2Eemjs4KMC2ChPg"/>
@@ -4495,10 +4491,6 @@
           <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_-RE9oEZ3Eemjs4KMC2ChPg"/>
           <layoutConstraint xmi:type="notation:Location" xmi:id="_-RYfoUZ3Eemjs4KMC2ChPg"/>
         </children>
-        <children xmi:type="notation:Shape" xmi:id="_AIGwsEZ4Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
-          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_AH8_sEZ4Eemjs4KMC2ChPg"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_AIGwsUZ4Eemjs4KMC2ChPg"/>
-        </children>
         <children xmi:type="notation:Shape" xmi:id="_BYmIMUZ4Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
           <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_BYmIMEZ4Eemjs4KMC2ChPg"/>
           <layoutConstraint xmi:type="notation:Location" xmi:id="_BYmIMkZ4Eemjs4KMC2ChPg"/>
@@ -4578,18 +4570,6 @@
     <children xmi:type="notation:Shape" xmi:id="_OOxbUUZ2Eemjs4KMC2ChPg" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_OOxbU0Z2Eemjs4KMC2ChPg" type="Stereotype_NameLabel"/>
       <children xmi:type="notation:BasicCompartment" xmi:id="_OOxbVEZ2Eemjs4KMC2ChPg" type="Stereotype_AttributeCompartment">
-        <children xmi:type="notation:Shape" xmi:id="_AXgUEEZ3Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
-          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_AXNZIEZ3Eemjs4KMC2ChPg"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_AXgUEUZ3Eemjs4KMC2ChPg"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_Cll8QEZ3Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
-          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_ClTBUEZ3Eemjs4KMC2ChPg"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_Cll8QUZ3Eemjs4KMC2ChPg"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_4SRc4EZ3Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
-          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_4R-h8EZ3Eemjs4KMC2ChPg"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_4SRc4UZ3Eemjs4KMC2ChPg"/>
-        </children>
         <children xmi:type="notation:Shape" xmi:id="_5pmcMEZ3Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
           <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_5pThQEZ3Eemjs4KMC2ChPg"/>
           <layoutConstraint xmi:type="notation:Location" xmi:id="_5pmcMUZ3Eemjs4KMC2ChPg"/>
@@ -4644,13 +4624,21 @@
     <children xmi:type="notation:Shape" xmi:id="_QWwbgUZ2Eemjs4KMC2ChPg" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_QWwbg0Z2Eemjs4KMC2ChPg" type="Stereotype_NameLabel"/>
       <children xmi:type="notation:BasicCompartment" xmi:id="_QWwbhEZ2Eemjs4KMC2ChPg" type="Stereotype_AttributeCompartment">
-        <children xmi:type="notation:Shape" xmi:id="_QPFQwEZ3Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
-          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_QO7fwEZ3Eemjs4KMC2ChPg"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_QPFQwUZ3Eemjs4KMC2ChPg"/>
+        <children xmi:type="notation:Shape" xmi:id="_VVXo0HujEemSm8y_ktEBHQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_P6lbIHujEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_VVXo0XujEemSm8y_ktEBHQ"/>
         </children>
-        <children xmi:type="notation:Shape" xmi:id="_Rz880EZ3Eemjs4KMC2ChPg" type="Property_ClassAttributeLabel">
+        <children xmi:type="notation:Shape" xmi:id="_XyUMYHujEemSm8y_ktEBHQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_QO7fwEZ3Eemjs4KMC2ChPg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XyUMYXujEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_X43gUHujEemSm8y_ktEBHQ" type="Property_ClassAttributeLabel">
           <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_RzgQ4EZ3Eemjs4KMC2ChPg"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_Rz880UZ3Eemjs4KMC2ChPg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_X43gUXujEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_X_tIIHujEemSm8y_ktEBHQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="IoT-ML.profile.uml#_UE4RUHujEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_X_tIIXujEemSm8y_ktEBHQ"/>
         </children>
         <styles xmi:type="notation:TitleStyle" xmi:id="_QWwbhUZ2Eemjs4KMC2ChPg"/>
         <styles xmi:type="notation:SortingStyle" xmi:id="_QWwbhkZ2Eemjs4KMC2ChPg"/>
@@ -4666,43 +4654,121 @@
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_QWwbgEZ2Eemjs4KMC2ChPg"/>
       <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QWwbgkZ2Eemjs4KMC2ChPg" x="940" y="100" width="166" height="147"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_KveV4Fa8EemBYs5-fDI8uw" type="Stereotype_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_KvhZMFa8EemBYs5-fDI8uw" type="Stereotype_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_KviAQFa8EemBYs5-fDI8uw" type="Stereotype_AttributeCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_KviAQVa8EemBYs5-fDI8uw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_KviAQla8EemBYs5-fDI8uw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_KviAQ1a8EemBYs5-fDI8uw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KviARFa8EemBYs5-fDI8uw"/>
+    <children xmi:type="notation:Shape" xmi:id="_P5y7gXukEemSm8y_ktEBHQ" type="Enumeration_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_P5y7g3ukEemSm8y_ktEBHQ" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_P5y7hHukEemSm8y_ktEBHQ" type="Enumeration_LiteralCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_PUbNgHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_D6sVIHu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_PUbNgXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_PgU7gHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_D6sVIXu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_PgU7gXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ProzoHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_D6sVInu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ProzoXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_P28EsHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_D6sVI3u4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_P28EsXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QCsowHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_D6sVJHu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QCsowXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QN2v4Hu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_D6sVJXu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QN2v4Xu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QapOsHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_D6sVJnu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QapOsXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QhyYgHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_KynPMHu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QhyYgXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Qs8foHu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_K_HaIHu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Qs8foXu4EemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Q3p60Hu4EemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_LKkcMHu4EemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Q3p60Xu4EemSm8y_ktEBHQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_P5y7hXukEemSm8y_ktEBHQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_P5y7hnukEemSm8y_ktEBHQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_P5y7h3ukEemSm8y_ktEBHQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5y7iHukEemSm8y_ktEBHQ"/>
       </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_KviARVa8EemBYs5-fDI8uw" visible="false" type="Stereotype_OperationCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_KviARla8EemBYs5-fDI8uw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_KviAR1a8EemBYs5-fDI8uw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_KviASFa8EemBYs5-fDI8uw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KviASVa8EemBYs5-fDI8uw"/>
+      <element xmi:type="uml:Enumeration" href="IoT-ML.profile.uml#_P5y7gHukEemSm8y_ktEBHQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5y7gnukEemSm8y_ktEBHQ" x="560" y="-200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_uzR3gXusEemSm8y_ktEBHQ" type="Enumeration_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_uzR3g3usEemSm8y_ktEBHQ" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_uzR3hHusEemSm8y_ktEBHQ" type="Enumeration_LiteralCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_WYUvEHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_QnhOEHutEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_WYUvEXutEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_WkOdEHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_zHZ_IHusEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_WkOdEXutEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_WvPaQHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_3BWsMHusEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_WvPaQXutEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_W6ZhYHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_5RN2AHusEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_W6ZhYXutEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XF2jcHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_5cq4EHusEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XF2jcXutEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XRdWgHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_5kQt0HusEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XRdWgXutEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZpCIHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_5wKb0HusEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZpCIXutEemSm8y_ktEBHQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_uzR3hXusEemSm8y_ktEBHQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_uzR3hnusEemSm8y_ktEBHQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_uzR3h3usEemSm8y_ktEBHQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uzR3iHusEemSm8y_ktEBHQ"/>
       </children>
-      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_KvRhkFa8EemBYs5-fDI8uw"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KveV4Va8EemBYs5-fDI8uw" x="400" y="1000" width="166" height="147"/>
+      <element xmi:type="uml:Enumeration" href="IoT-ML.profile.uml#_uzR3gHusEemSm8y_ktEBHQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uzR3gnusEemSm8y_ktEBHQ" x="1140" y="100"/>
     </children>
-    <children xmi:type="notation:Shape" xmi:id="_jlesoFetEemhlNDbySlnYA" type="Comment_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_jln2kFetEemhlNDbySlnYA" type="Comment_BodyLabel"/>
-      <element xmi:type="uml:Comment" href="IoT-ML.profile.uml#_auHDUFetEemhlNDbySlnYA"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jlesoVetEemhlNDbySlnYA" x="-80" y="100"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_klTK4FetEemhlNDbySlnYA" type="Comment_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_klTK4letEemhlNDbySlnYA" type="Comment_BodyLabel"/>
-      <element xmi:type="uml:Comment" href="IoT-ML.profile.uml#_dnaywFetEemhlNDbySlnYA"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_klTK4VetEemhlNDbySlnYA" x="-140" y="180" width="280"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_qM0NAFetEemhlNDbySlnYA" type="Comment_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_qM0NAletEemhlNDbySlnYA" type="Comment_BodyLabel"/>
-      <element xmi:type="uml:Comment" href="IoT-ML.profile.uml#_RgW6UFetEemhlNDbySlnYA"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qM0NAVetEemhlNDbySlnYA" x="-160" y="620"/>
+    <children xmi:type="notation:Shape" xmi:id="_FC6icXutEemSm8y_ktEBHQ" type="Enumeration_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_FC6ic3utEemSm8y_ktEBHQ" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_FC6idHutEemSm8y_ktEBHQ" type="Enumeration_LiteralCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_UTB2gHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_SQG8gHutEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_UTB2gXutEemSm8y_ktEBHQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Ue7kgHutEemSm8y_ktEBHQ" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="IoT-ML.profile.uml#_HVTb0HutEemSm8y_ktEBHQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Ue7kgXutEemSm8y_ktEBHQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_FC6idXutEemSm8y_ktEBHQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_FC6idnutEemSm8y_ktEBHQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_FC6id3utEemSm8y_ktEBHQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FC6ieHutEemSm8y_ktEBHQ"/>
+      </children>
+      <element xmi:type="uml:Enumeration" href="IoT-ML.profile.uml#_FC6icHutEemSm8y_ktEBHQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FC6icnutEemSm8y_ktEBHQ" x="1280" y="100"/>
     </children>
     <styles xmi:type="notation:StringValueStyle" xmi:id="_lrvRgUZ1Eemjs4KMC2ChPg" name="diagram_compatibility_version" stringValue="1.4.0"/>
     <styles xmi:type="notation:DiagramStyle" xmi:id="_lrvRgkZ1Eemjs4KMC2ChPg"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_lrvRg0Z1Eemjs4KMC2ChPg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
       <owner xmi:type="uml:Package" href="IoT-ML.profile.uml#_aARI4EZ1Eemjs4KMC2ChPg"/>
     </styles>
+    <styles xmi:type="notation:BooleanValueStyle" xmi:id="_SihpkHuqEemSm8y_ktEBHQ" name="rulergrid.viewgrid"/>
     <element xmi:type="uml:Package" href="IoT-ML.profile.uml#_aARI4EZ1Eemjs4KMC2ChPg"/>
     <edges xmi:type="notation:Connector" xmi:id="_gAA7UFa8EemBYs5-fDI8uw" type="Association_Edge" source="_npmsYEZ1Eemjs4KMC2ChPg" target="_GdG10UZ2Eemjs4KMC2ChPg">
       <children xmi:type="notation:DecorationNode" xmi:id="_gABiYFa8EemBYs5-fDI8uw" type="Association_StereotypeLabel">
@@ -4911,93 +4977,6 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a2XEcFa9EemBYs5-fDI8uw" id="(0.8433734939759037,0.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a2XrgFa9EemBYs5-fDI8uw" id="(0.4819277108433735,1.0)"/>
     </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_oPMt0Fa9EemBYs5-fDI8uw" type="Association_Edge" source="_GdG10UZ2Eemjs4KMC2ChPg" target="_QWwbgUZ2Eemjs4KMC2ChPg">
-      <children xmi:type="notation:DecorationNode" xmi:id="_oPNU4Fa9EemBYs5-fDI8uw" type="Association_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_oPNU4Va9EemBYs5-fDI8uw" y="60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_oPNU4la9EemBYs5-fDI8uw" type="Association_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_oPNU41a9EemBYs5-fDI8uw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_oPNU5Fa9EemBYs5-fDI8uw" type="Association_TargetRoleLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_oPNU5Va9EemBYs5-fDI8uw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_oPNU5la9EemBYs5-fDI8uw" type="Association_SourceRoleLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_oPNU51a9EemBYs5-fDI8uw" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_oPNU6Fa9EemBYs5-fDI8uw" type="Association_SourceMultiplicityLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_oPNU6Va9EemBYs5-fDI8uw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_oPNU6la9EemBYs5-fDI8uw" type="Association_TargetMultiplicityLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_oPNU61a9EemBYs5-fDI8uw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_oPMt0Va9EemBYs5-fDI8uw"/>
-      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_oO5L0Fa9EemBYs5-fDI8uw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oPMt0la9EemBYs5-fDI8uw" points="[706, 120, -643984, -643984]$[940, 120, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oP9i0Fa9EemBYs5-fDI8uw" id="(1.0,0.1360544217687075)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oP9i0Va9EemBYs5-fDI8uw" id="(0.0,0.1360544217687075)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_w95jUFa9EemBYs5-fDI8uw" type="Association_Edge" source="_QWwbgUZ2Eemjs4KMC2ChPg" target="_QWwbgUZ2Eemjs4KMC2ChPg">
-      <children xmi:type="notation:DecorationNode" xmi:id="_w96KYFa9EemBYs5-fDI8uw" type="Association_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xblk4Fa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_w96KYVa9EemBYs5-fDI8uw" y="60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_w96KYla9EemBYs5-fDI8uw" type="Association_NameLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xbznUFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_w96KY1a9EemBYs5-fDI8uw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_w96KZFa9EemBYs5-fDI8uw" type="Association_TargetRoleLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xcBpwFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_w96KZVa9EemBYs5-fDI8uw" x="-51" y="-7"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_w96KZla9EemBYs5-fDI8uw" type="Association_SourceRoleLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xcSvgFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_w96KZ1a9EemBYs5-fDI8uw" x="50" y="-13"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_w96KaFa9EemBYs5-fDI8uw" type="Association_SourceMultiplicityLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xciAEFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_w96KaVa9EemBYs5-fDI8uw" x="19" y="-13"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_w96Kala9EemBYs5-fDI8uw" type="Association_TargetMultiplicityLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xcx3sFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_w96Ka1a9EemBYs5-fDI8uw" x="-19" y="-7"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_w95jUVa9EemBYs5-fDI8uw"/>
-      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_w9QqIFa9EemBYs5-fDI8uw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w95jUla9EemBYs5-fDI8uw" points="[1106, 100, -643984, -643984]$[1180, 100, -643984, -643984]$[1180, 140, -643984, -643984]$[1106, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w-mt8Fa9EemBYs5-fDI8uw" id="(1.0,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w-mt8Va9EemBYs5-fDI8uw" id="(1.0,0.272108843537415)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_6FGYYFa9EemBYs5-fDI8uw" type="Association_Edge" source="_QWwbgUZ2Eemjs4KMC2ChPg" target="_QWwbgUZ2Eemjs4KMC2ChPg">
-      <children xmi:type="notation:DecorationNode" xmi:id="_6FGYY1a9EemBYs5-fDI8uw" type="Association_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7Ef_4Fa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_6FGYZFa9EemBYs5-fDI8uw" y="60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_6FGYZVa9EemBYs5-fDI8uw" type="Association_NameLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7E0wAFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_6FGYZla9EemBYs5-fDI8uw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_6FG_cFa9EemBYs5-fDI8uw" type="Association_TargetRoleLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7FDZgFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_6FG_cVa9EemBYs5-fDI8uw" x="-19" y="-7"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_6FG_cla9EemBYs5-fDI8uw" type="Association_SourceRoleLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7FTRIFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_6FG_c1a9EemBYs5-fDI8uw" x="30" y="-13"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_6FG_dFa9EemBYs5-fDI8uw" type="Association_SourceMultiplicityLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7FjIwFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_6FG_dVa9EemBYs5-fDI8uw" x="59" y="-13"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_6FG_dla9EemBYs5-fDI8uw" type="Association_TargetMultiplicityLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7FyZUFa9EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_6FG_d1a9EemBYs5-fDI8uw" x="-65" y="-7"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_6FGYYVa9EemBYs5-fDI8uw"/>
-      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_6EsIsFa9EemBYs5-fDI8uw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6FGYYla9EemBYs5-fDI8uw" points="[1106, 200, -643984, -643984]$[1180, 200, -643984, -643984]$[1180, 240, -643984, -643984]$[1106, 240, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6F63wFa9EemBYs5-fDI8uw" id="(1.0,0.6802721088435374)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6F7e0Fa9EemBYs5-fDI8uw" id="(1.0,0.9523809523809523)"/>
-    </edges>
     <edges xmi:type="notation:Connector" xmi:id="_EVj7kFa-EemBYs5-fDI8uw" type="Association_Edge" source="_Ik8FAUZ2Eemjs4KMC2ChPg" target="_GdG10UZ2Eemjs4KMC2ChPg">
       <children xmi:type="notation:DecorationNode" xmi:id="_EVkioFa-EemBYs5-fDI8uw" type="Association_StereotypeLabel">
         <layoutConstraint xmi:type="notation:Location" xmi:id="_EVkioVa-EemBYs5-fDI8uw" y="60"/>
@@ -5090,7 +5069,7 @@
       </children>
       <children xmi:type="notation:DecorationNode" xmi:id="_cRnsF1a-EemBYs5-fDI8uw" type="Association_TargetRoleLabel">
         <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cqzoIFa-EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_cRnsGFa-EemBYs5-fDI8uw" x="-62" y="20"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cRnsGFa-EemBYs5-fDI8uw" x="-42" y="13"/>
       </children>
       <children xmi:type="notation:DecorationNode" xmi:id="_cRnsGVa-EemBYs5-fDI8uw" type="Association_SourceRoleLabel">
         <styles xmi:type="notation:BooleanValueStyle" xmi:id="_crTXYFa-EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
@@ -5102,7 +5081,7 @@
       </children>
       <children xmi:type="notation:DecorationNode" xmi:id="_cRnsHVa-EemBYs5-fDI8uw" type="Association_TargetMultiplicityLabel">
         <styles xmi:type="notation:BooleanValueStyle" xmi:id="_csBJEFa-EemBYs5-fDI8uw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_cRnsHla-EemBYs5-fDI8uw" x="-62" y="-20"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cRnsHla-EemBYs5-fDI8uw" x="-18" y="-7"/>
       </children>
       <styles xmi:type="notation:FontStyle" xmi:id="_cRnsEVa-EemBYs5-fDI8uw"/>
       <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_cRRGwFa-EemBYs5-fDI8uw"/>
@@ -5182,6 +5161,93 @@
       <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_abhQoFa_EemBYs5-fDI8uw" id="(0.6024096385542169,1.0)"/>
       <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_abhQoVa_EemBYs5-fDI8uw" id="(1.0,0.42857142857142855)"/>
     </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bsXxsHukEemSm8y_ktEBHQ" type="Association_Edge" source="_GdG10UZ2Eemjs4KMC2ChPg" target="_QWwbgUZ2Eemjs4KMC2ChPg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bsXxs3ukEemSm8y_ktEBHQ" type="Association_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bsXxtHukEemSm8y_ktEBHQ" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bsXxtXukEemSm8y_ktEBHQ" type="Association_NameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bsXxtnukEemSm8y_ktEBHQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bsXxt3ukEemSm8y_ktEBHQ" type="Association_TargetRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bsXxuHukEemSm8y_ktEBHQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bsXxuXukEemSm8y_ktEBHQ" type="Association_SourceRoleLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bsXxunukEemSm8y_ktEBHQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bsXxu3ukEemSm8y_ktEBHQ" type="Association_SourceMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bsXxvHukEemSm8y_ktEBHQ" x="-16" y="7"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bsXxvXukEemSm8y_ktEBHQ" type="Association_TargetMultiplicityLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bsXxvnukEemSm8y_ktEBHQ" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bsXxsXukEemSm8y_ktEBHQ"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_bjJkQHukEemSm8y_ktEBHQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bsXxsnukEemSm8y_ktEBHQ" points="[706, 180, -643984, -643984]$[940, 180, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b5BGkHukEemSm8y_ktEBHQ" id="(1.0,0.54421768707483)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b5BGkXukEemSm8y_ktEBHQ" id="(0.0,0.54421768707483)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_uqZ_oHu9EemSm8y_ktEBHQ" type="Association_Edge" source="_OOxbUUZ2Eemjs4KMC2ChPg" target="_OOxbUUZ2Eemjs4KMC2ChPg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_uqZ_o3u9EemSm8y_ktEBHQ" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vlUIsHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uqZ_pHu9EemSm8y_ktEBHQ" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uqZ_pXu9EemSm8y_ktEBHQ" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vl6loHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uqZ_pnu9EemSm8y_ktEBHQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uqZ_p3u9EemSm8y_ktEBHQ" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vmNgkHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uqZ_qHu9EemSm8y_ktEBHQ" x="-27" y="-19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uqZ_qXu9EemSm8y_ktEBHQ" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vmgbgHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uqZ_qnu9EemSm8y_ktEBHQ" x="7" y="59"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uqZ_q3u9EemSm8y_ktEBHQ" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vm9HcHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uqZ_rHu9EemSm8y_ktEBHQ" x="7" y="-5"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uqZ_rXu9EemSm8y_ktEBHQ" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vnZzYHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uqZ_rnu9EemSm8y_ktEBHQ" x="-7" y="-16"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_uqZ_oXu9EemSm8y_ktEBHQ"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_upzisHu9EemSm8y_ktEBHQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uqZ_onu9EemSm8y_ktEBHQ" points="[400, 940, -643984, -643984]$[400, 1000, -643984, -643984]$[460, 1000, -643984, -643984]$[460, 940, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_urJmgHu9EemSm8y_ktEBHQ" id="(0.0,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_urJmgXu9EemSm8y_ktEBHQ" id="(0.3614457831325301,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5uv20Hu9EemSm8y_ktEBHQ" type="Association_Edge" source="_OOxbUUZ2Eemjs4KMC2ChPg" target="_OOxbUUZ2Eemjs4KMC2ChPg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5uv203u9EemSm8y_ktEBHQ" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6OJIkHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5uv21Hu9EemSm8y_ktEBHQ" y="60"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5uv21Xu9EemSm8y_ktEBHQ" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6Ol0gHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5uv21nu9EemSm8y_ktEBHQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5uv213u9EemSm8y_ktEBHQ" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6PB5YHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5uv22Hu9EemSm8y_ktEBHQ" x="-47" y="61"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5uv22Xu9EemSm8y_ktEBHQ" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6PVbYHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5uv22nu9EemSm8y_ktEBHQ" x="75" y="7"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5uv223u9EemSm8y_ktEBHQ" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6PxgQHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5uv23Hu9EemSm8y_ktEBHQ" x="59" y="27"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5uv23Xu9EemSm8y_ktEBHQ" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_6QFCQHu9EemSm8y_ktEBHQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5uv23nu9EemSm8y_ktEBHQ" x="-47" y="5"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5uv20Xu9EemSm8y_ktEBHQ"/>
+      <element xmi:type="uml:Association" href="IoT-ML.profile.uml#_5t2e8Hu9EemSm8y_ktEBHQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5uv20nu9EemSm8y_ktEBHQ" points="[566, 900, -643984, -643984]$[600, 900, -643984, -643984]$[600, 980, -643984, -643984]$[540, 980, -643984, -643984]$[540, 940, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5vfdsHu9EemSm8y_ktEBHQ" id="(1.0,0.6)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5vfdsXu9EemSm8y_ktEBHQ" id="(0.8433734939759037,1.0)"/>
+    </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">
@@ -5216,24 +5282,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kcjJWVbCEemms65MbAzNPw"/>
       </children>
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_GdG10EZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kciiQVbCEemms65MbAzNPw" x="400" y="200"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_0zQ5EFbCEemms65MbAzNPw" type="Stereotype_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_0zQ5ElbCEemms65MbAzNPw" type="Stereotype_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_0zRgIFbCEemms65MbAzNPw" type="Stereotype_AttributeCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_0zRgIVbCEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_0zRgIlbCEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_0zRgI1bCEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0zRgJFbCEemms65MbAzNPw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_0zRgJVbCEemms65MbAzNPw" type="Stereotype_OperationCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_0zRgJlbCEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_0zRgJ1bCEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_0zRgKFbCEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0zRgKVbCEemms65MbAzNPw"/>
-      </children>
-      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Ik8FAEZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0zQ5EVbCEemms65MbAzNPw" x="920" y="200"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kciiQVbCEemms65MbAzNPw" x="495" y="201"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_2o3IwFbCEemms65MbAzNPw" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_2o3v0FbCEemms65MbAzNPw" type="Stereotype_NameLabel"/>
@@ -5250,12 +5299,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2o3v2lbCEemms65MbAzNPw"/>
       </children>
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_JrT3MEZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2o3IwVbCEemms65MbAzNPw" x="780" y="200"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_8ABasFbCEemms65MbAzNPw" type="Class_MetaclassShape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_8ACo0FbCEemms65MbAzNPw" type="Class_MetaclassNameLabel"/>
-      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8ABasVbCEemms65MbAzNPw" x="780" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2o3IwVbCEemms65MbAzNPw" x="640" y="340"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="__dF-gFbCEemms65MbAzNPw" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="__dGlkFbCEemms65MbAzNPw" type="Stereotype_NameLabel"/>
@@ -5272,7 +5316,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="__dGlmlbCEemms65MbAzNPw"/>
       </children>
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_LLR1IEZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__dF-gVbCEemms65MbAzNPw" x="920" y="340"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__dF-gVbCEemms65MbAzNPw" x="800" y="200"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_J73qgFbDEemms65MbAzNPw" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_J73qglbDEemms65MbAzNPw" type="Stereotype_NameLabel"/>
@@ -5289,24 +5333,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J73qjFbDEemms65MbAzNPw"/>
       </children>
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_LxXkwEZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J73qgVbDEemms65MbAzNPw" x="1080" y="200"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_gKELAFbDEemms65MbAzNPw" type="Stereotype_Shape" fillColor="8047085">
-      <children xmi:type="notation:DecorationNode" xmi:id="_gKEyEFbDEemms65MbAzNPw" type="Stereotype_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_gKEyEVbDEemms65MbAzNPw" visible="false" type="Stereotype_AttributeCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_gKEyElbDEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_gKEyE1bDEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_gKEyFFbDEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gKEyFVbDEemms65MbAzNPw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_gKEyFlbDEemms65MbAzNPw" visible="false" type="Stereotype_OperationCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_gKEyF1bDEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_gKEyGFbDEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_gKEyGVbDEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gKEyGlbDEemms65MbAzNPw"/>
-      </children>
-      <element xmi:type="uml:Stereotype" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_dDjlYBG5Edyb1KzJ7GkiGA"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gKELAVbDEemms65MbAzNPw" x="920" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J73qgVbDEemms65MbAzNPw" x="960" y="200"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_tsgFMFbXEemms65MbAzNPw" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_tsgFMlbXEemms65MbAzNPw" type="Stereotype_NameLabel"/>
@@ -5323,24 +5350,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tsgFPFbXEemms65MbAzNPw"/>
       </children>
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_OOxbUEZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tsgFMVbXEemms65MbAzNPw" x="520" y="200"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_0DPk0FbXEemms65MbAzNPw" type="Stereotype_Shape" fillColor="12632256">
-      <children xmi:type="notation:DecorationNode" xmi:id="_0DPk0lbXEemms65MbAzNPw" type="Stereotype_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_0DPk01bXEemms65MbAzNPw" visible="false" type="Stereotype_AttributeCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_0DPk1FbXEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_0DPk1VbXEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_0DPk1lbXEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DPk11bXEemms65MbAzNPw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_0DPk2FbXEemms65MbAzNPw" visible="false" type="Stereotype_OperationCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_0DPk2VbXEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_0DPk2lbXEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_0DPk21bXEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DPk3FbXEemms65MbAzNPw"/>
-      </children>
-      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Fw88MCtyEeeZI6rMTYV60w"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DPk0VbXEemms65MbAzNPw" x="360" y="40"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tsgFMVbXEemms65MbAzNPw" x="640" y="200"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_-zLSQFbXEemms65MbAzNPw" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_-zLSQlbXEemms65MbAzNPw" type="Stereotype_NameLabel"/>
@@ -5357,24 +5367,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zLSTFbXEemms65MbAzNPw"/>
       </children>
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_QWwbgEZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zLSQVbXEemms65MbAzNPw" x="280" y="200"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_Bw3LYFbYEemms65MbAzNPw" type="Stereotype_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_Bw3LYlbYEemms65MbAzNPw" type="Stereotype_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_Bw3LY1bYEemms65MbAzNPw" type="Stereotype_AttributeCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_Bw3LZFbYEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_Bw3LZVbYEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_Bw3LZlbYEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bw3LZ1bYEemms65MbAzNPw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_Bw3LaFbYEemms65MbAzNPw" type="Stereotype_OperationCompartment">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_Bw3LaVbYEemms65MbAzNPw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_Bw3LalbYEemms65MbAzNPw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_Bw3La1bYEemms65MbAzNPw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bw3LbFbYEemms65MbAzNPw"/>
-      </children>
-      <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_KvRhkFa8EemBYs5-fDI8uw"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bw3LYVbYEemms65MbAzNPw" x="640" y="200"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zLSQVbXEemms65MbAzNPw" x="340" y="200"/>
     </children>
     <children xmi:type="notation:Shape" xmi:id="_M1dhQFbYEemms65MbAzNPw" type="Stereotype_Shape">
       <children xmi:type="notation:DecorationNode" xmi:id="_M1dhQlbYEemms65MbAzNPw" type="Stereotype_NameLabel"/>
@@ -5391,28 +5384,7 @@
         <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M1dhTFbYEemms65MbAzNPw"/>
       </children>
       <element xmi:type="uml:Stereotype" href="IoT-ML.profile.uml#_Pd7WEEZ2Eemjs4KMC2ChPg"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M1dhQVbYEemms65MbAzNPw" x="160" y="200"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_WkOsoFbYEemms65MbAzNPw" type="Class_MetaclassShape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_WkOsolbYEemms65MbAzNPw" type="Class_MetaclassNameLabel"/>
-      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Event"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WkOsoVbYEemms65MbAzNPw" x="1080" y="40"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_QaUN83fbEemED9p17L-bjA" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_QaUN9HfbEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_QaUN9nfbEemED9p17L-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="_QaUN9XfbEemED9p17L-bjA" x="980" y="40"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_Qasod3fbEemED9p17L-bjA" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_QasoeHfbEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_QasoenfbEemED9p17L-bjA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Event"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QasoeXfbEemED9p17L-bjA" x="1280" y="40"/>
+      <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"/>
@@ -5431,123 +5403,94 @@
       <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="_Bv9k-nuiEemSm8y_ktEBHQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_Bv9k-3uiEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Bv9k_XuiEemSm8y_ktEBHQ" 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="_Bv9k_HuiEemSm8y_ktEBHQ" x="200"/>
+    </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="_P3guc3uiEemSm8y_ktEBHQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_P3gudHuiEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_P3gudnuiEemSm8y_ktEBHQ" 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="_P3gudXuiEemSm8y_ktEBHQ" x="200"/>
+    </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"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F2O48XuxEemSm8y_ktEBHQ" x="620" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_F2q903uxEemSm8y_ktEBHQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_F2q91HuxEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_F2q91nuxEemSm8y_ktEBHQ" 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="_F2q91XuxEemSm8y_ktEBHQ" x="200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_EZYD8HuyEemSm8y_ktEBHQ" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_EZYD8nuyEemSm8y_ktEBHQ" type="Class_MetaclassNameLabel"/>
+      <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="_EZhN6nuyEemSm8y_ktEBHQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_EZhN63uyEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_EZhN7XuyEemSm8y_ktEBHQ" 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="_EZhN7HuyEemSm8y_ktEBHQ" x="200"/>
+    </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="_GNodkHu3EemSm8y_ktEBHQ" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GNodknu3EemSm8y_ktEBHQ" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GNodkXu3EemSm8y_ktEBHQ" x="340" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GN7_mnu3EemSm8y_ktEBHQ" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_GN7_m3u3EemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GN7_nXu3EemSm8y_ktEBHQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GN7_nHu3EemSm8y_ktEBHQ" 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"/>
     <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_7AcL80Z6Eemjs4KMC2ChPg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
       <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="_kFxbgFbXEemms65MbAzNPw" type="Generalization_Edge" source="_0zQ5EFbCEemms65MbAzNPw" target="_gKELAFbDEemms65MbAzNPw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_kFxbg1bXEemms65MbAzNPw" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mmJGgFbXEemms65MbAzNPw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_kFxbhFbXEemms65MbAzNPw" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_kFxbgVbXEemms65MbAzNPw"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_kE4DoFbXEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kFxbglbXEemms65MbAzNPw" points="[980, 200, -643984, -643984]$[980, 160, -643984, -643984]$[1040, 160, -643984, -643984]$[1040, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kGNgYFbXEemms65MbAzNPw" id="(0.5555555555555556,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kGNgYVbXEemms65MbAzNPw" id="(0.6,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_l4n5MFbXEemms65MbAzNPw" type="Generalization_Edge" source="__dF-gFbCEemms65MbAzNPw" target="_0zQ5EFbCEemms65MbAzNPw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_l4n5M1bXEemms65MbAzNPw" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mSNd4FbXEemms65MbAzNPw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_l4n5NFbXEemms65MbAzNPw" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_l4n5MVbXEemms65MbAzNPw"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_Yy-3cFa9EemBYs5-fDI8uw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l4n5MlbXEemms65MbAzNPw" points="[1040, 340, -643984, -643984]$[1040, 320, -643984, -643984]$[980, 320, -643984, -643984]$[980, 300, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mSqJ0FbXEemms65MbAzNPw" id="(0.6,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mSqJ0VbXEemms65MbAzNPw" id="(0.5555555555555556,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_rCv0sFbXEemms65MbAzNPw" type="Extension_Edge" source="_2o3IwFbCEemms65MbAzNPw" target="_8ABasFbCEemms65MbAzNPw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_rCv0sVbXEemms65MbAzNPw"/>
-      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_rB3D4FbXEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rCv0slbXEemms65MbAzNPw" points="[840, 200, -643984, -643984]$[840, 140, -643984, -643984]$[800, 140, -643984, -643984]$[800, 90, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rDCvoFbXEemms65MbAzNPw" id="(0.4,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rDCvoVbXEemms65MbAzNPw" id="(0.4,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_5GYHgFbXEemms65MbAzNPw" type="Generalization_Edge" source="_kciiQFbCEemms65MbAzNPw" target="_0DPk0FbXEemms65MbAzNPw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_5GYHg1bXEemms65MbAzNPw" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_5gROMFbXEemms65MbAzNPw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5GYHhFbXEemms65MbAzNPw" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_5GYHgVbXEemms65MbAzNPw"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_5FogoFbXEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5GYHglbXEemms65MbAzNPw" points="[440, 200, -643984, -643984]$[440, 160, -643984, -643984]$[500, 160, -643984, -643984]$[500, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5GrpgFbXEemms65MbAzNPw" id="(0.39603960396039606,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5GrpgVbXEemms65MbAzNPw" id="(0.5063291139240507,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_8aYO4FbXEemms65MbAzNPw" type="Generalization_Edge" source="_tsgFMFbXEemms65MbAzNPw" target="_0DPk0FbXEemms65MbAzNPw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_8aYO41bXEemms65MbAzNPw" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_aP4fAFbYEemms65MbAzNPw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8aYO5FbXEemms65MbAzNPw" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_8aYO4VbXEemms65MbAzNPw"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_8ZooAFbXEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8aYO4lbXEemms65MbAzNPw" points="[580, 200, -643984, -643984]$[580, 160, -643984, -643984]$[500, 160, -643984, -643984]$[500, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8arw4FbXEemms65MbAzNPw" id="(0.6,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8arw4VbXEemms65MbAzNPw" id="(0.5063291139240507,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_Aeb6MFbYEemms65MbAzNPw" type="Generalization_Edge" source="_-zLSQFbXEemms65MbAzNPw" target="_0DPk0FbXEemms65MbAzNPw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_Aeb6M1bYEemms65MbAzNPw" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_aQCQAFbYEemms65MbAzNPw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Aeb6NFbYEemms65MbAzNPw" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_Aeb6MVbYEemms65MbAzNPw"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_Ad2EUFbYEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Aeb6MlbYEemms65MbAzNPw" points="[320, 200, -643984, -643984]$[320, 160, -643984, -643984]$[500, 160, -643984, -643984]$[500, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Aeu1IFbYEemms65MbAzNPw" id="(0.4,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Aeu1IVbYEemms65MbAzNPw" id="(0.5063291139240507,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_DZJX0FbYEemms65MbAzNPw" type="Generalization_Edge" source="_Bw3LYFbYEemms65MbAzNPw" target="_0DPk0FbXEemms65MbAzNPw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_DZJX01bYEemms65MbAzNPw" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_aQCQAVbYEemms65MbAzNPw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_DZJX1FbYEemms65MbAzNPw" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_DZJX0VbYEemms65MbAzNPw"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_DYG2AFbYEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DZJX0lbYEemms65MbAzNPw" points="[680, 200, -643984, -643984]$[680, 160, -643984, -643984]$[500, 160, -643984, -643984]$[500, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZcSwFbYEemms65MbAzNPw" id="(0.4,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZcSwVbYEemms65MbAzNPw" id="(0.5063291139240507,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_N5wP0FbYEemms65MbAzNPw" type="Generalization_Edge" source="_M1dhQFbYEemms65MbAzNPw" target="_0DPk0FbXEemms65MbAzNPw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_N5wP01bYEemms65MbAzNPw" type="Generalization_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_aQMBAFbYEemms65MbAzNPw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_N5wP1FbYEemms65MbAzNPw" y="60"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_N5wP0VbYEemms65MbAzNPw"/>
-      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_N5Jy4FbYEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_N5wP0lbYEemms65MbAzNPw" points="[220, 200, -643984, -643984]$[220, 160, -643984, -643984]$[500, 160, -643984, -643984]$[500, 140, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_N6DKwFbYEemms65MbAzNPw" id="(0.6,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_N6DKwVbYEemms65MbAzNPw" id="(0.5063291139240507,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_YpOqQFbYEemms65MbAzNPw" type="Extension_Edge" source="_J73qgFbDEemms65MbAzNPw" target="_WkOsoFbYEemms65MbAzNPw">
-      <styles xmi:type="notation:FontStyle" xmi:id="_YpOqQVbYEemms65MbAzNPw"/>
-      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_YoMIcFbYEemms65MbAzNPw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YpOqQlbYEemms65MbAzNPw" points="[1180, 200, -643984, -643984]$[1180, 140, -643984, -643984]$[1280, 140, -643984, -643984]$[1280, 90, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YpiMQFbYEemms65MbAzNPw" id="(0.6,0.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YpiMQVbYEemms65MbAzNPw" id="(0.6,1.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_QaUN93fbEemED9p17L-bjA" type="StereotypeCommentLink" source="_8ABasFbCEemms65MbAzNPw" target="_QaUN83fbEemED9p17L-bjA">
-      <styles xmi:type="notation:FontStyle" xmi:id="_QaUN-HfbEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_QaUN_HfbEemED9p17L-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="_QaUN-XfbEemED9p17L-bjA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QaUN-nfbEemED9p17L-bjA"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QaUN-3fbEemED9p17L-bjA"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_Qasoe3fbEemED9p17L-bjA" type="StereotypeCommentLink" source="_WkOsoFbYEemms65MbAzNPw" target="_Qasod3fbEemED9p17L-bjA">
-      <styles xmi:type="notation:FontStyle" xmi:id="_QasofHfbEemED9p17L-bjA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_QasogHfbEemED9p17L-bjA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Event"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QasofXfbEemED9p17L-bjA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QasofnfbEemED9p17L-bjA"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qasof3fbEemED9p17L-bjA"/>
-    </edges>
     <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"/>
@@ -5558,5 +5501,109 @@
       <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="_Bv9k_nuiEemSm8y_ktEBHQ" type="StereotypeCommentLink" source="_Bvg5AHuiEemSm8y_ktEBHQ" target="_Bv9k-nuiEemSm8y_ktEBHQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_Bv9k_3uiEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Bv9lA3uiEemSm8y_ktEBHQ" 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="_Bv9lAHuiEemSm8y_ktEBHQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Bv9lAXuiEemSm8y_ktEBHQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Bv9lAnuiEemSm8y_ktEBHQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_P3gud3uiEemSm8y_ktEBHQ" type="StereotypeCommentLink" source="_P264kHuiEemSm8y_ktEBHQ" target="_P3guc3uiEemSm8y_ktEBHQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_P3gueHuiEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_P3qfcnuiEemSm8y_ktEBHQ" 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="_P3gueXuiEemSm8y_ktEBHQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P3qfcHuiEemSm8y_ktEBHQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P3qfcXuiEemSm8y_ktEBHQ"/>
+    </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="_F2q913uxEemSm8y_ktEBHQ" type="StereotypeCommentLink" source="_F2O48HuxEemSm8y_ktEBHQ" target="_F2q903uxEemSm8y_ktEBHQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_F2q92HuxEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_F2q93HuxEemSm8y_ktEBHQ" 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="_F2q92XuxEemSm8y_ktEBHQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F2q92nuxEemSm8y_ktEBHQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F2q923uxEemSm8y_ktEBHQ"/>
+    </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"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HXX7knuxEemSm8y_ktEBHQ" points="[680, 200, -643984, -643984]$[680, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HXrdkHuxEemSm8y_ktEBHQ" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HXrdkXuxEemSm8y_ktEBHQ" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_EZhN7nuyEemSm8y_ktEBHQ" type="StereotypeCommentLink" source="_EZYD8HuyEemSm8y_ktEBHQ" target="_EZhN6nuyEemSm8y_ktEBHQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_EZhN73uyEemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_EZhN83uyEemSm8y_ktEBHQ" 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="_EZhN8HuyEemSm8y_ktEBHQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EZhN8XuyEemSm8y_ktEBHQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EZhN8nuyEemSm8y_ktEBHQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ZT-ZIHuzEemSm8y_ktEBHQ" type="Extension_Edge" source="_kciiQFbCEemms65MbAzNPw" target="_EZYD8HuyEemSm8y_ktEBHQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZT-ZIXuzEemSm8y_ktEBHQ"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_ZH7hMHuzEemSm8y_ktEBHQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZT-ZInuzEemSm8y_ktEBHQ" points="[540, 201, -643984, -643984]$[540, 90, -643984, -643984]"/>
+      <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="_GN7_nnu3EemSm8y_ktEBHQ" type="StereotypeCommentLink" source="_GNodkHu3EemSm8y_ktEBHQ" target="_GN7_mnu3EemSm8y_ktEBHQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_GN7_n3u3EemSm8y_ktEBHQ"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_GN7_o3u3EemSm8y_ktEBHQ" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GN7_oHu3EemSm8y_ktEBHQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GN7_oXu3EemSm8y_ktEBHQ"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GN7_onu3EemSm8y_ktEBHQ"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_HRB0QHu3EemSm8y_ktEBHQ" type="Extension_Edge" source="_-zLSQFbXEemms65MbAzNPw" target="_GNodkHu3EemSm8y_ktEBHQ">
+      <styles xmi:type="notation:FontStyle" xmi:id="_HRB0QXu3EemSm8y_ktEBHQ"/>
+      <element xmi:type="uml:Extension" href="IoT-ML.profile.uml#_HE1LUHu3EemSm8y_ktEBHQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HRB0Qnu3EemSm8y_ktEBHQ" points="[380, 200, -643984, -643984]$[380, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HRUvMHu3EemSm8y_ktEBHQ" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HRUvMXu3EemSm8y_ktEBHQ" id="(0.4,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">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QH8GZHu-EemSm8y_ktEBHQ" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QH8GYXu-EemSm8y_ktEBHQ"/>
+      <element xmi:type="uml:Generalization" href="IoT-ML.profile.uml#_R3tcgFa_EemBYs5-fDI8uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QH8GYnu-EemSm8y_ktEBHQ" points="[690, 340, -643984, -643984]$[690, 300, -643984, -643984]"/>
+    </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 ca24321..c7a7a5b 100644
--- a/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
+++ b/org.eclipse.papyrus.iotml.profile/model/IoT-ML.profile.uml
@@ -834,7 +834,7 @@
           <body>&quot;name&quot; is UML::NamedElement::name</body>
         </ownedComment>
         <ownedComment xmi:type="uml:Comment" xmi:id="_dnaywFetEemhlNDbySlnYA">
-          <body>&quot;description&quot; is ConnectedDevice::description (HwResource::description)</body>
+          <body>&quot;description&quot; is a Comment attached to the Class on which &lt;&lt;Thing>> is applied.</body>
         </ownedComment>
         <generalization xmi:type="uml:Generalization" xmi:id="_M1bNEHfqEemED9p17L-bjA" general="_mxPqICtuEeeZI6rMTYV60w"/>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_gyLsIEZ2Eemjs4KMC2ChPg" name="id">
@@ -845,9 +845,9 @@
           <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="_f_pH4Fa8EemBYs5-fDI8uw" name="thingSec" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_f_jBQFa8EemBYs5-fDI8uw">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_f_pH4Fa8EemBYs5-fDI8uw" name="security" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_f_jBQFa8EemBYs5-fDI8uw">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m37OUFa8EemBYs5-fDI8uw"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m4LtAFa8EemBYs5-fDI8uw" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m4LtAFa8EemBYs5-fDI8uw" value="*"/>
         </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_p7zPAla8EemBYs5-fDI8uw" name="base" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_p7yA4Fa8EemBYs5-fDI8uw">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_toRgwFa8EemBYs5-fDI8uw"/>
@@ -857,49 +857,53 @@
           <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="event" type="_LxXkwEZ2Eemjs4KMC2ChPg" association="_8yRlwFa8EemBYs5-fDI8uw"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_HCG20la9EemBYs5-fDI8uw" name="action" type="_LLR1IEZ2Eemjs4KMC2ChPg" association="_HCFosFa9EemBYs5-fDI8uw"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_8yTa8Fa8EemBYs5-fDI8uw" name="events" type="_LxXkwEZ2Eemjs4KMC2ChPg" association="_8yRlwFa8EemBYs5-fDI8uw">
+          <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">
+          <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">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UYUqAFa9EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UYiscFa9EemBYs5-fDI8uw" value="*"/>
         </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_GdG10EZ2Eemjs4KMC2ChPg" name="SecurityScheme">
-        <generalization xmi:type="uml:Generalization" xmi:id="_5FogoFbXEemms65MbAzNPw" general="_Fw88MCtyEeeZI6rMTYV60w"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_HnGuUEZ3Eemjs4KMC2ChPg" name="scheme">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_IqEAIEZ3Eemjs4KMC2ChPg" name="description">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tHYPoFa7EemBYs5-fDI8uw"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tHiAoFa7EemBYs5-fDI8uw" value="1"/>
-        </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_oO5y4la9EemBYs5-fDI8uw" name="proxyUrl" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_oO5L0Fa9EemBYs5-fDI8uw">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qab2UFa9EemBYs5-fDI8uw"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qatjIFa9EemBYs5-fDI8uw" value="1"/>
+        <ownedComment xmi:type="uml:Comment" xmi:id="_D_7xkHukEemSm8y_ktEBHQ">
+          <body>&quot;description&quot; is a Comment attached to the XXX on which &lt;&lt;SecurityScheme>> is applied.</body>
+        </ownedComment>
+        <ownedComment xmi:type="uml:Comment" xmi:id="_8ZYGgHu8EemSm8y_ktEBHQ">
+          <body>TODO: Children of SecurityScheme (e.g., DigestSecurityScheme)</body>
+        </ownedComment>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_HnGuUEZ3Eemjs4KMC2ChPg" name="scheme" type="_P5y7gHukEemSm8y_ktEBHQ"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_bjSuMHukEemSm8y_ktEBHQ" name="proxyUrl" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_bjJkQHukEemSm8y_ktEBHQ"/>
+        <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>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_Ik8FAEZ2Eemjs4KMC2ChPg" name="InteractionPattern">
-        <generalization xmi:type="uml:Generalization" xmi:id="_kE4DoFbXEemms65MbAzNPw">
-          <general xmi:type="uml:Stereotype" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_dDjlYBG5Edyb1KzJ7GkiGA"/>
-        </generalization>
+        <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="_-RE9oEZ3Eemjs4KMC2ChPg" name="label">
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_AH8_sEZ4Eemjs4KMC2ChPg" name="description">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kjMocHukEemSm8y_ktEBHQ"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kjVyYHukEemSm8y_ktEBHQ" value="1"/>
         </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_BYmIMEZ4Eemjs4KMC2ChPg" name="scopes">
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n6oDkEZ4Eemjs4KMC2ChPg"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n67lkEZ4Eemjs4KMC2ChPg" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n67lkEZ4Eemjs4KMC2ChPg" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_EVLhEVa-EemBYs5-fDI8uw" name="intSec" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_EVKS8Fa-EemBYs5-fDI8uw">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_EVLhEVa-EemBYs5-fDI8uw" name="security" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_EVKS8Fa-EemBYs5-fDI8uw">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HHM8wFa-EemBYs5-fDI8uw"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HHf3sFa-EemBYs5-fDI8uw" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HHf3sFa-EemBYs5-fDI8uw" value="*"/>
         </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"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NqdOYFa-EemBYs5-fDI8uw" value="1"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Nqse8Fa-EemBYs5-fDI8uw" value="*"/>
         </ownedAttribute>
       </packagedElement>
@@ -914,87 +918,149 @@
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x3MNsFa7EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x3V-sFa7EemBYs5-fDI8uw" value="1"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_rCAN0FbXEemms65MbAzNPw" name="base_Property" association="_rB3D4FbXEemms65MbAzNPw">
-          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rCAN0VbXEemms65MbAzNPw"/>
-        </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_LLR1IEZ2Eemjs4KMC2ChPg" name="Action">
+        <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">
           <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" association="_YiboEFa_EemBYs5-fDI8uw">
+          <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>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_LxXkwEZ2Eemjs4KMC2ChPg" name="Event">
+        <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"/>
         <generalization xmi:type="uml:Generalization" xmi:id="_aakOYFa_EemBYs5-fDI8uw" general="_OOxbUEZ2Eemjs4KMC2ChPg"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_YoMIclbYEemms65MbAzNPw" name="base_Event" association="_YoMIcFbYEemms65MbAzNPw">
-          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Event"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YoMIc1bYEemms65MbAzNPw"/>
+        <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>
       </packagedElement>
-      <packagedElement xmi:type="uml:Stereotype" xmi:id="_OOxbUEZ2Eemjs4KMC2ChPg" name="DataScheme">
-        <generalization xmi:type="uml:Generalization" xmi:id="_8ZooAFbXEemms65MbAzNPw" general="_Fw88MCtyEeeZI6rMTYV60w"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_AXNZIEZ3Eemjs4KMC2ChPg" name="type">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EFLBEFa8EemBYs5-fDI8uw"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EFct4Fa8EemBYs5-fDI8uw" value="1"/>
+      <packagedElement xmi:type="uml:Stereotype" xmi:id="_OOxbUEZ2Eemjs4KMC2ChPg" name="DataSchema">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_sPmH4HuuEemSm8y_ktEBHQ">
+          <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., IntegerSchema).</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>
+        <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="_ClTBUEZ3Eemjs4KMC2ChPg" name="description">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E0BrIFa8EemBYs5-fDI8uw"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E0Jm8Fa8EemBYs5-fDI8uw" value="1"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_5pThQEZ3Eemjs4KMC2ChPg" name="enum" type="_rm64QCtxEeeZI6rMTYV60w">
+          <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="_4R-h8EZ3Eemjs4KMC2ChPg" name="const" type="_KvRhkFa8EemBYs5-fDI8uw"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_5pThQEZ3Eemjs4KMC2ChPg" name="enum" type="_KvRhkFa8EemBYs5-fDI8uw"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_esNTAHu8EemSm8y_ktEBHQ" name="numberInterval" visibility="public">
+          <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">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PMp_UHu9EemSm8y_ktEBHQ"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PMzwUHu9EemSm8y_ktEBHQ" value="*"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_upzis3u9EemSm8y_ktEBHQ" name="items" type="_OOxbUEZ2Eemjs4KMC2ChPg" association="_upzisHu9EemSm8y_ktEBHQ">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0DbSwHu9EemSm8y_ktEBHQ"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0D3-sHu9EemSm8y_ktEBHQ" value="*"/>
+        </ownedAttribute>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_5t2e83u9EemSm8y_ktEBHQ" name="properties" type="_OOxbUEZ2Eemjs4KMC2ChPg" association="_5t2e8Hu9EemSm8y_ktEBHQ"/>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_Pd7WEEZ2Eemjs4KMC2ChPg" name="Form">
-        <generalization xmi:type="uml:Generalization" xmi:id="_N5Jy4FbYEemms65MbAzNPw" general="_Fw88MCtyEeeZI6rMTYV60w"/>
+        <generalization xmi:type="uml:Generalization" xmi:id="_u13s8Hu2EemSm8y_ktEBHQ" general="_rm64QCtxEeeZI6rMTYV60w"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_YgarUVa-EemBYs5-fDI8uw" name="href" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_YgY2IFa-EemBYs5-fDI8uw"/>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_ojLt0EZ3Eemjs4KMC2ChPg" name="mediaType">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_f5c8gHusEemSm8y_ktEBHQ">
+            <body>Literals of media types are actually described here:&#xD;
+https://www.iana.org/assignments/media-types/media-types.xhtml</body>
+          </ownedComment>
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8s0TcFa7EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8tBu0Fa7EemBYs5-fDI8uw" value="1"/>
+          <defaultValue xmi:type="uml:LiteralString" xmi:id="_kcdNoHusEemSm8y_ktEBHQ" value="application/json"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_ojLt0UZ3Eemjs4KMC2ChPg" name="rel">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_ojLt0UZ3Eemjs4KMC2ChPg" name="rel" type="_uzR3gHusEemSm8y_ktEBHQ">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__vwgAFa7EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__v64EFa7EemBYs5-fDI8uw" value="1"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_qn4wgEZ3Eemjs4KMC2ChPg" name="subProtocol">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_qn4wgEZ3Eemjs4KMC2ChPg" name="subProtocol" type="_FC6icHutEemSm8y_ktEBHQ">
           <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="_cRSU4la-EemBYs5-fDI8uw" name="security" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_cRRGwFa-EemBYs5-fDI8uw">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5jWd8HujEemSm8y_ktEBHQ"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5jgO8HujEemSm8y_ktEBHQ" value="*"/>
+        </ownedAttribute>
         <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="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ov5esEZ4Eemjs4KMC2ChPg" value="*"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_YgarUVa-EemBYs5-fDI8uw" name="href" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_YgY2IFa-EemBYs5-fDI8uw"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_cRSU4la-EemBYs5-fDI8uw" name="formSec" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_cRRGwFa-EemBYs5-fDI8uw"/>
       </packagedElement>
       <packagedElement xmi:type="uml:Stereotype" xmi:id="_QWwbgEZ2Eemjs4KMC2ChPg" name="Link">
-        <generalization xmi:type="uml:Generalization" xmi:id="_Ad2EUFbYEemms65MbAzNPw" general="_Fw88MCtyEeeZI6rMTYV60w"/>
+        <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;
+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="_P6lbIHujEemSm8y_ktEBHQ" name="href" visibility="public">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_B2kFwHuuEemSm8y_ktEBHQ">
+            <body>anyURI</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        </ownedAttribute>
         <ownedAttribute xmi:type="uml:Property" xmi:id="_QO7fwEZ3Eemjs4KMC2ChPg" name="mediaType">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_qntZgHutEemSm8y_ktEBHQ">
+            <body>Literals of media types are actually described here:&#xD;
+https://www.iana.org/assignments/media-types/media-types.xhtml</body>
+          </ownedComment>
           <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4_yoEFa7EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4_8ZEFa7EemBYs5-fDI8uw" value="1"/>
+          <defaultValue xmi:type="uml:LiteralString" xmi:id="_sGLioHutEemSm8y_ktEBHQ" value="application/json"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_RzgQ4EZ3Eemjs4KMC2ChPg" name="rel">
-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_RzgQ4EZ3Eemjs4KMC2ChPg" name="rel" type="_uzR3gHusEemSm8y_ktEBHQ">
           <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5kPY8Fa7EemBYs5-fDI8uw"/>
           <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5kTqYFa7EemBYs5-fDI8uw" value="1"/>
         </ownedAttribute>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_w9TGYFa9EemBYs5-fDI8uw" name="href" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_w9QqIFa9EemBYs5-fDI8uw"/>
-        <ownedAttribute xmi:type="uml:Property" xmi:id="_6Et94Fa9EemBYs5-fDI8uw" name="anchor" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_6EsIsFa9EemBYs5-fDI8uw">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-hUsEFa9EemBYs5-fDI8uw"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-hiHcFa9EemBYs5-fDI8uw" value="1"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_UE4RUHujEemSm8y_ktEBHQ" name="anchor" visibility="public">
+          <ownedComment xmi:type="uml:Comment" xmi:id="_DR6pcHuuEemSm8y_ktEBHQ">
+            <body>anyURI</body>
+          </ownedComment>
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
         </ownedAttribute>
-      </packagedElement>
-      <packagedElement xmi:type="uml:Stereotype" xmi:id="_KvRhkFa8EemBYs5-fDI8uw" name="Date">
-        <generalization xmi:type="uml:Generalization" xmi:id="_DYG2AFbYEemms65MbAzNPw" general="_Fw88MCtyEeeZI6rMTYV60w"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="_HE1LUnu3EemSm8y_ktEBHQ" name="base_PrimitiveType" association="_HE1LUHu3EemSm8y_ktEBHQ">
+          <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HE1LU3u3EemSm8y_ktEBHQ"/>
+        </ownedAttribute>
       </packagedElement>
       <packagedElement xmi:type="uml:Association" xmi:id="_f_jBQFa8EemBYs5-fDI8uw" memberEnd="_f_pH4Fa8EemBYs5-fDI8uw _f_rkIFa8EemBYs5-fDI8uw">
         <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f_mroFa8EemBYs5-fDI8uw" source="org.eclipse.papyrus">
@@ -1032,24 +1098,6 @@
         </eAnnotations>
         <ownedEnd xmi:type="uml:Property" xmi:id="_S28W0Fa9EemBYs5-fDI8uw" name="thing" type="_npc7YEZ1Eemjs4KMC2ChPg" association="_S26hoFa9EemBYs5-fDI8uw"/>
       </packagedElement>
-      <packagedElement xmi:type="uml:Association" xmi:id="_oO5L0Fa9EemBYs5-fDI8uw" memberEnd="_oO5y4la9EemBYs5-fDI8uw _oO6Z8Fa9EemBYs5-fDI8uw">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oO5y4Fa9EemBYs5-fDI8uw" source="org.eclipse.papyrus">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oO5y4Va9EemBYs5-fDI8uw" key="nature" value="UML_Nature"/>
-        </eAnnotations>
-        <ownedEnd xmi:type="uml:Property" xmi:id="_oO6Z8Fa9EemBYs5-fDI8uw" name="securityscheme" type="_GdG10EZ2Eemjs4KMC2ChPg" association="_oO5L0Fa9EemBYs5-fDI8uw"/>
-      </packagedElement>
-      <packagedElement xmi:type="uml:Association" xmi:id="_w9QqIFa9EemBYs5-fDI8uw" memberEnd="_w9TGYFa9EemBYs5-fDI8uw _w9TtcFa9EemBYs5-fDI8uw">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w9SfUFa9EemBYs5-fDI8uw" source="org.eclipse.papyrus">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w9SfUVa9EemBYs5-fDI8uw" key="nature" value="UML_Nature"/>
-        </eAnnotations>
-        <ownedEnd xmi:type="uml:Property" xmi:id="_w9TtcFa9EemBYs5-fDI8uw" name="link" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_w9QqIFa9EemBYs5-fDI8uw"/>
-      </packagedElement>
-      <packagedElement xmi:type="uml:Association" xmi:id="_6EsIsFa9EemBYs5-fDI8uw" memberEnd="_6Et94Fa9EemBYs5-fDI8uw _6Euk8Fa9EemBYs5-fDI8uw">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6EtW0Fa9EemBYs5-fDI8uw" source="org.eclipse.papyrus">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6EtW0Va9EemBYs5-fDI8uw" key="nature" value="UML_Nature"/>
-        </eAnnotations>
-        <ownedEnd xmi:type="uml:Property" xmi:id="_6Euk8Fa9EemBYs5-fDI8uw" name="link" type="_QWwbgEZ2Eemjs4KMC2ChPg" association="_6EsIsFa9EemBYs5-fDI8uw"/>
-      </packagedElement>
       <packagedElement xmi:type="uml:Association" xmi:id="_EVKS8Fa-EemBYs5-fDI8uw" memberEnd="_EVLhEVa-EemBYs5-fDI8uw _EVMIIFa-EemBYs5-fDI8uw">
         <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EVK6AFa-EemBYs5-fDI8uw" source="org.eclipse.papyrus">
           <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EVLhEFa-EemBYs5-fDI8uw" key="nature" value="UML_Nature"/>
@@ -1086,11 +1134,63 @@
         </eAnnotations>
         <ownedEnd xmi:type="uml:Property" xmi:id="_Yic2MFa_EemBYs5-fDI8uw" name="action" type="_LLR1IEZ2Eemjs4KMC2ChPg" association="_YiboEFa_EemBYs5-fDI8uw"/>
       </packagedElement>
-      <packagedElement xmi:type="uml:Extension" xmi:id="_rB3D4FbXEemms65MbAzNPw" name="E_Property_Property26" memberEnd="_rB3D4VbXEemms65MbAzNPw _rCAN0FbXEemms65MbAzNPw">
-        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_rB3D4VbXEemms65MbAzNPw" name="extension_Property" type="_JrT3MEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_rB3D4FbXEemms65MbAzNPw"/>
+      <packagedElement xmi:type="uml:Association" xmi:id="_bjJkQHukEemSm8y_ktEBHQ" memberEnd="_bjSuMHukEemSm8y_ktEBHQ _bjSuMXukEemSm8y_ktEBHQ">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bjJkQXukEemSm8y_ktEBHQ" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bjJkQnukEemSm8y_ktEBHQ" key="nature" value="UML_Nature"/>
+        </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="_YoMIcFbYEemms65MbAzNPw" name="E_Event_Event27" memberEnd="_YoMIcVbYEemms65MbAzNPw _YoMIclbYEemms65MbAzNPw">
-        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_YoMIcVbYEemms65MbAzNPw" name="extension_Event" type="_LxXkwEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_YoMIcFbYEemms65MbAzNPw"/>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_QtDPUHuiEemSm8y_ktEBHQ" name="E_Action_BehavioralFeature27" memberEnd="_QtDPUXuiEemSm8y_ktEBHQ _QtDPUnuiEemSm8y_ktEBHQ">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_QtDPUXuiEemSm8y_ktEBHQ" name="extension_Action" 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"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_D6sVInu4EemSm8y_ktEBHQ" name="cert"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_D6sVI3u4EemSm8y_ktEBHQ" name="digest"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_D6sVJHu4EemSm8y_ktEBHQ" name="bearer"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_D6sVJXu4EemSm8y_ktEBHQ" name="pop"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_D6sVJnu4EemSm8y_ktEBHQ" name="psk"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_KynPMHu4EemSm8y_ktEBHQ" name="public"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_K_HaIHu4EemSm8y_ktEBHQ" name="oauth"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_LKkcMHu4EemSm8y_ktEBHQ" name="apikey"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Enumeration" xmi:id="_uzR3gHusEemSm8y_ktEBHQ" name="RelKind">
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_QnhOEHutEemSm8y_ktEBHQ" name="none"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_zHZ_IHusEemSm8y_ktEBHQ" name="readproperty"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_3BWsMHusEemSm8y_ktEBHQ" name="writeproperty"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_5RN2AHusEemSm8y_ktEBHQ" name="observerproperty"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_5cq4EHusEemSm8y_ktEBHQ" name="invokeaction"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_5kQt0HusEemSm8y_ktEBHQ" name="subscribeevent"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_5wKb0HusEemSm8y_ktEBHQ" name="unsubscribeevent"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Enumeration" xmi:id="_FC6icHutEemSm8y_ktEBHQ" name="SubProtocolKind">
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_SQG8gHutEemSm8y_ktEBHQ" name="None"/>
+        <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_HVTb0HutEemSm8y_ktEBHQ" name="LongPoll"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_HKSh0HuxEemSm8y_ktEBHQ" name="E_DataSchema_TypedElement29" memberEnd="_HKSh0XuxEemSm8y_ktEBHQ _HKSh0nuxEemSm8y_ktEBHQ">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_HKSh0XuxEemSm8y_ktEBHQ" name="extension_DataSchema" type="_OOxbUEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_HKSh0HuxEemSm8y_ktEBHQ"/>
+      </packagedElement>
+      <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="_HE1LUHu3EemSm8y_ktEBHQ" name="E_Link_PrimitiveType31" memberEnd="_HE1LUXu3EemSm8y_ktEBHQ _HE1LUnu3EemSm8y_ktEBHQ">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_HE1LUXu3EemSm8y_ktEBHQ" name="extension_Link" type="_QWwbgEZ2Eemjs4KMC2ChPg" aggregation="composite" association="_HE1LUHu3EemSm8y_ktEBHQ"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Extension" xmi:id="_rSovYHu5EemSm8y_ktEBHQ" name="E_Event_Signal31" memberEnd="_rSovYXu5EemSm8y_ktEBHQ _rSovYnu5EemSm8y_ktEBHQ">
+        <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_rSovYXu5EemSm8y_ktEBHQ" name="extension_Event" 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"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_upzitHu9EemSm8y_ktEBHQ" name="dataschema" type="_OOxbUEZ2Eemjs4KMC2ChPg" association="_upzisHu9EemSm8y_ktEBHQ"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="_5t2e8Hu9EemSm8y_ktEBHQ" memberEnd="_5t2e83u9EemSm8y_ktEBHQ _5uAP8Hu9EemSm8y_ktEBHQ">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5t2e8Xu9EemSm8y_ktEBHQ" source="org.eclipse.papyrus">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5t2e8nu9EemSm8y_ktEBHQ" key="nature" value="UML_Nature"/>
+        </eAnnotations>
+        <ownedEnd xmi:type="uml:Property" xmi:id="_5uAP8Hu9EemSm8y_ktEBHQ" name="dataschema" type="_OOxbUEZ2Eemjs4KMC2ChPg" association="_5t2e8Hu9EemSm8y_ktEBHQ"/>
       </packagedElement>
     </packagedElement>
     <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_pVg3QApVEei53_EZrjjGeA">
diff --git a/org.eclipse.papyrus.iotml.profile/model/iotml.ecore b/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
index 020ed55..e6a394e 100644
--- a/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
+++ b/org.eclipse.papyrus.iotml.profile/model/iotml.ecore
@@ -579,89 +579,119 @@
           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="thingSec" ordered="false"
-          eType="#//wot/SecurityScheme"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="security" ordered="false"
+          upperBound="-1" eType="#//wot/SecurityScheme"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="base" ordered="false"
           eType="#//wot/Link"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="links" ordered="false"
           upperBound="-1" eType="#//wot/Link"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
-          lowerBound="1" eType="#//wot/Event"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
-          lowerBound="1" eType="#//wot/Action"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="events" ordered="false"
+          upperBound="-1" eType="#//wot/Event"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="actions" ordered="false"
+          upperBound="-1" eType="#//wot/Action"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
           upperBound="-1" eType="#//wot/Property"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="SecurityScheme" eSuperTypes="#//software/core/structure/DetailedValueSpecification">
+    <eClassifiers xsi:type="ecore:EClass" name="SecurityScheme">
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="scheme" ordered="false"
-          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+          lowerBound="1" eType="#//wot/SecuritySchemeKind"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="proxyUrl" ordered="false"
-          eType="#//wot/Link"/>
-    </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="Link" eSuperTypes="#//software/core/structure/DetailedValueSpecification">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mediaType" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="rel" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="href" ordered="false"
           lowerBound="1" eType="#//wot/Link"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="anchor" ordered="false"
-          eType="#//wot/Link"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Classifier" ordered="false"
+          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Classifier"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//wot/InteractionPattern">
-      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Event" ordered="false"
-          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Event"/>
+    <eClassifiers xsi:type="ecore:EEnum" name="SecuritySchemeKind">
+      <eLiterals name="nosec"/>
+      <eLiterals name="basic" value="1"/>
+      <eLiterals name="cert" value="2"/>
+      <eLiterals name="digest" value="3"/>
+      <eLiterals name="bearer" value="4"/>
+      <eLiterals name="pop" value="5"/>
+      <eLiterals name="psk" value="6"/>
+      <eLiterals name="public" value="7"/>
+      <eLiterals name="oauth" value="8"/>
+      <eLiterals name="apikey" value="9"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="InteractionPattern" eSuperTypes="platform:/plugin/org.eclipse.papyrus.marte.static.profile/resources/MARTE.ecore#//MARTE_Foundations/GRM/GrService">
+    <eClassifiers xsi:type="ecore:EClass" name="Link">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="href" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mediaType" ordered="false"
+          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          defaultValueLiteral="application/json"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="rel" ordered="false"
+          eType="#//wot/RelKind"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="anchor" ordered="false"
+          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_PrimitiveType" ordered="false"
+          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//PrimitiveType"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="RelKind">
+      <eLiterals name="none"/>
+      <eLiterals name="readproperty" value="1"/>
+      <eLiterals name="writeproperty" value="2"/>
+      <eLiterals name="observerproperty" value="3"/>
+      <eLiterals name="invokeaction" value="4"/>
+      <eLiterals name="subscribeevent" value="5"/>
+      <eLiterals name="unsubscribeevent" value="6"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//wot/DataSchema #//wot/InteractionPattern">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Signal" ordered="false"
+          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Signal"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="InteractionPattern">
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" ordered="false"
-          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
-          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scopes" ordered="false"
           eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="intSec" ordered="false"
-          eType="#//wot/SecurityScheme"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scopes" ordered="false"
+          upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="security" ordered="false"
+          upperBound="-1" eType="#//wot/SecurityScheme"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="forms" ordered="false"
-          upperBound="-1" eType="#//wot/Form"/>
+          lowerBound="1" upperBound="-1" eType="#//wot/Form"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="Form" eSuperTypes="#//software/core/structure/DetailedValueSpecification">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mediaType" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="rel" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="subProtocol" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scopes" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Form" eSuperTypes="#//software/core/structure/MetaValueSpecification">
       <eStructuralFeatures xsi:type="ecore:EReference" name="href" ordered="false"
           lowerBound="1" eType="#//wot/Link"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="formSec" ordered="false"
-          lowerBound="1" eType="#//wot/SecurityScheme"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mediaType" ordered="false"
+          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+          defaultValueLiteral="application/json"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="rel" ordered="false"
+          eType="#//wot/RelKind"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="subProtocol" ordered="false"
+          eType="#//wot/SubProtocolKind"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="security" ordered="false"
+          upperBound="-1" eType="#//wot/SecurityScheme"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scopes" ordered="false"
+          upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="DataScheme" eSuperTypes="#//software/core/structure/DetailedValueSpecification">
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
-          eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="const" ordered="false"
-          lowerBound="1" eType="#//wot/Date"/>
+    <eClassifiers xsi:type="ecore:EEnum" name="SubProtocolKind">
+      <eLiterals name="None"/>
+      <eLiterals name="LongPoll" value="1"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="DataSchema">
+      <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"
-          lowerBound="1" eType="#//wot/Date"/>
+          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: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"
+          lowerBound="1" eType="#//wot/DataSchema"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="Date" eSuperTypes="#//software/core/structure/DetailedValueSpecification"/>
     <eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//wot/InteractionPattern">
       <eStructuralFeatures xsi:type="ecore:EReference" name="input" ordered="false"
-          eType="#//wot/DataScheme"/>
+          eType="#//wot/DataSchema"/>
       <eStructuralFeatures xsi:type="ecore:EReference" name="output" ordered="false"
-          lowerBound="1" eType="#//wot/DataScheme"/>
+          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"/>
     </eClassifiers>
-    <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//wot/InteractionPattern">
+    <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//wot/DataSchema #//wot/InteractionPattern">
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="observable" ordered="false"
           eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
-      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
-          eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
     </eClassifiers>
   </eSubpackages>
 </ecore:EPackage>
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Action.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Action.java
index 502de4e..fbf3ef1 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Action.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Action.java
@@ -13,6 +13,7 @@
  */
 package org.eclipse.papyrus.iotml.wot;
 
+import org.eclipse.uml2.uml.BehavioralFeature;
 
 /**
  * <!-- begin-user-doc -->
@@ -25,6 +26,7 @@
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Action#getInput <em>Input</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Action#getOutput <em>Output</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Action#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getAction()
@@ -41,12 +43,12 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Input</em>' reference.
-	 * @see #setInput(DataScheme)
+	 * @see #setInput(DataSchema)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getAction_Input()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	DataScheme getInput();
+	DataSchema getInput();
 
 	/**
 	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Action#getInput <em>Input</em>}' reference.
@@ -56,7 +58,7 @@
 	 * @see #getInput()
 	 * @generated
 	 */
-	void setInput(DataScheme value);
+	void setInput(DataSchema value);
 
 	/**
 	 * Returns the value of the '<em><b>Output</b></em>' reference.
@@ -67,12 +69,12 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Output</em>' reference.
-	 * @see #setOutput(DataScheme)
+	 * @see #setOutput(DataSchema)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getAction_Output()
-	 * @model required="true" ordered="false"
+	 * @model ordered="false"
 	 * @generated
 	 */
-	DataScheme getOutput();
+	DataSchema getOutput();
 
 	/**
 	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Action#getOutput <em>Output</em>}' reference.
@@ -82,6 +84,32 @@
 	 * @see #getOutput()
 	 * @generated
 	 */
-	void setOutput(DataScheme value);
+	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#getAction_Base_BehavioralFeature()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	BehavioralFeature getBase_BehavioralFeature();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Action#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);
 
 } // Action
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
new file mode 100644
index 0000000..d19ac16
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataSchema.java
@@ -0,0 +1,202 @@
+/**
+ * Copyright (c) 2018 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:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.wot;
+
+import org.eclipse.emf.common.util.EList;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Schema</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <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>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema()
+ * @model
+ * @generated
+ */
+public interface DataSchema extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Base Typed Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Typed Element</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 Typed Element</em>' reference.
+	 * @see #setBase_TypedElement(TypedElement)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Base_TypedElement()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	TypedElement getBase_TypedElement();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getBase_TypedElement <em>Base Typed Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Typed Element</em>' reference.
+	 * @see #getBase_TypedElement()
+	 * @generated
+	 */
+	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}.
+	 * <!-- 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.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Enum()
+	 * @model 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);
+
+	/**
+	 * Returns the value of the '<em><b>Required</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.uml2.uml.Property}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Required</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>Required</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Required()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EList<Property> getRequired();
+
+	/**
+	 * Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Required</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
+	 * @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
+	 * @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
+	 * @see #getRequired()
+	 * @generated
+	 */
+	Property getRequired(String name, Type type);
+
+	/**
+	 * Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Required</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
+	 * @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
+	 * @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
+	 * @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
+	 * @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
+	 * @see #getRequired()
+	 * @generated
+	 */
+	Property getRequired(String name, Type type, boolean ignoreCase, EClass eClass);
+
+	/**
+	 * Returns the value of the '<em><b>Items</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.DataSchema}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Items</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>Items</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Items()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EList<DataSchema> getItems();
+
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Properties</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Properties</em>' reference.
+	 * @see #setProperties(DataSchema)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataSchema_Properties()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	DataSchema getProperties();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getProperties <em>Properties</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Properties</em>' reference.
+	 * @see #getProperties()
+	 * @generated
+	 */
+	void setProperties(DataSchema value);
+
+} // DataSchema
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataScheme.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataScheme.java
deleted file mode 100644
index 48c7373..0000000
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/DataScheme.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Copyright (c) 2018 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:
- *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
- *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
- * 
- */
-package org.eclipse.papyrus.iotml.wot;
-
-import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Data Scheme</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.DataScheme#getType <em>Type</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.DataScheme#getDescription <em>Description</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.DataScheme#getConst <em>Const</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.DataScheme#getEnum <em>Enum</em>}</li>
- * </ul>
- *
- * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataScheme()
- * @model
- * @generated
- */
-public interface DataScheme extends DetailedValueSpecification {
-	/**
-	 * 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#getDataScheme_Type()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
-	 * @generated
-	 */
-	String getType();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataScheme#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>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#getDataScheme_Description()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
-	 * @generated
-	 */
-	String getDescription();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataScheme#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>Const</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Const</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Const</em>' reference.
-	 * @see #setConst(Date)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataScheme_Const()
-	 * @model required="true" ordered="false"
-	 * @generated
-	 */
-	Date getConst();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataScheme#getConst <em>Const</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Const</em>' reference.
-	 * @see #getConst()
-	 * @generated
-	 */
-	void setConst(Date value);
-
-	/**
-	 * Returns the value of the '<em><b>Enum</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Enum</em>' reference 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.
-	 * @see #setEnum(Date)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDataScheme_Enum()
-	 * @model required="true" ordered="false"
-	 * @generated
-	 */
-	Date getEnum();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.DataScheme#getEnum <em>Enum</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Enum</em>' reference.
-	 * @see #getEnum()
-	 * @generated
-	 */
-	void setEnum(Date value);
-
-} // DataScheme
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Date.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Date.java
deleted file mode 100644
index 5e974d3..0000000
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Date.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Copyright (c) 2018 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:
- *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
- *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
- * 
- */
-package org.eclipse.papyrus.iotml.wot;
-
-import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Date</b></em>'.
- * <!-- end-user-doc -->
- *
- *
- * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getDate()
- * @model
- * @generated
- */
-public interface Date extends DetailedValueSpecification {
-} // Date
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Event.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Event.java
index b5186a6..c5c8441 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Event.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Event.java
@@ -13,6 +13,7 @@
  */
 package org.eclipse.papyrus.iotml.wot;
 
+import org.eclipse.uml2.uml.Signal;
 
 /**
  * <!-- begin-user-doc -->
@@ -23,38 +24,38 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Event#getBase_Event <em>Base Event</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Event#getBase_Signal <em>Base Signal</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getEvent()
  * @model
  * @generated
  */
-public interface Event extends InteractionPattern {
-
+public interface Event extends DataSchema, InteractionPattern {
 	/**
-	 * Returns the value of the '<em><b>Base Event</b></em>' reference.
+	 * Returns the value of the '<em><b>Base Signal</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Base Event</em>' reference isn't clear,
+	 * 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 Event</em>' reference.
-	 * @see #setBase_Event(org.eclipse.uml2.uml.Event)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getEvent_Base_Event()
+	 * @return the value of the '<em>Base Signal</em>' reference.
+	 * @see #setBase_Signal(Signal)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getEvent_Base_Signal()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	org.eclipse.uml2.uml.Event getBase_Event();
+	Signal getBase_Signal();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Event#getBase_Event <em>Base Event</em>}' reference.
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Event#getBase_Signal <em>Base Signal</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Base Event</em>' reference.
-	 * @see #getBase_Event()
+	 * @param value the new value of the '<em>Base Signal</em>' reference.
+	 * @see #getBase_Signal()
 	 * @generated
 	 */
-	void setBase_Event(org.eclipse.uml2.uml.Event value);
+	void setBase_Signal(Signal value);
+
 } // Event
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 f3ef6b3..c5d54f1 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
@@ -13,7 +13,9 @@
  */
 package org.eclipse.papyrus.iotml.wot;
 
-import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
 
 /**
  * <!-- begin-user-doc -->
@@ -24,123 +26,19 @@
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getHref <em>Href</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getMediaType <em>Media Type</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getRel <em>Rel</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getSubProtocol <em>Sub Protocol</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getSecurity <em>Security</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getScopes <em>Scopes</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getHref <em>Href</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Form#getFormSec <em>Form Sec</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm()
  * @model
  * @generated
  */
-public interface Form extends DetailedValueSpecification {
-	/**
-	 * Returns the value of the '<em><b>Media Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Media 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>Media Type</em>' attribute.
-	 * @see #setMediaType(String)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_MediaType()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
-	 * @generated
-	 */
-	String getMediaType();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getMediaType <em>Media Type</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Media Type</em>' attribute.
-	 * @see #getMediaType()
-	 * @generated
-	 */
-	void setMediaType(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Rel</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Rel</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Rel</em>' attribute.
-	 * @see #setRel(String)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_Rel()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
-	 * @generated
-	 */
-	String getRel();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getRel <em>Rel</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Rel</em>' attribute.
-	 * @see #getRel()
-	 * @generated
-	 */
-	void setRel(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Sub Protocol</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Sub Protocol</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Sub Protocol</em>' attribute.
-	 * @see #setSubProtocol(String)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_SubProtocol()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
-	 * @generated
-	 */
-	String getSubProtocol();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getSubProtocol <em>Sub Protocol</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Sub Protocol</em>' attribute.
-	 * @see #getSubProtocol()
-	 * @generated
-	 */
-	void setSubProtocol(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Scopes</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Scopes</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Scopes</em>' attribute.
-	 * @see #setScopes(String)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_Scopes()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
-	 * @generated
-	 */
-	String getScopes();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getScopes <em>Scopes</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Scopes</em>' attribute.
-	 * @see #getScopes()
-	 * @generated
-	 */
-	void setScopes(String value);
-
+public interface Form extends MetaValueSpecification {
 	/**
 	 * Returns the value of the '<em><b>Href</b></em>' reference.
 	 * <!-- begin-user-doc -->
@@ -168,29 +66,120 @@
 	void setHref(Link value);
 
 	/**
-	 * Returns the value of the '<em><b>Form Sec</b></em>' reference.
+	 * Returns the value of the '<em><b>Media Type</b></em>' attribute.
+	 * The default value is <code>"application/json"</code>.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Form Sec</em>' reference isn't clear,
+	 * If the meaning of the '<em>Media 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>Form Sec</em>' reference.
-	 * @see #setFormSec(SecurityScheme)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_FormSec()
-	 * @model required="true" ordered="false"
+	 * @return the value of the '<em>Media Type</em>' attribute.
+	 * @see #setMediaType(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_MediaType()
+	 * @model default="application/json" dataType="org.eclipse.uml2.types.String" ordered="false"
 	 * @generated
 	 */
-	SecurityScheme getFormSec();
+	String getMediaType();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getFormSec <em>Form Sec</em>}' reference.
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getMediaType <em>Media Type</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Form Sec</em>' reference.
-	 * @see #getFormSec()
+	 * @param value the new value of the '<em>Media Type</em>' attribute.
+	 * @see #getMediaType()
 	 * @generated
 	 */
-	void setFormSec(SecurityScheme value);
+	void setMediaType(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Rel</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.iotml.wot.RelKind}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rel</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rel</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.wot.RelKind
+	 * @see #setRel(RelKind)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_Rel()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	RelKind getRel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getRel <em>Rel</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rel</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.wot.RelKind
+	 * @see #getRel()
+	 * @generated
+	 */
+	void setRel(RelKind value);
+
+	/**
+	 * Returns the value of the '<em><b>Sub Protocol</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.iotml.wot.SubProtocolKind}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sub Protocol</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub Protocol</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.wot.SubProtocolKind
+	 * @see #setSubProtocol(SubProtocolKind)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getForm_SubProtocol()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	SubProtocolKind getSubProtocol();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Form#getSubProtocol <em>Sub Protocol</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Sub Protocol</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.wot.SubProtocolKind
+	 * @see #getSubProtocol()
+	 * @generated
+	 */
+	void setSubProtocol(SubProtocolKind 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 ordered="false"
+	 * @generated
+	 */
+	EList<SecurityScheme> getSecurity();
+
+	/**
+	 * Returns the value of the '<em><b>Scopes</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scopes</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- 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" ordered="false"
+	 * @generated
+	 */
+	EList<String> getScopes();
 
 } // Form
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionPattern.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionPattern.java
index 186e996..7b46323 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionPattern.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/InteractionPattern.java
@@ -14,7 +14,8 @@
 package org.eclipse.papyrus.iotml.wot;
 
 import org.eclipse.emf.common.util.EList;
-import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.GrService;
+
+import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
@@ -26,9 +27,8 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getLabel <em>Label</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getScopes <em>Scopes</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getIntSec <em>Int Sec</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getSecurity <em>Security</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getForms <em>Forms</em>}</li>
  * </ul>
  *
@@ -36,7 +36,7 @@
  * @model
  * @generated
  */
-public interface InteractionPattern extends GrService {
+public interface InteractionPattern extends EObject {
 	/**
 	 * Returns the value of the '<em><b>Label</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -48,7 +48,7 @@
 	 * @return the value of the '<em>Label</em>' attribute.
 	 * @see #setLabel(String)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionPattern_Label()
-	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
 	 * @generated
 	 */
 	String getLabel();
@@ -64,82 +64,36 @@
 	void setLabel(String value);
 
 	/**
-	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * Returns the value of the '<em><b>Scopes</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.String}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Description</em>' attribute isn't clear,
+	 * If the meaning of the '<em>Scopes</em>' attribute list 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#getInteractionPattern_Description()
-	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
-	 * @generated
-	 */
-	String getDescription();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#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>Scopes</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Scopes</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Scopes</em>' attribute.
-	 * @see #setScopes(String)
+	 * @return the value of the '<em>Scopes</em>' attribute list.
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionPattern_Scopes()
 	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
 	 * @generated
 	 */
-	String getScopes();
+	EList<String> getScopes();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getScopes <em>Scopes</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Scopes</em>' attribute.
-	 * @see #getScopes()
-	 * @generated
-	 */
-	void setScopes(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Int Sec</b></em>' reference.
+	 * 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>Int Sec</em>' reference isn't clear,
+	 * 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>Int Sec</em>' reference.
-	 * @see #setIntSec(SecurityScheme)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionPattern_IntSec()
+	 * @return the value of the '<em>Security</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionPattern_Security()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	SecurityScheme getIntSec();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getIntSec <em>Int Sec</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Int Sec</em>' reference.
-	 * @see #getIntSec()
-	 * @generated
-	 */
-	void setIntSec(SecurityScheme value);
+	EList<SecurityScheme> getSecurity();
 
 	/**
 	 * Returns the value of the '<em><b>Forms</b></em>' reference list.
@@ -152,7 +106,7 @@
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Forms</em>' reference list.
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getInteractionPattern_Forms()
-	 * @model ordered="false"
+	 * @model required="true" ordered="false"
 	 * @generated
 	 */
 	EList<Form> getForms();
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 82ac2b2..3db11dd 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
@@ -13,7 +13,9 @@
  */
 package org.eclipse.papyrus.iotml.wot;
 
-import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.PrimitiveType;
 
 /**
  * <!-- begin-user-doc -->
@@ -24,19 +26,47 @@
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Link#getHref <em>Href</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Link#getMediaType <em>Media Type</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Link#getRel <em>Rel</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Link#getHref <em>Href</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Link#getAnchor <em>Anchor</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Link#getBase_PrimitiveType <em>Base Primitive Type</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getLink()
  * @model
  * @generated
  */
-public interface Link extends DetailedValueSpecification {
+public interface Link extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Href</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Href</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Href</em>' attribute.
+	 * @see #setHref(String)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getLink_Href()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getHref();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Link#getHref <em>Href</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Href</em>' attribute.
+	 * @see #getHref()
+	 * @generated
+	 */
+	void setHref(String value);
+
 	/**
 	 * Returns the value of the '<em><b>Media Type</b></em>' attribute.
+	 * The default value is <code>"application/json"</code>.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Media Type</em>' attribute isn't clear,
@@ -46,7 +76,7 @@
 	 * @return the value of the '<em>Media Type</em>' attribute.
 	 * @see #setMediaType(String)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getLink_MediaType()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @model default="application/json" dataType="org.eclipse.uml2.types.String" ordered="false"
 	 * @generated
 	 */
 	String getMediaType();
@@ -63,6 +93,7 @@
 
 	/**
 	 * Returns the value of the '<em><b>Rel</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.iotml.wot.RelKind}.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Rel</em>' attribute isn't clear,
@@ -70,73 +101,75 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Rel</em>' attribute.
-	 * @see #setRel(String)
+	 * @see org.eclipse.papyrus.iotml.wot.RelKind
+	 * @see #setRel(RelKind)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getLink_Rel()
-	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @model ordered="false"
 	 * @generated
 	 */
-	String getRel();
+	RelKind getRel();
 
 	/**
 	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Link#getRel <em>Rel</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param value the new value of the '<em>Rel</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.wot.RelKind
 	 * @see #getRel()
 	 * @generated
 	 */
-	void setRel(String value);
+	void setRel(RelKind value);
 
 	/**
-	 * Returns the value of the '<em><b>Href</b></em>' reference.
+	 * Returns the value of the '<em><b>Anchor</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Href</em>' reference isn't clear,
+	 * If the meaning of the '<em>Anchor</em>' attribute isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Href</em>' reference.
-	 * @see #setHref(Link)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getLink_Href()
-	 * @model required="true" ordered="false"
-	 * @generated
-	 */
-	Link getHref();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Link#getHref <em>Href</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Href</em>' reference.
-	 * @see #getHref()
-	 * @generated
-	 */
-	void setHref(Link value);
-
-	/**
-	 * Returns the value of the '<em><b>Anchor</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Anchor</em>' reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Anchor</em>' reference.
-	 * @see #setAnchor(Link)
+	 * @return the value of the '<em>Anchor</em>' attribute.
+	 * @see #setAnchor(String)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getLink_Anchor()
-	 * @model ordered="false"
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
 	 * @generated
 	 */
-	Link getAnchor();
+	String getAnchor();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Link#getAnchor <em>Anchor</em>}' reference.
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Link#getAnchor <em>Anchor</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Anchor</em>' reference.
+	 * @param value the new value of the '<em>Anchor</em>' attribute.
 	 * @see #getAnchor()
 	 * @generated
 	 */
-	void setAnchor(Link value);
+	void setAnchor(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Base Primitive Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Primitive Type</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 Primitive Type</em>' reference.
+	 * @see #setBase_PrimitiveType(PrimitiveType)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getLink_Base_PrimitiveType()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	PrimitiveType getBase_PrimitiveType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Link#getBase_PrimitiveType <em>Base Primitive Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Primitive Type</em>' reference.
+	 * @see #getBase_PrimitiveType()
+	 * @generated
+	 */
+	void setBase_PrimitiveType(PrimitiveType value);
 
 } // Link
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Property.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Property.java
index 8f02112..27f48e5 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Property.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/Property.java
@@ -24,14 +24,13 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Property#isObservable <em>Observable</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Property#getBase_Property <em>Base Property</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getProperty()
  * @model
  * @generated
  */
-public interface Property extends InteractionPattern {
+public interface Property extends DataSchema, InteractionPattern {
 	/**
 	 * Returns the value of the '<em><b>Observable</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -58,30 +57,4 @@
 	 */
 	void setObservable(boolean value);
 
-	/**
-	 * Returns the value of the '<em><b>Base Property</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Base Property</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 Property</em>' reference.
-	 * @see #setBase_Property(org.eclipse.uml2.uml.Property)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getProperty_Base_Property()
-	 * @model ordered="false"
-	 * @generated
-	 */
-	org.eclipse.uml2.uml.Property getBase_Property();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Property#getBase_Property <em>Base Property</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Base Property</em>' reference.
-	 * @see #getBase_Property()
-	 * @generated
-	 */
-	void setBase_Property(org.eclipse.uml2.uml.Property value);
-
 } // Property
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/RelKind.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/RelKind.java
new file mode 100644
index 0000000..3c7dcd4
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/RelKind.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2018 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:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.wot;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Rel Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getRelKind()
+ * @model
+ * @generated
+ */
+public enum RelKind implements Enumerator {
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(0, "none", "none"),
+
+	/**
+	 * The '<em><b>Readproperty</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #READPROPERTY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	READPROPERTY(1, "readproperty", "readproperty"),
+
+	/**
+	 * The '<em><b>Writeproperty</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WRITEPROPERTY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WRITEPROPERTY(2, "writeproperty", "writeproperty"),
+
+	/**
+	 * The '<em><b>Observerproperty</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OBSERVERPROPERTY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OBSERVERPROPERTY(3, "observerproperty", "observerproperty"),
+
+	/**
+	 * The '<em><b>Invokeaction</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INVOKEACTION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INVOKEACTION(4, "invokeaction", "invokeaction"),
+
+	/**
+	 * The '<em><b>Subscribeevent</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUBSCRIBEEVENT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUBSCRIBEEVENT(5, "subscribeevent", "subscribeevent"),
+
+	/**
+	 * The '<em><b>Unsubscribeevent</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSUBSCRIBEEVENT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSUBSCRIBEEVENT(6, "unsubscribeevent", "unsubscribeevent");
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Readproperty</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Readproperty</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #READPROPERTY
+	 * @model name="readproperty"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int READPROPERTY_VALUE = 1;
+
+	/**
+	 * The '<em><b>Writeproperty</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Writeproperty</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WRITEPROPERTY
+	 * @model name="writeproperty"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WRITEPROPERTY_VALUE = 2;
+
+	/**
+	 * The '<em><b>Observerproperty</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Observerproperty</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OBSERVERPROPERTY
+	 * @model name="observerproperty"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OBSERVERPROPERTY_VALUE = 3;
+
+	/**
+	 * The '<em><b>Invokeaction</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Invokeaction</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INVOKEACTION
+	 * @model name="invokeaction"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INVOKEACTION_VALUE = 4;
+
+	/**
+	 * The '<em><b>Subscribeevent</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Subscribeevent</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SUBSCRIBEEVENT
+	 * @model name="subscribeevent"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SUBSCRIBEEVENT_VALUE = 5;
+
+	/**
+	 * The '<em><b>Unsubscribeevent</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unsubscribeevent</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSUBSCRIBEEVENT
+	 * @model name="unsubscribeevent"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSUBSCRIBEEVENT_VALUE = 6;
+
+	/**
+	 * An array of all the '<em><b>Rel Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final RelKind[] VALUES_ARRAY =
+		new RelKind[] {
+			NONE,
+			READPROPERTY,
+			WRITEPROPERTY,
+			OBSERVERPROPERTY,
+			INVOKEACTION,
+			SUBSCRIBEEVENT,
+			UNSUBSCRIBEEVENT,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Rel Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<RelKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Rel Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RelKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RelKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Rel Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RelKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			RelKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Rel Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static RelKind get(int value) {
+		switch (value) {
+			case NONE_VALUE: return NONE;
+			case READPROPERTY_VALUE: return READPROPERTY;
+			case WRITEPROPERTY_VALUE: return WRITEPROPERTY;
+			case OBSERVERPROPERTY_VALUE: return OBSERVERPROPERTY;
+			case INVOKEACTION_VALUE: return INVOKEACTION;
+			case SUBSCRIBEEVENT_VALUE: return SUBSCRIBEEVENT;
+			case UNSUBSCRIBEEVENT_VALUE: return UNSUBSCRIBEEVENT;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private RelKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //RelKind
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 c3bd5e7..9b41866 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
@@ -13,7 +13,9 @@
  */
 package org.eclipse.papyrus.iotml.wot;
 
-import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Classifier;
 
 /**
  * <!-- begin-user-doc -->
@@ -25,17 +27,18 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getScheme <em>Scheme</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getProxyUrl <em>Proxy Url</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getBase_Classifier <em>Base Classifier</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSecurityScheme()
  * @model
  * @generated
  */
-public interface SecurityScheme extends DetailedValueSpecification {
+public interface SecurityScheme extends EObject {
 	/**
 	 * 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 -->
 	 * <p>
 	 * If the meaning of the '<em>Scheme</em>' attribute isn't clear,
@@ -43,48 +46,24 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Scheme</em>' attribute.
-	 * @see #setScheme(String)
+	 * @see org.eclipse.papyrus.iotml.wot.SecuritySchemeKind
+	 * @see #setScheme(SecuritySchemeKind)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSecurityScheme_Scheme()
-	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @model required="true" ordered="false"
 	 * @generated
 	 */
-	String getScheme();
+	SecuritySchemeKind getScheme();
 
 	/**
 	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getScheme <em>Scheme</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param value the new value of the '<em>Scheme</em>' attribute.
+	 * @see org.eclipse.papyrus.iotml.wot.SecuritySchemeKind
 	 * @see #getScheme()
 	 * @generated
 	 */
-	void setScheme(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" 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);
+	void setScheme(SecuritySchemeKind value);
 
 	/**
 	 * Returns the value of the '<em><b>Proxy Url</b></em>' reference.
@@ -97,7 +76,7 @@
 	 * @return the value of the '<em>Proxy Url</em>' reference.
 	 * @see #setProxyUrl(Link)
 	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSecurityScheme_ProxyUrl()
-	 * @model ordered="false"
+	 * @model required="true" ordered="false"
 	 * @generated
 	 */
 	Link getProxyUrl();
@@ -112,4 +91,30 @@
 	 */
 	void setProxyUrl(Link value);
 
+	/**
+	 * Returns the value of the '<em><b>Base Classifier</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Classifier</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 Classifier</em>' reference.
+	 * @see #setBase_Classifier(Classifier)
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSecurityScheme_Base_Classifier()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Classifier getBase_Classifier();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getBase_Classifier <em>Base Classifier</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Classifier</em>' reference.
+	 * @see #getBase_Classifier()
+	 * @generated
+	 */
+	void setBase_Classifier(Classifier value);
+
 } // SecurityScheme
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
new file mode 100644
index 0000000..cc9aeee
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SecuritySchemeKind.java
@@ -0,0 +1,444 @@
+/**
+ * Copyright (c) 2018 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:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.wot;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Security Scheme Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSecuritySchemeKind()
+ * @model
+ * @generated
+ */
+public enum SecuritySchemeKind implements Enumerator {
+	/**
+	 * The '<em><b>Nosec</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NOSEC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NOSEC(0, "nosec", "nosec"),
+
+	/**
+	 * The '<em><b>Basic</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BASIC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BASIC(1, "basic", "basic"),
+
+	/**
+	 * The '<em><b>Cert</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CERT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CERT(2, "cert", "cert"),
+
+	/**
+	 * The '<em><b>Digest</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DIGEST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DIGEST(3, "digest", "digest"),
+
+	/**
+	 * The '<em><b>Bearer</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BEARER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BEARER(4, "bearer", "bearer"),
+
+	/**
+	 * The '<em><b>Pop</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #POP_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	POP(5, "pop", "pop"),
+
+	/**
+	 * The '<em><b>Psk</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PSK_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PSK(6, "psk", "psk"),
+
+	/**
+	 * The '<em><b>Public</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PUBLIC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PUBLIC(7, "public", "public"),
+
+	/**
+	 * The '<em><b>Oauth</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OAUTH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OAUTH(8, "oauth", "oauth"),
+
+	/**
+	 * The '<em><b>Apikey</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #APIKEY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	APIKEY(9, "apikey", "apikey");
+
+	/**
+	 * The '<em><b>Nosec</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Nosec</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NOSEC
+	 * @model name="nosec"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NOSEC_VALUE = 0;
+
+	/**
+	 * The '<em><b>Basic</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Basic</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BASIC
+	 * @model name="basic"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BASIC_VALUE = 1;
+
+	/**
+	 * The '<em><b>Cert</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Cert</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #CERT
+	 * @model name="cert"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CERT_VALUE = 2;
+
+	/**
+	 * The '<em><b>Digest</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Digest</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DIGEST
+	 * @model name="digest"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DIGEST_VALUE = 3;
+
+	/**
+	 * The '<em><b>Bearer</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Bearer</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BEARER
+	 * @model name="bearer"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BEARER_VALUE = 4;
+
+	/**
+	 * The '<em><b>Pop</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Pop</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #POP
+	 * @model name="pop"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int POP_VALUE = 5;
+
+	/**
+	 * The '<em><b>Psk</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Psk</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PSK
+	 * @model name="psk"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PSK_VALUE = 6;
+
+	/**
+	 * The '<em><b>Public</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Public</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PUBLIC
+	 * @model name="public"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PUBLIC_VALUE = 7;
+
+	/**
+	 * The '<em><b>Oauth</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Oauth</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OAUTH
+	 * @model name="oauth"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OAUTH_VALUE = 8;
+
+	/**
+	 * The '<em><b>Apikey</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Apikey</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #APIKEY
+	 * @model name="apikey"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int APIKEY_VALUE = 9;
+
+	/**
+	 * An array of all the '<em><b>Security Scheme Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SecuritySchemeKind[] VALUES_ARRAY =
+		new SecuritySchemeKind[] {
+			NOSEC,
+			BASIC,
+			CERT,
+			DIGEST,
+			BEARER,
+			POP,
+			PSK,
+			PUBLIC,
+			OAUTH,
+			APIKEY,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Security Scheme Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SecuritySchemeKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Security Scheme Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SecuritySchemeKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SecuritySchemeKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Security Scheme Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SecuritySchemeKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SecuritySchemeKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Security Scheme Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SecuritySchemeKind get(int value) {
+		switch (value) {
+			case NOSEC_VALUE: return NOSEC;
+			case BASIC_VALUE: return BASIC;
+			case CERT_VALUE: return CERT;
+			case DIGEST_VALUE: return DIGEST;
+			case BEARER_VALUE: return BEARER;
+			case POP_VALUE: return POP;
+			case PSK_VALUE: return PSK;
+			case PUBLIC_VALUE: return PUBLIC;
+			case OAUTH_VALUE: return OAUTH;
+			case APIKEY_VALUE: return APIKEY;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private SecuritySchemeKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //SecuritySchemeKind
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
new file mode 100644
index 0000000..8559c34
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/SubProtocolKind.java
@@ -0,0 +1,228 @@
+/**
+ * Copyright (c) 2018 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:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.wot;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Sub Protocol Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getSubProtocolKind()
+ * @model
+ * @generated
+ */
+public enum SubProtocolKind implements Enumerator {
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(0, "None", "None"),
+
+	/**
+	 * The '<em><b>Long Poll</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LONG_POLL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LONG_POLL(1, "LongPoll", "LongPoll");
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="None"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Long Poll</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Long Poll</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LONG_POLL
+	 * @model name="LongPoll"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LONG_POLL_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Sub Protocol Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final SubProtocolKind[] VALUES_ARRAY =
+		new SubProtocolKind[] {
+			NONE,
+			LONG_POLL,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Sub Protocol Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<SubProtocolKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Sub Protocol Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SubProtocolKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SubProtocolKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Sub Protocol Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SubProtocolKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			SubProtocolKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Sub Protocol Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static SubProtocolKind get(int value) {
+		switch (value) {
+			case NONE_VALUE: return NONE;
+			case LONG_POLL_VALUE: return LONG_POLL;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private SubProtocolKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //SubProtocolKind
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 1183020..94a42b6 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
@@ -14,6 +14,7 @@
 package org.eclipse.papyrus.iotml.wot;
 
 import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
 
 /**
@@ -27,11 +28,11 @@
  * <ul>
  *   <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#getThingSec <em>Thing Sec</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getSecurity <em>Security</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getBase <em>Base</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getLinks <em>Links</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getEvent <em>Event</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.Thing#getAction <em>Action</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>
  * </ul>
  *
@@ -93,30 +94,20 @@
 	void setSupport(String value);
 
 	/**
-	 * Returns the value of the '<em><b>Thing Sec</b></em>' reference.
+	 * 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>Thing Sec</em>' reference isn't clear,
+	 * 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>Thing Sec</em>' reference.
-	 * @see #setThingSec(SecurityScheme)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_ThingSec()
+	 * @return the value of the '<em>Security</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Security()
 	 * @model ordered="false"
 	 * @generated
 	 */
-	SecurityScheme getThingSec();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Thing#getThingSec <em>Thing Sec</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Thing Sec</em>' reference.
-	 * @see #getThingSec()
-	 * @generated
-	 */
-	void setThingSec(SecurityScheme value);
+	EList<SecurityScheme> getSecurity();
 
 	/**
 	 * Returns the value of the '<em><b>Base</b></em>' reference.
@@ -161,56 +152,36 @@
 	EList<Link> getLinks();
 
 	/**
-	 * Returns the value of the '<em><b>Event</b></em>' reference.
+	 * Returns the value of the '<em><b>Events</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.Event}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Event</em>' reference isn't clear,
+	 * If the meaning of the '<em>Events</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>Event</em>' reference.
-	 * @see #setEvent(Event)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Event()
-	 * @model required="true" ordered="false"
+	 * @return the value of the '<em>Events</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Events()
+	 * @model ordered="false"
 	 * @generated
 	 */
-	Event getEvent();
+	EList<Event> getEvents();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Thing#getEvent <em>Event</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Event</em>' reference.
-	 * @see #getEvent()
-	 * @generated
-	 */
-	void setEvent(Event value);
-
-	/**
-	 * Returns the value of the '<em><b>Action</b></em>' reference.
+	 * Returns the value of the '<em><b>Actions</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.iotml.wot.Action}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Action</em>' reference isn't clear,
+	 * If the meaning of the '<em>Actions</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>Action</em>' reference.
-	 * @see #setAction(Action)
-	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Action()
-	 * @model required="true" ordered="false"
+	 * @return the value of the '<em>Actions</em>' reference list.
+	 * @see org.eclipse.papyrus.iotml.wot.WoTPackage#getThing_Actions()
+	 * @model ordered="false"
 	 * @generated
 	 */
-	Action getAction();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.iotml.wot.Thing#getAction <em>Action</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Action</em>' reference.
-	 * @see #getAction()
-	 * @generated
-	 */
-	void setAction(Action value);
+	EList<Action> getActions();
 
 	/**
 	 * Returns the value of the '<em><b>Properties</b></em>' reference list.
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 e8957af..8bdd043 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
@@ -87,22 +87,13 @@
 	Form createForm();
 
 	/**
-	 * Returns a new object of class '<em>Data Scheme</em>'.
+	 * Returns a new object of class '<em>Data Schema</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Data Scheme</em>'.
+	 * @return a new object of class '<em>Data Schema</em>'.
 	 * @generated
 	 */
-	DataScheme createDataScheme();
-
-	/**
-	 * Returns a new object of class '<em>Date</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Date</em>'.
-	 * @generated
-	 */
-	Date createDate();
+	DataSchema createDataSchema();
 
 	/**
 	 * Returns a new object of class '<em>Action</em>'.
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 6df2ca3..224b7b2 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
@@ -15,11 +15,12 @@
 
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 
-import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.GRMPackage;
 import org.eclipse.papyrus.iotml.software.artefact.ArtefactPackage;
+
 import org.eclipse.papyrus.iotml.software.core.structure.StructurePackage;
 
 /**
@@ -127,13 +128,13 @@
 	int THING__SUPPORT = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Thing Sec</b></em>' reference.
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int THING__THING_SEC = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 2;
+	int THING__SECURITY = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Base</b></em>' reference.
@@ -154,22 +155,22 @@
 	int THING__LINKS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 4;
 
 	/**
-	 * The feature id for the '<em><b>Event</b></em>' reference.
+	 * The feature id for the '<em><b>Events</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int THING__EVENT = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 5;
+	int THING__EVENTS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 5;
 
 	/**
-	 * The feature id for the '<em><b>Action</b></em>' reference.
+	 * The feature id for the '<em><b>Actions</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int THING__ACTION = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 6;
+	int THING__ACTIONS = ArtefactPackage.VIRTUAL_ENTITY_FEATURE_COUNT + 6;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' reference list.
@@ -200,40 +201,13 @@
 	int SECURITY_SCHEME = 1;
 
 	/**
-	 * The feature id for the '<em><b>Base Value Specification</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SECURITY_SCHEME__BASE_VALUE_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__BASE_VALUE_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Meta Specification</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SECURITY_SCHEME__META_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__META_SPECIFICATION;
-
-	/**
 	 * The feature id for the '<em><b>Scheme</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__SCHEME = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SECURITY_SCHEME__DESCRIPTION = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+	int SECURITY_SCHEME__SCHEME = 0;
 
 	/**
 	 * The feature id for the '<em><b>Proxy Url</b></em>' reference.
@@ -242,7 +216,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME__PROXY_URL = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 2;
+	int SECURITY_SCHEME__PROXY_URL = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Classifier</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SECURITY_SCHEME__BASE_CLASSIFIER = 2;
 
 	/**
 	 * The number of structural features of the '<em>Security Scheme</em>' class.
@@ -251,7 +234,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SECURITY_SCHEME_FEATURE_COUNT = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 3;
+	int SECURITY_SCHEME_FEATURE_COUNT = 3;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl <em>Link</em>}' class.
@@ -264,22 +247,13 @@
 	int LINK = 2;
 
 	/**
-	 * The feature id for the '<em><b>Base Value Specification</b></em>' reference.
+	 * The feature id for the '<em><b>Href</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LINK__BASE_VALUE_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__BASE_VALUE_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Meta Specification</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LINK__META_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__META_SPECIFICATION;
+	int LINK__HREF = 0;
 
 	/**
 	 * The feature id for the '<em><b>Media Type</b></em>' attribute.
@@ -288,7 +262,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LINK__MEDIA_TYPE = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+	int LINK__MEDIA_TYPE = 1;
 
 	/**
 	 * The feature id for the '<em><b>Rel</b></em>' attribute.
@@ -297,25 +271,25 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LINK__REL = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+	int LINK__REL = 2;
 
 	/**
-	 * The feature id for the '<em><b>Href</b></em>' reference.
+	 * The feature id for the '<em><b>Anchor</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LINK__HREF = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 2;
+	int LINK__ANCHOR = 3;
 
 	/**
-	 * The feature id for the '<em><b>Anchor</b></em>' reference.
+	 * The feature id for the '<em><b>Base Primitive Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LINK__ANCHOR = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 3;
+	int LINK__BASE_PRIMITIVE_TYPE = 4;
 
 	/**
 	 * The number of structural features of the '<em>Link</em>' class.
@@ -324,125 +298,80 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LINK_FEATURE_COUNT = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 4;
+	int LINK_FEATURE_COUNT = 5;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl <em>Interaction Pattern</em>}' class.
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl <em>Data Schema</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl
-	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getInteractionPattern()
+	 * @see org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl
+	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getDataSchema()
 	 * @generated
 	 */
-	int INTERACTION_PATTERN = 4;
+	int DATA_SCHEMA = 6;
 
 	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_PATTERN__OWNER = GRMPackage.GR_SERVICE__OWNER;
+	int DATA_SCHEMA__BASE_TYPED_ELEMENT = 0;
 
 	/**
-	 * The feature id for the '<em><b>Base Execution Specification</b></em>' reference.
+	 * The feature id for the '<em><b>Enum</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_PATTERN__BASE_EXECUTION_SPECIFICATION = GRMPackage.GR_SERVICE__BASE_EXECUTION_SPECIFICATION;
+	int DATA_SCHEMA__ENUM = 1;
 
 	/**
-	 * The feature id for the '<em><b>Base Behavioral Feature</b></em>' reference.
+	 * The feature id for the '<em><b>Number Interval</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_PATTERN__BASE_BEHAVIORAL_FEATURE = GRMPackage.GR_SERVICE__BASE_BEHAVIORAL_FEATURE;
+	int DATA_SCHEMA__NUMBER_INTERVAL = 2;
 
 	/**
-	 * The feature id for the '<em><b>Base Behavior</b></em>' reference.
+	 * The feature id for the '<em><b>Required</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_PATTERN__BASE_BEHAVIOR = GRMPackage.GR_SERVICE__BASE_BEHAVIOR;
+	int DATA_SCHEMA__REQUIRED = 3;
 
 	/**
-	 * The feature id for the '<em><b>Base Collaboration</b></em>' reference.
+	 * The feature id for the '<em><b>Items</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_PATTERN__BASE_COLLABORATION = GRMPackage.GR_SERVICE__BASE_COLLABORATION;
+	int DATA_SCHEMA__ITEMS = 4;
 
 	/**
-	 * The feature id for the '<em><b>Base Collaboration Use</b></em>' reference.
+	 * The feature id for the '<em><b>Properties</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_PATTERN__BASE_COLLABORATION_USE = GRMPackage.GR_SERVICE__BASE_COLLABORATION_USE;
+	int DATA_SCHEMA__PROPERTIES = 5;
 
 	/**
-	 * The feature id for the '<em><b>Label</b></em>' attribute.
+	 * The number of structural features of the '<em>Data Schema</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_PATTERN__LABEL = GRMPackage.GR_SERVICE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_PATTERN__DESCRIPTION = GRMPackage.GR_SERVICE_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Scopes</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_PATTERN__SCOPES = GRMPackage.GR_SERVICE_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Int Sec</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_PATTERN__INT_SEC = GRMPackage.GR_SERVICE_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Forms</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_PATTERN__FORMS = GRMPackage.GR_SERVICE_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the '<em>Interaction Pattern</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_PATTERN_FEATURE_COUNT = GRMPackage.GR_SERVICE_FEATURE_COUNT + 5;
+	int DATA_SCHEMA_FEATURE_COUNT = 6;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl <em>Event</em>}' class.
@@ -455,58 +384,58 @@
 	int EVENT = 3;
 
 	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__OWNER = INTERACTION_PATTERN__OWNER;
+	int EVENT__BASE_TYPED_ELEMENT = DATA_SCHEMA__BASE_TYPED_ELEMENT;
 
 	/**
-	 * The feature id for the '<em><b>Base Execution Specification</b></em>' reference.
+	 * The feature id for the '<em><b>Enum</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__BASE_EXECUTION_SPECIFICATION = INTERACTION_PATTERN__BASE_EXECUTION_SPECIFICATION;
+	int EVENT__ENUM = DATA_SCHEMA__ENUM;
 
 	/**
-	 * The feature id for the '<em><b>Base Behavioral Feature</b></em>' reference.
+	 * The feature id for the '<em><b>Number Interval</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__BASE_BEHAVIORAL_FEATURE = INTERACTION_PATTERN__BASE_BEHAVIORAL_FEATURE;
+	int EVENT__NUMBER_INTERVAL = DATA_SCHEMA__NUMBER_INTERVAL;
 
 	/**
-	 * The feature id for the '<em><b>Base Behavior</b></em>' reference.
+	 * The feature id for the '<em><b>Required</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__BASE_BEHAVIOR = INTERACTION_PATTERN__BASE_BEHAVIOR;
+	int EVENT__REQUIRED = DATA_SCHEMA__REQUIRED;
 
 	/**
-	 * The feature id for the '<em><b>Base Collaboration</b></em>' reference.
+	 * The feature id for the '<em><b>Items</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__BASE_COLLABORATION = INTERACTION_PATTERN__BASE_COLLABORATION;
+	int EVENT__ITEMS = DATA_SCHEMA__ITEMS;
 
 	/**
-	 * The feature id for the '<em><b>Base Collaboration Use</b></em>' reference.
+	 * The feature id for the '<em><b>Properties</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__BASE_COLLABORATION_USE = INTERACTION_PATTERN__BASE_COLLABORATION_USE;
+	int EVENT__PROPERTIES = DATA_SCHEMA__PROPERTIES;
 
 	/**
 	 * The feature id for the '<em><b>Label</b></em>' attribute.
@@ -515,34 +444,25 @@
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__LABEL = INTERACTION_PATTERN__LABEL;
+	int EVENT__LABEL = DATA_SCHEMA_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * The feature id for the '<em><b>Scopes</b></em>' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__DESCRIPTION = INTERACTION_PATTERN__DESCRIPTION;
+	int EVENT__SCOPES = DATA_SCHEMA_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Scopes</b></em>' attribute.
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__SCOPES = INTERACTION_PATTERN__SCOPES;
-
-	/**
-	 * The feature id for the '<em><b>Int Sec</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EVENT__INT_SEC = INTERACTION_PATTERN__INT_SEC;
+	int EVENT__SECURITY = DATA_SCHEMA_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
@@ -551,16 +471,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__FORMS = INTERACTION_PATTERN__FORMS;
+	int EVENT__FORMS = DATA_SCHEMA_FEATURE_COUNT + 3;
 
 	/**
-	 * The feature id for the '<em><b>Base Event</b></em>' reference.
+	 * The feature id for the '<em><b>Base Signal</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__BASE_EVENT = INTERACTION_PATTERN_FEATURE_COUNT + 0;
+	int EVENT__BASE_SIGNAL = DATA_SCHEMA_FEATURE_COUNT + 4;
 
 	/**
 	 * The number of structural features of the '<em>Event</em>' class.
@@ -569,7 +489,62 @@
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT_FEATURE_COUNT = INTERACTION_PATTERN_FEATURE_COUNT + 1;
+	int EVENT_FEATURE_COUNT = DATA_SCHEMA_FEATURE_COUNT + 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl <em>Interaction Pattern</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl
+	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getInteractionPattern()
+	 * @generated
+	 */
+	int INTERACTION_PATTERN = 4;
+
+	/**
+	 * The feature id for the '<em><b>Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION_PATTERN__LABEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Scopes</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION_PATTERN__SCOPES = 1;
+
+	/**
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION_PATTERN__SECURITY = 2;
+
+	/**
+	 * The feature id for the '<em><b>Forms</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION_PATTERN__FORMS = 3;
+
+	/**
+	 * The number of structural features of the '<em>Interaction Pattern</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION_PATTERN_FEATURE_COUNT = 4;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl <em>Form</em>}' class.
@@ -588,116 +563,16 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__BASE_VALUE_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__BASE_VALUE_SPECIFICATION;
+	int FORM__BASE_VALUE_SPECIFICATION = StructurePackage.META_VALUE_SPECIFICATION__BASE_VALUE_SPECIFICATION;
 
 	/**
-	 * The feature id for the '<em><b>Meta Specification</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORM__META_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__META_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Media Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__MEDIA_TYPE = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Rel</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__REL = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Sub Protocol</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__SUB_PROTOCOL = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Scopes</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__SCOPES = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Href</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__HREF = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Form Sec</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM__FORM_SEC = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 5;
-
-	/**
-	 * The number of structural features of the '<em>Form</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORM_FEATURE_COUNT = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 6;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl <em>Data Scheme</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl
-	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getDataScheme()
-	 * @generated
-	 */
-	int DATA_SCHEME = 6;
-
-	/**
-	 * The feature id for the '<em><b>Base Value Specification</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_SCHEME__BASE_VALUE_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__BASE_VALUE_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Meta Specification</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_SCHEME__META_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__META_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_SCHEME__TYPE = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+	int FORM__TYPE = StructurePackage.META_VALUE_SPECIFICATION__TYPE;
 
 	/**
 	 * The feature id for the '<em><b>Description</b></em>' attribute.
@@ -706,71 +581,70 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEME__DESCRIPTION = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 1;
+	int FORM__DESCRIPTION = StructurePackage.META_VALUE_SPECIFICATION__DESCRIPTION;
 
 	/**
-	 * The feature id for the '<em><b>Const</b></em>' reference.
+	 * The feature id for the '<em><b>Href</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEME__CONST = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 2;
+	int FORM__HREF = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Enum</b></em>' reference.
+	 * The feature id for the '<em><b>Media Type</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEME__ENUM = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 3;
+	int FORM__MEDIA_TYPE = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 1;
 
 	/**
-	 * The number of structural features of the '<em>Data Scheme</em>' class.
+	 * The feature id for the '<em><b>Rel</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_SCHEME_FEATURE_COUNT = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 4;
+	int FORM__REL = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 2;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.DateImpl <em>Date</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.papyrus.iotml.wot.impl.DateImpl
-	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getDate()
-	 * @generated
-	 */
-	int DATE = 7;
-
-	/**
-	 * The feature id for the '<em><b>Base Value Specification</b></em>' reference.
+	 * The feature id for the '<em><b>Sub Protocol</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATE__BASE_VALUE_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__BASE_VALUE_SPECIFICATION;
+	int FORM__SUB_PROTOCOL = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 3;
 
 	/**
-	 * The feature id for the '<em><b>Meta Specification</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATE__META_SPECIFICATION = StructurePackage.DETAILED_VALUE_SPECIFICATION__META_SPECIFICATION;
+	int FORM__SECURITY = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 4;
 
 	/**
-	 * The number of structural features of the '<em>Date</em>' class.
+	 * The feature id for the '<em><b>Scopes</b></em>' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int DATE_FEATURE_COUNT = StructurePackage.DETAILED_VALUE_SPECIFICATION_FEATURE_COUNT + 0;
+	int FORM__SCOPES = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Form</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORM_FEATURE_COUNT = StructurePackage.META_VALUE_SPECIFICATION_FEATURE_COUNT + 6;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.ActionImpl <em>Action</em>}' class.
@@ -780,61 +654,7 @@
 	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getAction()
 	 * @generated
 	 */
-	int ACTION = 8;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION__OWNER = INTERACTION_PATTERN__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Base Execution Specification</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION__BASE_EXECUTION_SPECIFICATION = INTERACTION_PATTERN__BASE_EXECUTION_SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Base Behavioral Feature</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION__BASE_BEHAVIORAL_FEATURE = INTERACTION_PATTERN__BASE_BEHAVIORAL_FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Base Behavior</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION__BASE_BEHAVIOR = INTERACTION_PATTERN__BASE_BEHAVIOR;
-
-	/**
-	 * The feature id for the '<em><b>Base Collaboration</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION__BASE_COLLABORATION = INTERACTION_PATTERN__BASE_COLLABORATION;
-
-	/**
-	 * The feature id for the '<em><b>Base Collaboration Use</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION__BASE_COLLABORATION_USE = INTERACTION_PATTERN__BASE_COLLABORATION_USE;
+	int ACTION = 7;
 
 	/**
 	 * The feature id for the '<em><b>Label</b></em>' attribute.
@@ -846,16 +666,7 @@
 	int ACTION__LABEL = INTERACTION_PATTERN__LABEL;
 
 	/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTION__DESCRIPTION = INTERACTION_PATTERN__DESCRIPTION;
-
-	/**
-	 * The feature id for the '<em><b>Scopes</b></em>' attribute.
+	 * The feature id for the '<em><b>Scopes</b></em>' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -864,13 +675,13 @@
 	int ACTION__SCOPES = INTERACTION_PATTERN__SCOPES;
 
 	/**
-	 * The feature id for the '<em><b>Int Sec</b></em>' reference.
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION__INT_SEC = INTERACTION_PATTERN__INT_SEC;
+	int ACTION__SECURITY = INTERACTION_PATTERN__SECURITY;
 
 	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
@@ -900,13 +711,22 @@
 	int ACTION__OUTPUT = INTERACTION_PATTERN_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__BASE_BEHAVIORAL_FEATURE = INTERACTION_PATTERN_FEATURE_COUNT + 2;
+
+	/**
 	 * The number of structural features of the '<em>Action</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTION_FEATURE_COUNT = INTERACTION_PATTERN_FEATURE_COUNT + 2;
+	int ACTION_FEATURE_COUNT = INTERACTION_PATTERN_FEATURE_COUNT + 3;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl <em>Property</em>}' class.
@@ -916,61 +736,61 @@
 	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getProperty()
 	 * @generated
 	 */
-	int PROPERTY = 9;
+	int PROPERTY = 8;
 
 	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * The feature id for the '<em><b>Base Typed Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__OWNER = INTERACTION_PATTERN__OWNER;
+	int PROPERTY__BASE_TYPED_ELEMENT = DATA_SCHEMA__BASE_TYPED_ELEMENT;
 
 	/**
-	 * The feature id for the '<em><b>Base Execution Specification</b></em>' reference.
+	 * The feature id for the '<em><b>Enum</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__BASE_EXECUTION_SPECIFICATION = INTERACTION_PATTERN__BASE_EXECUTION_SPECIFICATION;
+	int PROPERTY__ENUM = DATA_SCHEMA__ENUM;
 
 	/**
-	 * The feature id for the '<em><b>Base Behavioral Feature</b></em>' reference.
+	 * The feature id for the '<em><b>Number Interval</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__BASE_BEHAVIORAL_FEATURE = INTERACTION_PATTERN__BASE_BEHAVIORAL_FEATURE;
+	int PROPERTY__NUMBER_INTERVAL = DATA_SCHEMA__NUMBER_INTERVAL;
 
 	/**
-	 * The feature id for the '<em><b>Base Behavior</b></em>' reference.
+	 * The feature id for the '<em><b>Required</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__BASE_BEHAVIOR = INTERACTION_PATTERN__BASE_BEHAVIOR;
+	int PROPERTY__REQUIRED = DATA_SCHEMA__REQUIRED;
 
 	/**
-	 * The feature id for the '<em><b>Base Collaboration</b></em>' reference.
+	 * The feature id for the '<em><b>Items</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__BASE_COLLABORATION = INTERACTION_PATTERN__BASE_COLLABORATION;
+	int PROPERTY__ITEMS = DATA_SCHEMA__ITEMS;
 
 	/**
-	 * The feature id for the '<em><b>Base Collaboration Use</b></em>' reference.
+	 * The feature id for the '<em><b>Properties</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__BASE_COLLABORATION_USE = INTERACTION_PATTERN__BASE_COLLABORATION_USE;
+	int PROPERTY__PROPERTIES = DATA_SCHEMA__PROPERTIES;
 
 	/**
 	 * The feature id for the '<em><b>Label</b></em>' attribute.
@@ -979,34 +799,25 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__LABEL = INTERACTION_PATTERN__LABEL;
+	int PROPERTY__LABEL = DATA_SCHEMA_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * The feature id for the '<em><b>Scopes</b></em>' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__DESCRIPTION = INTERACTION_PATTERN__DESCRIPTION;
+	int PROPERTY__SCOPES = DATA_SCHEMA_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Scopes</b></em>' attribute.
+	 * The feature id for the '<em><b>Security</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__SCOPES = INTERACTION_PATTERN__SCOPES;
-
-	/**
-	 * The feature id for the '<em><b>Int Sec</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PROPERTY__INT_SEC = INTERACTION_PATTERN__INT_SEC;
+	int PROPERTY__SECURITY = DATA_SCHEMA_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Forms</b></em>' reference list.
@@ -1015,7 +826,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__FORMS = INTERACTION_PATTERN__FORMS;
+	int PROPERTY__FORMS = DATA_SCHEMA_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Observable</b></em>' attribute.
@@ -1024,16 +835,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__OBSERVABLE = INTERACTION_PATTERN_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Base Property</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PROPERTY__BASE_PROPERTY = INTERACTION_PATTERN_FEATURE_COUNT + 1;
+	int PROPERTY__OBSERVABLE = DATA_SCHEMA_FEATURE_COUNT + 4;
 
 	/**
 	 * The number of structural features of the '<em>Property</em>' class.
@@ -1042,7 +844,37 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY_FEATURE_COUNT = INTERACTION_PATTERN_FEATURE_COUNT + 2;
+	int PROPERTY_FEATURE_COUNT = DATA_SCHEMA_FEATURE_COUNT + 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.SecuritySchemeKind <em>Security Scheme Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.wot.SecuritySchemeKind
+	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getSecuritySchemeKind()
+	 * @generated
+	 */
+	int SECURITY_SCHEME_KIND = 9;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.RelKind <em>Rel Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.wot.RelKind
+	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getRelKind()
+	 * @generated
+	 */
+	int REL_KIND = 10;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.iotml.wot.SubProtocolKind <em>Sub Protocol Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.iotml.wot.SubProtocolKind
+	 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getSubProtocolKind()
+	 * @generated
+	 */
+	int SUB_PROTOCOL_KIND = 11;
 
 
 	/**
@@ -1078,15 +910,15 @@
 	EAttribute getThing_Support();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Thing#getThingSec <em>Thing Sec</em>}'.
+	 * 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 '<em>Thing Sec</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Thing#getThingSec()
+	 * @return the meta object for the reference list '<em>Security</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getSecurity()
 	 * @see #getThing()
 	 * @generated
 	 */
-	EReference getThing_ThingSec();
+	EReference getThing_Security();
 
 	/**
 	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Thing#getBase <em>Base</em>}'.
@@ -1111,26 +943,26 @@
 	EReference getThing_Links();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Thing#getEvent <em>Event</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getEvents <em>Events</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Event</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Thing#getEvent()
+	 * @return the meta object for the reference list '<em>Events</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getEvents()
 	 * @see #getThing()
 	 * @generated
 	 */
-	EReference getThing_Event();
+	EReference getThing_Events();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Thing#getAction <em>Action</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getActions <em>Actions</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Action</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Thing#getAction()
+	 * @return the meta object for the reference list '<em>Actions</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Thing#getActions()
 	 * @see #getThing()
 	 * @generated
 	 */
-	EReference getThing_Action();
+	EReference getThing_Actions();
 
 	/**
 	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.Thing#getProperties <em>Properties</em>}'.
@@ -1165,17 +997,6 @@
 	EAttribute getSecurityScheme_Scheme();
 
 	/**
-	 * 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 reference '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getProxyUrl <em>Proxy Url</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1187,6 +1008,17 @@
 	EReference getSecurityScheme_ProxyUrl();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.SecurityScheme#getBase_Classifier <em>Base Classifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Classifier</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.SecurityScheme#getBase_Classifier()
+	 * @see #getSecurityScheme()
+	 * @generated
+	 */
+	EReference getSecurityScheme_Base_Classifier();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.Link <em>Link</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1197,6 +1029,17 @@
 	EClass getLink();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Link#getHref <em>Href</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Href</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Link#getHref()
+	 * @see #getLink()
+	 * @generated
+	 */
+	EAttribute getLink_Href();
+
+	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Link#getMediaType <em>Media Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1219,26 +1062,26 @@
 	EAttribute getLink_Rel();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Link#getHref <em>Href</em>}'.
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Link#getAnchor <em>Anchor</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Href</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Link#getHref()
-	 * @see #getLink()
-	 * @generated
-	 */
-	EReference getLink_Href();
-
-	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Link#getAnchor <em>Anchor</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Anchor</em>'.
+	 * @return the meta object for the attribute '<em>Anchor</em>'.
 	 * @see org.eclipse.papyrus.iotml.wot.Link#getAnchor()
 	 * @see #getLink()
 	 * @generated
 	 */
-	EReference getLink_Anchor();
+	EAttribute getLink_Anchor();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Link#getBase_PrimitiveType <em>Base Primitive Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Primitive Type</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Link#getBase_PrimitiveType()
+	 * @see #getLink()
+	 * @generated
+	 */
+	EReference getLink_Base_PrimitiveType();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.Event <em>Event</em>}'.
@@ -1251,15 +1094,15 @@
 	EClass getEvent();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Event#getBase_Event <em>Base Event</em>}'.
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Event#getBase_Signal <em>Base Signal</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Base Event</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Event#getBase_Event()
+	 * @return the meta object for the reference '<em>Base Signal</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Event#getBase_Signal()
 	 * @see #getEvent()
 	 * @generated
 	 */
-	EReference getEvent_Base_Event();
+	EReference getEvent_Base_Signal();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern <em>Interaction Pattern</em>}'.
@@ -1283,21 +1126,10 @@
 	EAttribute getInteractionPattern_Label();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getDescription <em>Description</em>}'.
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getScopes <em>Scopes</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.InteractionPattern#getDescription()
-	 * @see #getInteractionPattern()
-	 * @generated
-	 */
-	EAttribute getInteractionPattern_Description();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getScopes <em>Scopes</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Scopes</em>'.
+	 * @return the meta object for the attribute list '<em>Scopes</em>'.
 	 * @see org.eclipse.papyrus.iotml.wot.InteractionPattern#getScopes()
 	 * @see #getInteractionPattern()
 	 * @generated
@@ -1305,15 +1137,15 @@
 	EAttribute getInteractionPattern_Scopes();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getIntSec <em>Int Sec</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getSecurity <em>Security</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Int Sec</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.InteractionPattern#getIntSec()
+	 * @return the meta object for the reference list '<em>Security</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.InteractionPattern#getSecurity()
 	 * @see #getInteractionPattern()
 	 * @generated
 	 */
-	EReference getInteractionPattern_IntSec();
+	EReference getInteractionPattern_Security();
 
 	/**
 	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.InteractionPattern#getForms <em>Forms</em>}'.
@@ -1337,6 +1169,17 @@
 	EClass getForm();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Form#getHref <em>Href</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Href</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.Form#getHref()
+	 * @see #getForm()
+	 * @generated
+	 */
+	EReference getForm_Href();
+
+	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Form#getMediaType <em>Media Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1370,10 +1213,21 @@
 	EAttribute getForm_SubProtocol();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.Form#getScopes <em>Scopes</em>}'.
+	 * 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 attribute '<em>Scopes</em>'.
+	 * @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 attribute list '{@link org.eclipse.papyrus.iotml.wot.Form#getScopes <em>Scopes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Scopes</em>'.
 	 * @see org.eclipse.papyrus.iotml.wot.Form#getScopes()
 	 * @see #getForm()
 	 * @generated
@@ -1381,90 +1235,80 @@
 	EAttribute getForm_Scopes();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Form#getHref <em>Href</em>}'.
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.DataSchema <em>Data Schema</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Href</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Form#getHref()
-	 * @see #getForm()
+	 * @return the meta object for class '<em>Data Schema</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema
 	 * @generated
 	 */
-	EReference getForm_Href();
+	EClass getDataSchema();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Form#getFormSec <em>Form Sec</em>}'.
+	 * 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 -->
-	 * @return the meta object for the reference '<em>Form Sec</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Form#getFormSec()
-	 * @see #getForm()
+	 * @return the meta object for the reference '<em>Base Typed Element</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getBase_TypedElement()
+	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EReference getForm_FormSec();
+	EReference getDataSchema_Base_TypedElement();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.DataScheme <em>Data Scheme</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getEnum <em>Enum</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Data Scheme</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.DataScheme
+	 * @return the meta object for the reference list '<em>Enum</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getEnum()
+	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EClass getDataScheme();
+	EReference getDataSchema_Enum();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataScheme#getType <em>Type</em>}'.
+	 * 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 attribute '<em>Type</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.DataScheme#getType()
-	 * @see #getDataScheme()
+	 * @return the meta object for the reference '<em>Number Interval</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getNumberInterval()
+	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EAttribute getDataScheme_Type();
+	EReference getDataSchema_NumberInterval();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.iotml.wot.DataScheme#getDescription <em>Description</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getRequired <em>Required</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Description</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.DataScheme#getDescription()
-	 * @see #getDataScheme()
+	 * @return the meta object for the reference list '<em>Required</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getRequired()
+	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EAttribute getDataScheme_Description();
+	EReference getDataSchema_Required();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.DataScheme#getConst <em>Const</em>}'.
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getItems <em>Items</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Const</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.DataScheme#getConst()
-	 * @see #getDataScheme()
+	 * @return the meta object for the reference list '<em>Items</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getItems()
+	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EReference getDataScheme_Const();
+	EReference getDataSchema_Items();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.DataScheme#getEnum <em>Enum</em>}'.
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.DataSchema#getProperties <em>Properties</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Enum</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.DataScheme#getEnum()
-	 * @see #getDataScheme()
+	 * @return the meta object for the reference '<em>Properties</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema#getProperties()
+	 * @see #getDataSchema()
 	 * @generated
 	 */
-	EReference getDataScheme_Enum();
-
-	/**
-	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.Date <em>Date</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Date</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Date
-	 * @generated
-	 */
-	EClass getDate();
+	EReference getDataSchema_Properties();
 
 	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.Action <em>Action</em>}'.
@@ -1499,6 +1343,17 @@
 	EReference getAction_Output();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Action#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.Action#getBase_BehavioralFeature()
+	 * @see #getAction()
+	 * @generated
+	 */
+	EReference getAction_Base_BehavioralFeature();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.papyrus.iotml.wot.Property <em>Property</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1520,15 +1375,34 @@
 	EAttribute getProperty_Observable();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.iotml.wot.Property#getBase_Property <em>Base Property</em>}'.
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.iotml.wot.SecuritySchemeKind <em>Security Scheme Kind</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Base Property</em>'.
-	 * @see org.eclipse.papyrus.iotml.wot.Property#getBase_Property()
-	 * @see #getProperty()
+	 * @return the meta object for enum '<em>Security Scheme Kind</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.SecuritySchemeKind
 	 * @generated
 	 */
-	EReference getProperty_Base_Property();
+	EEnum getSecuritySchemeKind();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.iotml.wot.RelKind <em>Rel Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Rel Kind</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.RelKind
+	 * @generated
+	 */
+	EEnum getRelKind();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.iotml.wot.SubProtocolKind <em>Sub Protocol Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Sub Protocol Kind</em>'.
+	 * @see org.eclipse.papyrus.iotml.wot.SubProtocolKind
+	 * @generated
+	 */
+	EEnum getSubProtocolKind();
 
 	/**
 	 * Returns the factory that creates the instances of the model.
@@ -1579,12 +1453,12 @@
 		EAttribute THING__SUPPORT = eINSTANCE.getThing_Support();
 
 		/**
-		 * The meta object literal for the '<em><b>Thing Sec</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Security</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference THING__THING_SEC = eINSTANCE.getThing_ThingSec();
+		EReference THING__SECURITY = eINSTANCE.getThing_Security();
 
 		/**
 		 * The meta object literal for the '<em><b>Base</b></em>' reference feature.
@@ -1603,20 +1477,20 @@
 		EReference THING__LINKS = eINSTANCE.getThing_Links();
 
 		/**
-		 * The meta object literal for the '<em><b>Event</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Events</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference THING__EVENT = eINSTANCE.getThing_Event();
+		EReference THING__EVENTS = eINSTANCE.getThing_Events();
 
 		/**
-		 * The meta object literal for the '<em><b>Action</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Actions</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference THING__ACTION = eINSTANCE.getThing_Action();
+		EReference THING__ACTIONS = eINSTANCE.getThing_Actions();
 
 		/**
 		 * The meta object literal for the '<em><b>Properties</b></em>' reference list feature.
@@ -1645,14 +1519,6 @@
 		EAttribute SECURITY_SCHEME__SCHEME = eINSTANCE.getSecurityScheme_Scheme();
 
 		/**
-		 * 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>Proxy Url</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1661,6 +1527,14 @@
 		EReference SECURITY_SCHEME__PROXY_URL = eINSTANCE.getSecurityScheme_ProxyUrl();
 
 		/**
+		 * The meta object literal for the '<em><b>Base Classifier</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SECURITY_SCHEME__BASE_CLASSIFIER = eINSTANCE.getSecurityScheme_Base_Classifier();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl <em>Link</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1671,6 +1545,14 @@
 		EClass LINK = eINSTANCE.getLink();
 
 		/**
+		 * The meta object literal for the '<em><b>Href</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINK__HREF = eINSTANCE.getLink_Href();
+
+		/**
 		 * The meta object literal for the '<em><b>Media Type</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1687,20 +1569,20 @@
 		EAttribute LINK__REL = eINSTANCE.getLink_Rel();
 
 		/**
-		 * The meta object literal for the '<em><b>Href</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Anchor</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference LINK__HREF = eINSTANCE.getLink_Href();
+		EAttribute LINK__ANCHOR = eINSTANCE.getLink_Anchor();
 
 		/**
-		 * The meta object literal for the '<em><b>Anchor</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Base Primitive Type</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference LINK__ANCHOR = eINSTANCE.getLink_Anchor();
+		EReference LINK__BASE_PRIMITIVE_TYPE = eINSTANCE.getLink_Base_PrimitiveType();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl <em>Event</em>}' class.
@@ -1713,12 +1595,12 @@
 		EClass EVENT = eINSTANCE.getEvent();
 
 		/**
-		 * The meta object literal for the '<em><b>Base Event</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Base Signal</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference EVENT__BASE_EVENT = eINSTANCE.getEvent_Base_Event();
+		EReference EVENT__BASE_SIGNAL = eINSTANCE.getEvent_Base_Signal();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl <em>Interaction Pattern</em>}' class.
@@ -1739,15 +1621,7 @@
 		EAttribute INTERACTION_PATTERN__LABEL = eINSTANCE.getInteractionPattern_Label();
 
 		/**
-		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute INTERACTION_PATTERN__DESCRIPTION = eINSTANCE.getInteractionPattern_Description();
-
-		/**
-		 * The meta object literal for the '<em><b>Scopes</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Scopes</b></em>' attribute list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
@@ -1755,12 +1629,12 @@
 		EAttribute INTERACTION_PATTERN__SCOPES = eINSTANCE.getInteractionPattern_Scopes();
 
 		/**
-		 * The meta object literal for the '<em><b>Int Sec</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Security</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference INTERACTION_PATTERN__INT_SEC = eINSTANCE.getInteractionPattern_IntSec();
+		EReference INTERACTION_PATTERN__SECURITY = eINSTANCE.getInteractionPattern_Security();
 
 		/**
 		 * The meta object literal for the '<em><b>Forms</b></em>' reference list feature.
@@ -1781,6 +1655,14 @@
 		EClass FORM = eINSTANCE.getForm();
 
 		/**
+		 * The meta object literal for the '<em><b>Href</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FORM__HREF = eINSTANCE.getForm_Href();
+
+		/**
 		 * The meta object literal for the '<em><b>Media Type</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1805,7 +1687,15 @@
 		EAttribute FORM__SUB_PROTOCOL = eINSTANCE.getForm_SubProtocol();
 
 		/**
-		 * The meta object literal for the '<em><b>Scopes</b></em>' attribute feature.
+		 * 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>Scopes</b></em>' attribute list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
@@ -1813,72 +1703,62 @@
 		EAttribute FORM__SCOPES = eINSTANCE.getForm_Scopes();
 
 		/**
-		 * The meta object literal for the '<em><b>Href</b></em>' reference feature.
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl <em>Data Schema</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.wot.impl.DataSchemaImpl
+		 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getDataSchema()
 		 * @generated
 		 */
-		EReference FORM__HREF = eINSTANCE.getForm_Href();
+		EClass DATA_SCHEMA = eINSTANCE.getDataSchema();
 
 		/**
-		 * The meta object literal for the '<em><b>Form Sec</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Base Typed Element</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference FORM__FORM_SEC = eINSTANCE.getForm_FormSec();
+		EReference DATA_SCHEMA__BASE_TYPED_ELEMENT = eINSTANCE.getDataSchema_Base_TypedElement();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl <em>Data Scheme</em>}' class.
+		 * The meta object literal for the '<em><b>Enum</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
-		 * @see org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl
-		 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getDataScheme()
 		 * @generated
 		 */
-		EClass DATA_SCHEME = eINSTANCE.getDataScheme();
+		EReference DATA_SCHEMA__ENUM = eINSTANCE.getDataSchema_Enum();
 
 		/**
-		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Number Interval</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute DATA_SCHEME__TYPE = eINSTANCE.getDataScheme_Type();
+		EReference DATA_SCHEMA__NUMBER_INTERVAL = eINSTANCE.getDataSchema_NumberInterval();
 
 		/**
-		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Required</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute DATA_SCHEME__DESCRIPTION = eINSTANCE.getDataScheme_Description();
+		EReference DATA_SCHEMA__REQUIRED = eINSTANCE.getDataSchema_Required();
 
 		/**
-		 * The meta object literal for the '<em><b>Const</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Items</b></em>' reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference DATA_SCHEME__CONST = eINSTANCE.getDataScheme_Const();
+		EReference DATA_SCHEMA__ITEMS = eINSTANCE.getDataSchema_Items();
 
 		/**
-		 * The meta object literal for the '<em><b>Enum</b></em>' reference feature.
+		 * The meta object literal for the '<em><b>Properties</b></em>' reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference DATA_SCHEME__ENUM = eINSTANCE.getDataScheme_Enum();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.DateImpl <em>Date</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.papyrus.iotml.wot.impl.DateImpl
-		 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getDate()
-		 * @generated
-		 */
-		EClass DATE = eINSTANCE.getDate();
+		EReference DATA_SCHEMA__PROPERTIES = eINSTANCE.getDataSchema_Properties();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.ActionImpl <em>Action</em>}' class.
@@ -1907,6 +1787,14 @@
 		EReference ACTION__OUTPUT = eINSTANCE.getAction_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__BASE_BEHAVIORAL_FEATURE = eINSTANCE.getAction_Base_BehavioralFeature();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl <em>Property</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1925,12 +1813,34 @@
 		EAttribute PROPERTY__OBSERVABLE = eINSTANCE.getProperty_Observable();
 
 		/**
-		 * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.SecuritySchemeKind <em>Security Scheme Kind</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.wot.SecuritySchemeKind
+		 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getSecuritySchemeKind()
 		 * @generated
 		 */
-		EReference PROPERTY__BASE_PROPERTY = eINSTANCE.getProperty_Base_Property();
+		EEnum SECURITY_SCHEME_KIND = eINSTANCE.getSecuritySchemeKind();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.RelKind <em>Rel Kind</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.wot.RelKind
+		 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getRelKind()
+		 * @generated
+		 */
+		EEnum REL_KIND = eINSTANCE.getRelKind();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.iotml.wot.SubProtocolKind <em>Sub Protocol Kind</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.iotml.wot.SubProtocolKind
+		 * @see org.eclipse.papyrus.iotml.wot.impl.WoTPackageImpl#getSubProtocolKind()
+		 * @generated
+		 */
+		EEnum SUB_PROTOCOL_KIND = eINSTANCE.getSubProtocolKind();
 
 	}
 
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionImpl.java
index f3db5f1..32cb897 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/ActionImpl.java
@@ -21,9 +21,11 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.papyrus.iotml.wot.Action;
-import org.eclipse.papyrus.iotml.wot.DataScheme;
+import org.eclipse.papyrus.iotml.wot.DataSchema;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
+import org.eclipse.uml2.uml.BehavioralFeature;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Action</b></em>'.
@@ -34,6 +36,7 @@
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionImpl#getInput <em>Input</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionImpl#getOutput <em>Output</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ActionImpl#getBase_BehavioralFeature <em>Base Behavioral Feature</em>}</li>
  * </ul>
  *
  * @generated
@@ -47,7 +50,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected DataScheme input;
+	protected DataSchema input;
 
 	/**
 	 * The cached value of the '{@link #getOutput() <em>Output</em>}' reference.
@@ -57,7 +60,17 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected DataScheme output;
+	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;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -84,10 +97,10 @@
 	 * @generated
 	 */
 	@Override
-	public DataScheme getInput() {
+	public DataSchema getInput() {
 		if (input != null && input.eIsProxy()) {
 			InternalEObject oldInput = (InternalEObject)input;
-			input = (DataScheme)eResolveProxy(oldInput);
+			input = (DataSchema)eResolveProxy(oldInput);
 			if (input != oldInput) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.ACTION__INPUT, oldInput, input));
@@ -101,7 +114,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public DataScheme basicGetInput() {
+	public DataSchema basicGetInput() {
 		return input;
 	}
 
@@ -111,8 +124,8 @@
 	 * @generated
 	 */
 	@Override
-	public void setInput(DataScheme newInput) {
-		DataScheme oldInput = input;
+	public void setInput(DataSchema newInput) {
+		DataSchema oldInput = input;
 		input = newInput;
 		if (eNotificationRequired())
 			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.ACTION__INPUT, oldInput, input));
@@ -124,10 +137,10 @@
 	 * @generated
 	 */
 	@Override
-	public DataScheme getOutput() {
+	public DataSchema getOutput() {
 		if (output != null && output.eIsProxy()) {
 			InternalEObject oldOutput = (InternalEObject)output;
-			output = (DataScheme)eResolveProxy(oldOutput);
+			output = (DataSchema)eResolveProxy(oldOutput);
 			if (output != oldOutput) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.ACTION__OUTPUT, oldOutput, output));
@@ -141,7 +154,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public DataScheme basicGetOutput() {
+	public DataSchema basicGetOutput() {
 		return output;
 	}
 
@@ -151,8 +164,8 @@
 	 * @generated
 	 */
 	@Override
-	public void setOutput(DataScheme newOutput) {
-		DataScheme oldOutput = output;
+	public void setOutput(DataSchema newOutput) {
+		DataSchema oldOutput = output;
 		output = newOutput;
 		if (eNotificationRequired())
 			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.ACTION__OUTPUT, oldOutput, output));
@@ -164,6 +177,46 @@
 	 * @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__BASE_BEHAVIORAL_FEATURE, oldBase_BehavioralFeature, base_BehavioralFeature));
+			}
+		}
+		return base_BehavioralFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BehavioralFeature basicGetBase_BehavioralFeature() {
+		return base_BehavioralFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @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__BASE_BEHAVIORAL_FEATURE, oldBase_BehavioralFeature, base_BehavioralFeature));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case WoTPackage.ACTION__INPUT:
@@ -172,6 +225,9 @@
 			case WoTPackage.ACTION__OUTPUT:
 				if (resolve) return getOutput();
 				return basicGetOutput();
+			case WoTPackage.ACTION__BASE_BEHAVIORAL_FEATURE:
+				if (resolve) return getBase_BehavioralFeature();
+				return basicGetBase_BehavioralFeature();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -185,10 +241,13 @@
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case WoTPackage.ACTION__INPUT:
-				setInput((DataScheme)newValue);
+				setInput((DataSchema)newValue);
 				return;
 			case WoTPackage.ACTION__OUTPUT:
-				setOutput((DataScheme)newValue);
+				setOutput((DataSchema)newValue);
+				return;
+			case WoTPackage.ACTION__BASE_BEHAVIORAL_FEATURE:
+				setBase_BehavioralFeature((BehavioralFeature)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -203,10 +262,13 @@
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case WoTPackage.ACTION__INPUT:
-				setInput((DataScheme)null);
+				setInput((DataSchema)null);
 				return;
 			case WoTPackage.ACTION__OUTPUT:
-				setOutput((DataScheme)null);
+				setOutput((DataSchema)null);
+				return;
+			case WoTPackage.ACTION__BASE_BEHAVIORAL_FEATURE:
+				setBase_BehavioralFeature((BehavioralFeature)null);
 				return;
 		}
 		super.eUnset(featureID);
@@ -224,6 +286,8 @@
 				return input != null;
 			case WoTPackage.ACTION__OUTPUT:
 				return output != null;
+			case WoTPackage.ACTION__BASE_BEHAVIORAL_FEATURE:
+				return base_BehavioralFeature != null;
 		}
 		return super.eIsSet(featureID);
 	}
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
new file mode 100644
index 0000000..7052564
--- /dev/null
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemaImpl.java
@@ -0,0 +1,439 @@
+/**
+ * Copyright (c) 2018 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:
+ *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
+ *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.iotml.wot.impl;
+
+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.impl.MinimalEObjectImpl;
+
+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.WoTPackage;
+
+import org.eclipse.uml2.uml.Interval;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.TypedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Schema</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <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>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataSchemaImpl extends MinimalEObjectImpl.Container implements DataSchema {
+	/**
+	 * The cached value of the '{@link #getBase_TypedElement() <em>Base Typed Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_TypedElement()
+	 * @generated
+	 * @ordered
+	 */
+	protected TypedElement base_TypedElement;
+
+	/**
+	 * The cached value of the '{@link #getEnum() <em>Enum</em>}' reference 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;
+
+	/**
+	 * The cached value of the '{@link #getRequired() <em>Required</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRequired()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Property> required;
+
+	/**
+	 * The cached value of the '{@link #getItems() <em>Items</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItems()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<DataSchema> items;
+
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected DataSchema properties;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DataSchemaImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return WoTPackage.Literals.DATA_SCHEMA;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TypedElement getBase_TypedElement() {
+		if (base_TypedElement != null && base_TypedElement.eIsProxy()) {
+			InternalEObject oldBase_TypedElement = (InternalEObject)base_TypedElement;
+			base_TypedElement = (TypedElement)eResolveProxy(oldBase_TypedElement);
+			if (base_TypedElement != oldBase_TypedElement) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT, oldBase_TypedElement, base_TypedElement));
+			}
+		}
+		return base_TypedElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypedElement basicGetBase_TypedElement() {
+		return base_TypedElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_TypedElement(TypedElement newBase_TypedElement) {
+		TypedElement oldBase_TypedElement = base_TypedElement;
+		base_TypedElement = newBase_TypedElement;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEMA__BASE_TYPED_ELEMENT, oldBase_TypedElement, base_TypedElement));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<MetaValueSpecification> getEnum() {
+		if (enum_ == null) {
+			enum_ = new EObjectResolvingEList<MetaValueSpecification>(MetaValueSpecification.class, this, WoTPackage.DATA_SCHEMA__ENUM);
+		}
+		return enum_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @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
+	public EList<Property> getRequired() {
+		if (required == null) {
+			required = new EObjectResolvingEList<Property>(Property.class, this, WoTPackage.DATA_SCHEMA__REQUIRED);
+		}
+		return required;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property getRequired(String name, Type type) {
+		return getRequired(name, type, false, null);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Property getRequired(String name, Type type, boolean ignoreCase, EClass eClass) {
+		requiredLoop: for (Property required : getRequired()) {
+			if (eClass != null && !eClass.isInstance(required))
+				continue requiredLoop;
+			if (name != null && !(ignoreCase ? name.equalsIgnoreCase(required.getName()) : name.equals(required.getName())))
+				continue requiredLoop;
+			if (type != null && !type.equals(required.getType()))
+				continue requiredLoop;
+			return required;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<DataSchema> getItems() {
+		if (items == null) {
+			items = new EObjectResolvingEList<DataSchema>(DataSchema.class, this, WoTPackage.DATA_SCHEMA__ITEMS);
+		}
+		return items;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DataSchema getProperties() {
+		if (properties != null && properties.eIsProxy()) {
+			InternalEObject oldProperties = (InternalEObject)properties;
+			properties = (DataSchema)eResolveProxy(oldProperties);
+			if (properties != oldProperties) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEMA__PROPERTIES, oldProperties, properties));
+			}
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataSchema basicGetProperties() {
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setProperties(DataSchema newProperties) {
+		DataSchema oldProperties = properties;
+		properties = newProperties;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEMA__PROPERTIES, oldProperties, properties));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			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:
+				if (resolve) return getProperties();
+				return basicGetProperties();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			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);
+				return;
+			case WoTPackage.DATA_SCHEMA__REQUIRED:
+				getRequired().clear();
+				getRequired().addAll((Collection<? extends Property>)newValue);
+				return;
+			case WoTPackage.DATA_SCHEMA__ITEMS:
+				getItems().clear();
+				getItems().addAll((Collection<? extends DataSchema>)newValue);
+				return;
+			case WoTPackage.DATA_SCHEMA__PROPERTIES:
+				setProperties((DataSchema)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			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;
+			case WoTPackage.DATA_SCHEMA__ITEMS:
+				getItems().clear();
+				return;
+			case WoTPackage.DATA_SCHEMA__PROPERTIES:
+				setProperties((DataSchema)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			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;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //DataSchemaImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemeImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemeImpl.java
deleted file mode 100644
index 6511e69..0000000
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DataSchemeImpl.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/**
- * Copyright (c) 2018 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:
- *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
- *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
- * 
- */
-package org.eclipse.papyrus.iotml.wot.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.software.core.structure.impl.DetailedValueSpecificationImpl;
-import org.eclipse.papyrus.iotml.wot.DataScheme;
-import org.eclipse.papyrus.iotml.wot.Date;
-import org.eclipse.papyrus.iotml.wot.WoTPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Data Scheme</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl#getType <em>Type</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl#getDescription <em>Description</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl#getConst <em>Const</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.DataSchemeImpl#getEnum <em>Enum</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class DataSchemeImpl extends DetailedValueSpecificationImpl implements DataScheme {
-	/**
-	 * 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 cached value of the '{@link #getType() <em>Type</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getType()
-	 * @generated
-	 * @ordered
-	 */
-	protected String type = TYPE_EDEFAULT;
-
-	/**
-	 * 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 #getDescription() <em>Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDescription()
-	 * @generated
-	 * @ordered
-	 */
-	protected String description = DESCRIPTION_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getConst() <em>Const</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getConst()
-	 * @generated
-	 * @ordered
-	 */
-	protected Date const_;
-
-	/**
-	 * The cached value of the '{@link #getEnum() <em>Enum</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getEnum()
-	 * @generated
-	 * @ordered
-	 */
-	protected Date enum_;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected DataSchemeImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return WoTPackage.Literals.DATA_SCHEME;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getType() {
-		return type;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setType(String newType) {
-		String oldType = type;
-		type = newType;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEME__TYPE, oldType, type));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setDescription(String newDescription) {
-		String oldDescription = description;
-		description = newDescription;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEME__DESCRIPTION, oldDescription, description));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Date getConst() {
-		if (const_ != null && const_.eIsProxy()) {
-			InternalEObject oldConst = (InternalEObject)const_;
-			const_ = (Date)eResolveProxy(oldConst);
-			if (const_ != oldConst) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEME__CONST, oldConst, const_));
-			}
-		}
-		return const_;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Date basicGetConst() {
-		return const_;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setConst(Date newConst) {
-		Date oldConst = const_;
-		const_ = newConst;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEME__CONST, oldConst, const_));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Date getEnum() {
-		if (enum_ != null && enum_.eIsProxy()) {
-			InternalEObject oldEnum = (InternalEObject)enum_;
-			enum_ = (Date)eResolveProxy(oldEnum);
-			if (enum_ != oldEnum) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.DATA_SCHEME__ENUM, oldEnum, enum_));
-			}
-		}
-		return enum_;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Date basicGetEnum() {
-		return enum_;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setEnum(Date newEnum) {
-		Date oldEnum = enum_;
-		enum_ = newEnum;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.DATA_SCHEME__ENUM, oldEnum, enum_));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object eGet(int featureID, boolean resolve, boolean coreType) {
-		switch (featureID) {
-			case WoTPackage.DATA_SCHEME__TYPE:
-				return getType();
-			case WoTPackage.DATA_SCHEME__DESCRIPTION:
-				return getDescription();
-			case WoTPackage.DATA_SCHEME__CONST:
-				if (resolve) return getConst();
-				return basicGetConst();
-			case WoTPackage.DATA_SCHEME__ENUM:
-				if (resolve) return getEnum();
-				return basicGetEnum();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case WoTPackage.DATA_SCHEME__TYPE:
-				setType((String)newValue);
-				return;
-			case WoTPackage.DATA_SCHEME__DESCRIPTION:
-				setDescription((String)newValue);
-				return;
-			case WoTPackage.DATA_SCHEME__CONST:
-				setConst((Date)newValue);
-				return;
-			case WoTPackage.DATA_SCHEME__ENUM:
-				setEnum((Date)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case WoTPackage.DATA_SCHEME__TYPE:
-				setType(TYPE_EDEFAULT);
-				return;
-			case WoTPackage.DATA_SCHEME__DESCRIPTION:
-				setDescription(DESCRIPTION_EDEFAULT);
-				return;
-			case WoTPackage.DATA_SCHEME__CONST:
-				setConst((Date)null);
-				return;
-			case WoTPackage.DATA_SCHEME__ENUM:
-				setEnum((Date)null);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case WoTPackage.DATA_SCHEME__TYPE:
-				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
-			case WoTPackage.DATA_SCHEME__DESCRIPTION:
-				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
-			case WoTPackage.DATA_SCHEME__CONST:
-				return const_ != null;
-			case WoTPackage.DATA_SCHEME__ENUM:
-				return enum_ != null;
-		}
-		return super.eIsSet(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy()) return super.toString();
-
-		StringBuilder result = new StringBuilder(super.toString());
-		result.append(" (type: ");
-		result.append(type);
-		result.append(", description: ");
-		result.append(description);
-		result.append(')');
-		return result.toString();
-	}
-
-} //DataSchemeImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DateImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DateImpl.java
deleted file mode 100644
index 936c81d..0000000
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/DateImpl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Copyright (c) 2018 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:
- *   Jérémie Tatibouet (CEA) jeremie.tatibouet@cea.fr - Initial API and implementation
- *   Benoit Maggi (CEA) benoit.maggi@cea.fr - Initial API and implementation
- * 
- */
-package org.eclipse.papyrus.iotml.wot.impl;
-
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.papyrus.iotml.software.core.structure.impl.DetailedValueSpecificationImpl;
-import org.eclipse.papyrus.iotml.wot.Date;
-import org.eclipse.papyrus.iotml.wot.WoTPackage;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Date</b></em>'.
- * <!-- end-user-doc -->
- *
- * @generated
- */
-public class DateImpl extends DetailedValueSpecificationImpl implements Date {
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected DateImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return WoTPackage.Literals.DATE;
-	}
-
-} //DateImpl
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventImpl.java
index 46edaa9..2ede9ae 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/EventImpl.java
@@ -13,14 +13,28 @@
  */
 package org.eclipse.papyrus.iotml.wot.impl;
 
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EClass;
+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.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
 import org.eclipse.papyrus.iotml.wot.Event;
+import org.eclipse.papyrus.iotml.wot.Form;
+import org.eclipse.papyrus.iotml.wot.InteractionPattern;
+import org.eclipse.papyrus.iotml.wot.SecurityScheme;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
+import org.eclipse.uml2.uml.Signal;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Event</b></em>'.
@@ -29,21 +43,75 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl#getBase_Event <em>Base Event</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl#getLabel <em>Label</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl#getScopes <em>Scopes</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl#getSecurity <em>Security</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl#getForms <em>Forms</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.EventImpl#getBase_Signal <em>Base Signal</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class EventImpl extends InteractionPatternImpl implements Event {
+public class EventImpl extends DataSchemaImpl implements Event {
 	/**
-	 * The cached value of the '{@link #getBase_Event() <em>Base Event</em>}' reference.
+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getBase_Event()
+	 * @see #getLabel()
 	 * @generated
 	 * @ordered
 	 */
-	protected org.eclipse.uml2.uml.Event base_Event;
+	protected static final String LABEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String label = LABEL_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 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 #getForms() <em>Forms</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getForms()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Form> forms;
+
+	/**
+	 * The cached value of the '{@link #getBase_Signal() <em>Base Signal</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Signal()
+	 * @generated
+	 * @ordered
+	 */
+	protected Signal base_Signal;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -70,25 +138,8 @@
 	 * @generated
 	 */
 	@Override
-	public org.eclipse.uml2.uml.Event getBase_Event() {
-		if (base_Event != null && base_Event.eIsProxy()) {
-			InternalEObject oldBase_Event = (InternalEObject)base_Event;
-			base_Event = (org.eclipse.uml2.uml.Event)eResolveProxy(oldBase_Event);
-			if (base_Event != oldBase_Event) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.EVENT__BASE_EVENT, oldBase_Event, base_Event));
-			}
-		}
-		return base_Event;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public org.eclipse.uml2.uml.Event basicGetBase_Event() {
-		return base_Event;
+	public String getLabel() {
+		return label;
 	}
 
 	/**
@@ -97,11 +148,90 @@
 	 * @generated
 	 */
 	@Override
-	public void setBase_Event(org.eclipse.uml2.uml.Event newBase_Event) {
-		org.eclipse.uml2.uml.Event oldBase_Event = base_Event;
-		base_Event = newBase_Event;
+	public void setLabel(String newLabel) {
+		String oldLabel = label;
+		label = newLabel;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.EVENT__BASE_EVENT, oldBase_Event, base_Event));
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.EVENT__LABEL, oldLabel, label));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<String> getScopes() {
+		if (scopes == null) {
+			scopes = new EDataTypeUniqueEList<String>(String.class, this, WoTPackage.EVENT__SCOPES);
+		}
+		return scopes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<SecurityScheme> getSecurity() {
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.EVENT__SECURITY);
+		}
+		return security;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Form> getForms() {
+		if (forms == null) {
+			forms = new EObjectResolvingEList<Form>(Form.class, this, WoTPackage.EVENT__FORMS);
+		}
+		return forms;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @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__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__BASE_SIGNAL, oldBase_Signal, base_Signal));
 	}
 
 	/**
@@ -112,9 +242,17 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case WoTPackage.EVENT__BASE_EVENT:
-				if (resolve) return getBase_Event();
-				return basicGetBase_Event();
+			case WoTPackage.EVENT__LABEL:
+				return getLabel();
+			case WoTPackage.EVENT__SCOPES:
+				return getScopes();
+			case WoTPackage.EVENT__SECURITY:
+				return getSecurity();
+			case WoTPackage.EVENT__FORMS:
+				return getForms();
+			case WoTPackage.EVENT__BASE_SIGNAL:
+				if (resolve) return getBase_Signal();
+				return basicGetBase_Signal();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -124,11 +262,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case WoTPackage.EVENT__BASE_EVENT:
-				setBase_Event((org.eclipse.uml2.uml.Event)newValue);
+			case WoTPackage.EVENT__LABEL:
+				setLabel((String)newValue);
+				return;
+			case WoTPackage.EVENT__SCOPES:
+				getScopes().clear();
+				getScopes().addAll((Collection<? extends String>)newValue);
+				return;
+			case WoTPackage.EVENT__SECURITY:
+				getSecurity().clear();
+				getSecurity().addAll((Collection<? extends SecurityScheme>)newValue);
+				return;
+			case WoTPackage.EVENT__FORMS:
+				getForms().clear();
+				getForms().addAll((Collection<? extends Form>)newValue);
+				return;
+			case WoTPackage.EVENT__BASE_SIGNAL:
+				setBase_Signal((Signal)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -142,8 +296,20 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case WoTPackage.EVENT__BASE_EVENT:
-				setBase_Event((org.eclipse.uml2.uml.Event)null);
+			case WoTPackage.EVENT__LABEL:
+				setLabel(LABEL_EDEFAULT);
+				return;
+			case WoTPackage.EVENT__SCOPES:
+				getScopes().clear();
+				return;
+			case WoTPackage.EVENT__SECURITY:
+				getSecurity().clear();
+				return;
+			case WoTPackage.EVENT__FORMS:
+				getForms().clear();
+				return;
+			case WoTPackage.EVENT__BASE_SIGNAL:
+				setBase_Signal((Signal)null);
 				return;
 		}
 		super.eUnset(featureID);
@@ -157,10 +323,74 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case WoTPackage.EVENT__BASE_EVENT:
-				return base_Event != null;
+			case WoTPackage.EVENT__LABEL:
+				return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
+			case WoTPackage.EVENT__SCOPES:
+				return scopes != null && !scopes.isEmpty();
+			case WoTPackage.EVENT__SECURITY:
+				return security != null && !security.isEmpty();
+			case WoTPackage.EVENT__FORMS:
+				return forms != null && !forms.isEmpty();
+			case WoTPackage.EVENT__BASE_SIGNAL:
+				return base_Signal != null;
 		}
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionPattern.class) {
+			switch (derivedFeatureID) {
+				case WoTPackage.EVENT__LABEL: return WoTPackage.INTERACTION_PATTERN__LABEL;
+				case WoTPackage.EVENT__SCOPES: return WoTPackage.INTERACTION_PATTERN__SCOPES;
+				case WoTPackage.EVENT__SECURITY: return WoTPackage.INTERACTION_PATTERN__SECURITY;
+				case WoTPackage.EVENT__FORMS: return WoTPackage.INTERACTION_PATTERN__FORMS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionPattern.class) {
+			switch (baseFeatureID) {
+				case WoTPackage.INTERACTION_PATTERN__LABEL: return WoTPackage.EVENT__LABEL;
+				case WoTPackage.INTERACTION_PATTERN__SCOPES: return WoTPackage.EVENT__SCOPES;
+				case WoTPackage.INTERACTION_PATTERN__SECURITY: return WoTPackage.EVENT__SECURITY;
+				case WoTPackage.INTERACTION_PATTERN__FORMS: return WoTPackage.EVENT__FORMS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (label: ");
+		result.append(label);
+		result.append(", scopes: ");
+		result.append(scopes);
+		result.append(')');
+		return result.toString();
+	}
+
 } //EventImpl
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 627a4a7..b189418 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
@@ -13,16 +13,27 @@
  */
 package org.eclipse.papyrus.iotml.wot.impl;
 
+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.papyrus.iotml.software.core.structure.impl.DetailedValueSpecificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.software.core.structure.impl.MetaValueSpecificationImpl;
+
 import org.eclipse.papyrus.iotml.wot.Form;
 import org.eclipse.papyrus.iotml.wot.Link;
+import org.eclipse.papyrus.iotml.wot.RelKind;
 import org.eclipse.papyrus.iotml.wot.SecurityScheme;
+import org.eclipse.papyrus.iotml.wot.SubProtocolKind;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
 /**
@@ -33,17 +44,27 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getHref <em>Href</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getMediaType <em>Media Type</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getRel <em>Rel</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getSubProtocol <em>Sub Protocol</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#getScopes <em>Scopes</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getHref <em>Href</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.FormImpl#getFormSec <em>Form Sec</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class FormImpl extends DetailedValueSpecificationImpl implements Form {
+public class FormImpl extends MetaValueSpecificationImpl implements Form {
+	/**
+	 * The cached value of the '{@link #getHref() <em>Href</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHref()
+	 * @generated
+	 * @ordered
+	 */
+	protected Link href;
+
 	/**
 	 * The default value of the '{@link #getMediaType() <em>Media Type</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -52,7 +73,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String MEDIA_TYPE_EDEFAULT = null;
+	protected static final String MEDIA_TYPE_EDEFAULT = "application/json";
 
 	/**
 	 * The cached value of the '{@link #getMediaType() <em>Media Type</em>}' attribute.
@@ -72,7 +93,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String REL_EDEFAULT = null;
+	protected static final RelKind REL_EDEFAULT = RelKind.NONE;
 
 	/**
 	 * The cached value of the '{@link #getRel() <em>Rel</em>}' attribute.
@@ -82,7 +103,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected String rel = REL_EDEFAULT;
+	protected RelKind rel = REL_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getSubProtocol() <em>Sub Protocol</em>}' attribute.
@@ -92,7 +113,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String SUB_PROTOCOL_EDEFAULT = null;
+	protected static final SubProtocolKind SUB_PROTOCOL_EDEFAULT = SubProtocolKind.NONE;
 
 	/**
 	 * The cached value of the '{@link #getSubProtocol() <em>Sub Protocol</em>}' attribute.
@@ -102,47 +123,27 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected String subProtocol = SUB_PROTOCOL_EDEFAULT;
+	protected SubProtocolKind subProtocol = SUB_PROTOCOL_EDEFAULT;
 
 	/**
-	 * The default value of the '{@link #getScopes() <em>Scopes</em>}' attribute.
+	 * 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 #getScopes() <em>Scopes</em>}' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #getScopes()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String SCOPES_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getScopes() <em>Scopes</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getScopes()
-	 * @generated
-	 * @ordered
-	 */
-	protected String scopes = SCOPES_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getHref() <em>Href</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getHref()
-	 * @generated
-	 * @ordered
-	 */
-	protected Link href;
-
-	/**
-	 * The cached value of the '{@link #getFormSec() <em>Form Sec</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getFormSec()
-	 * @generated
-	 * @ordered
-	 */
-	protected SecurityScheme formSec;
+	protected EList<String> scopes;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -169,98 +170,6 @@
 	 * @generated
 	 */
 	@Override
-	public String getMediaType() {
-		return mediaType;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setMediaType(String newMediaType) {
-		String oldMediaType = mediaType;
-		mediaType = newMediaType;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__MEDIA_TYPE, oldMediaType, mediaType));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getRel() {
-		return rel;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setRel(String newRel) {
-		String oldRel = rel;
-		rel = newRel;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__REL, oldRel, rel));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getSubProtocol() {
-		return subProtocol;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setSubProtocol(String newSubProtocol) {
-		String oldSubProtocol = subProtocol;
-		subProtocol = newSubProtocol;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__SUB_PROTOCOL, oldSubProtocol, subProtocol));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getScopes() {
-		return scopes;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setScopes(String newScopes) {
-		String oldScopes = scopes;
-		scopes = newScopes;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__SCOPES, oldScopes, scopes));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public Link getHref() {
 		if (href != null && href.eIsProxy()) {
 			InternalEObject oldHref = (InternalEObject)href;
@@ -301,25 +210,8 @@
 	 * @generated
 	 */
 	@Override
-	public SecurityScheme getFormSec() {
-		if (formSec != null && formSec.eIsProxy()) {
-			InternalEObject oldFormSec = (InternalEObject)formSec;
-			formSec = (SecurityScheme)eResolveProxy(oldFormSec);
-			if (formSec != oldFormSec) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.FORM__FORM_SEC, oldFormSec, formSec));
-			}
-		}
-		return formSec;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SecurityScheme basicGetFormSec() {
-		return formSec;
+	public String getMediaType() {
+		return mediaType;
 	}
 
 	/**
@@ -328,11 +220,83 @@
 	 * @generated
 	 */
 	@Override
-	public void setFormSec(SecurityScheme newFormSec) {
-		SecurityScheme oldFormSec = formSec;
-		formSec = newFormSec;
+	public void setMediaType(String newMediaType) {
+		String oldMediaType = mediaType;
+		mediaType = newMediaType;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__FORM_SEC, oldFormSec, formSec));
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__MEDIA_TYPE, oldMediaType, mediaType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public RelKind getRel() {
+		return rel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRel(RelKind newRel) {
+		RelKind oldRel = rel;
+		rel = newRel == null ? REL_EDEFAULT : newRel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__REL, oldRel, rel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SubProtocolKind getSubProtocol() {
+		return subProtocol;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSubProtocol(SubProtocolKind newSubProtocol) {
+		SubProtocolKind oldSubProtocol = subProtocol;
+		subProtocol = newSubProtocol == null ? SUB_PROTOCOL_EDEFAULT : newSubProtocol;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.FORM__SUB_PROTOCOL, oldSubProtocol, subProtocol));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	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
+	public EList<String> getScopes() {
+		if (scopes == null) {
+			scopes = new EDataTypeUniqueEList<String>(String.class, this, WoTPackage.FORM__SCOPES);
+		}
+		return scopes;
 	}
 
 	/**
@@ -343,20 +307,19 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case WoTPackage.FORM__HREF:
+				if (resolve) return getHref();
+				return basicGetHref();
 			case WoTPackage.FORM__MEDIA_TYPE:
 				return getMediaType();
 			case WoTPackage.FORM__REL:
 				return getRel();
 			case WoTPackage.FORM__SUB_PROTOCOL:
 				return getSubProtocol();
+			case WoTPackage.FORM__SECURITY:
+				return getSecurity();
 			case WoTPackage.FORM__SCOPES:
 				return getScopes();
-			case WoTPackage.FORM__HREF:
-				if (resolve) return getHref();
-				return basicGetHref();
-			case WoTPackage.FORM__FORM_SEC:
-				if (resolve) return getFormSec();
-				return basicGetFormSec();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -366,26 +329,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case WoTPackage.FORM__HREF:
+				setHref((Link)newValue);
+				return;
 			case WoTPackage.FORM__MEDIA_TYPE:
 				setMediaType((String)newValue);
 				return;
 			case WoTPackage.FORM__REL:
-				setRel((String)newValue);
+				setRel((RelKind)newValue);
 				return;
 			case WoTPackage.FORM__SUB_PROTOCOL:
-				setSubProtocol((String)newValue);
+				setSubProtocol((SubProtocolKind)newValue);
+				return;
+			case WoTPackage.FORM__SECURITY:
+				getSecurity().clear();
+				getSecurity().addAll((Collection<? extends SecurityScheme>)newValue);
 				return;
 			case WoTPackage.FORM__SCOPES:
-				setScopes((String)newValue);
-				return;
-			case WoTPackage.FORM__HREF:
-				setHref((Link)newValue);
-				return;
-			case WoTPackage.FORM__FORM_SEC:
-				setFormSec((SecurityScheme)newValue);
+				getScopes().clear();
+				getScopes().addAll((Collection<? extends String>)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -399,6 +365,9 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case WoTPackage.FORM__HREF:
+				setHref((Link)null);
+				return;
 			case WoTPackage.FORM__MEDIA_TYPE:
 				setMediaType(MEDIA_TYPE_EDEFAULT);
 				return;
@@ -408,14 +377,11 @@
 			case WoTPackage.FORM__SUB_PROTOCOL:
 				setSubProtocol(SUB_PROTOCOL_EDEFAULT);
 				return;
+			case WoTPackage.FORM__SECURITY:
+				getSecurity().clear();
+				return;
 			case WoTPackage.FORM__SCOPES:
-				setScopes(SCOPES_EDEFAULT);
-				return;
-			case WoTPackage.FORM__HREF:
-				setHref((Link)null);
-				return;
-			case WoTPackage.FORM__FORM_SEC:
-				setFormSec((SecurityScheme)null);
+				getScopes().clear();
 				return;
 		}
 		super.eUnset(featureID);
@@ -429,18 +395,18 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case WoTPackage.FORM__HREF:
+				return href != null;
 			case WoTPackage.FORM__MEDIA_TYPE:
 				return MEDIA_TYPE_EDEFAULT == null ? mediaType != null : !MEDIA_TYPE_EDEFAULT.equals(mediaType);
 			case WoTPackage.FORM__REL:
-				return REL_EDEFAULT == null ? rel != null : !REL_EDEFAULT.equals(rel);
+				return rel != REL_EDEFAULT;
 			case WoTPackage.FORM__SUB_PROTOCOL:
-				return SUB_PROTOCOL_EDEFAULT == null ? subProtocol != null : !SUB_PROTOCOL_EDEFAULT.equals(subProtocol);
+				return subProtocol != SUB_PROTOCOL_EDEFAULT;
+			case WoTPackage.FORM__SECURITY:
+				return security != null && !security.isEmpty();
 			case WoTPackage.FORM__SCOPES:
-				return SCOPES_EDEFAULT == null ? scopes != null : !SCOPES_EDEFAULT.equals(scopes);
-			case WoTPackage.FORM__HREF:
-				return href != null;
-			case WoTPackage.FORM__FORM_SEC:
-				return formSec != null;
+				return scopes != null && !scopes.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionPatternImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionPatternImpl.java
index cc4bb5b..dbc8a50 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionPatternImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/InteractionPatternImpl.java
@@ -20,12 +20,13 @@
 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.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
-import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.impl.GrServiceImpl;
 import org.eclipse.papyrus.iotml.wot.Form;
 import org.eclipse.papyrus.iotml.wot.InteractionPattern;
 import org.eclipse.papyrus.iotml.wot.SecurityScheme;
@@ -40,15 +41,14 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl#getLabel <em>Label</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl#getDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl#getScopes <em>Scopes</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl#getIntSec <em>Int Sec</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl#getSecurity <em>Security</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.InteractionPatternImpl#getForms <em>Forms</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class InteractionPatternImpl extends GrServiceImpl implements InteractionPattern {
+public class InteractionPatternImpl extends MinimalEObjectImpl.Container implements InteractionPattern {
 	/**
 	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -70,54 +70,24 @@
 	protected String label = LABEL_EDEFAULT;
 
 	/**
-	 * 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 #getDescription() <em>Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDescription()
-	 * @generated
-	 * @ordered
-	 */
-	protected String description = DESCRIPTION_EDEFAULT;
-
-	/**
-	 * The default value of the '{@link #getScopes() <em>Scopes</em>}' attribute.
+	 * The cached value of the '{@link #getScopes() <em>Scopes</em>}' attribute list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #getScopes()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String SCOPES_EDEFAULT = null;
+	protected EList<String> scopes;
 
 	/**
-	 * The cached value of the '{@link #getScopes() <em>Scopes</em>}' attribute.
+	 * The cached value of the '{@link #getSecurity() <em>Security</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getScopes()
+	 * @see #getSecurity()
 	 * @generated
 	 * @ordered
 	 */
-	protected String scopes = SCOPES_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getIntSec() <em>Int Sec</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getIntSec()
-	 * @generated
-	 * @ordered
-	 */
-	protected SecurityScheme intSec;
+	protected EList<SecurityScheme> security;
 
 	/**
 	 * The cached value of the '{@link #getForms() <em>Forms</em>}' reference list.
@@ -177,30 +147,10 @@
 	 * @generated
 	 */
 	@Override
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setDescription(String newDescription) {
-		String oldDescription = description;
-		description = newDescription;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.INTERACTION_PATTERN__DESCRIPTION, oldDescription, description));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getScopes() {
+	public EList<String> getScopes() {
+		if (scopes == null) {
+			scopes = new EDataTypeUniqueEList<String>(String.class, this, WoTPackage.INTERACTION_PATTERN__SCOPES);
+		}
 		return scopes;
 	}
 
@@ -210,51 +160,11 @@
 	 * @generated
 	 */
 	@Override
-	public void setScopes(String newScopes) {
-		String oldScopes = scopes;
-		scopes = newScopes;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.INTERACTION_PATTERN__SCOPES, oldScopes, scopes));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public SecurityScheme getIntSec() {
-		if (intSec != null && intSec.eIsProxy()) {
-			InternalEObject oldIntSec = (InternalEObject)intSec;
-			intSec = (SecurityScheme)eResolveProxy(oldIntSec);
-			if (intSec != oldIntSec) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.INTERACTION_PATTERN__INT_SEC, oldIntSec, intSec));
-			}
+	public EList<SecurityScheme> getSecurity() {
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.INTERACTION_PATTERN__SECURITY);
 		}
-		return intSec;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SecurityScheme basicGetIntSec() {
-		return intSec;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setIntSec(SecurityScheme newIntSec) {
-		SecurityScheme oldIntSec = intSec;
-		intSec = newIntSec;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.INTERACTION_PATTERN__INT_SEC, oldIntSec, intSec));
+		return security;
 	}
 
 	/**
@@ -280,13 +190,10 @@
 		switch (featureID) {
 			case WoTPackage.INTERACTION_PATTERN__LABEL:
 				return getLabel();
-			case WoTPackage.INTERACTION_PATTERN__DESCRIPTION:
-				return getDescription();
 			case WoTPackage.INTERACTION_PATTERN__SCOPES:
 				return getScopes();
-			case WoTPackage.INTERACTION_PATTERN__INT_SEC:
-				if (resolve) return getIntSec();
-				return basicGetIntSec();
+			case WoTPackage.INTERACTION_PATTERN__SECURITY:
+				return getSecurity();
 			case WoTPackage.INTERACTION_PATTERN__FORMS:
 				return getForms();
 		}
@@ -305,14 +212,13 @@
 			case WoTPackage.INTERACTION_PATTERN__LABEL:
 				setLabel((String)newValue);
 				return;
-			case WoTPackage.INTERACTION_PATTERN__DESCRIPTION:
-				setDescription((String)newValue);
-				return;
 			case WoTPackage.INTERACTION_PATTERN__SCOPES:
-				setScopes((String)newValue);
+				getScopes().clear();
+				getScopes().addAll((Collection<? extends String>)newValue);
 				return;
-			case WoTPackage.INTERACTION_PATTERN__INT_SEC:
-				setIntSec((SecurityScheme)newValue);
+			case WoTPackage.INTERACTION_PATTERN__SECURITY:
+				getSecurity().clear();
+				getSecurity().addAll((Collection<? extends SecurityScheme>)newValue);
 				return;
 			case WoTPackage.INTERACTION_PATTERN__FORMS:
 				getForms().clear();
@@ -333,14 +239,11 @@
 			case WoTPackage.INTERACTION_PATTERN__LABEL:
 				setLabel(LABEL_EDEFAULT);
 				return;
-			case WoTPackage.INTERACTION_PATTERN__DESCRIPTION:
-				setDescription(DESCRIPTION_EDEFAULT);
-				return;
 			case WoTPackage.INTERACTION_PATTERN__SCOPES:
-				setScopes(SCOPES_EDEFAULT);
+				getScopes().clear();
 				return;
-			case WoTPackage.INTERACTION_PATTERN__INT_SEC:
-				setIntSec((SecurityScheme)null);
+			case WoTPackage.INTERACTION_PATTERN__SECURITY:
+				getSecurity().clear();
 				return;
 			case WoTPackage.INTERACTION_PATTERN__FORMS:
 				getForms().clear();
@@ -359,12 +262,10 @@
 		switch (featureID) {
 			case WoTPackage.INTERACTION_PATTERN__LABEL:
 				return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
-			case WoTPackage.INTERACTION_PATTERN__DESCRIPTION:
-				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
 			case WoTPackage.INTERACTION_PATTERN__SCOPES:
-				return SCOPES_EDEFAULT == null ? scopes != null : !SCOPES_EDEFAULT.equals(scopes);
-			case WoTPackage.INTERACTION_PATTERN__INT_SEC:
-				return intSec != null;
+				return scopes != null && !scopes.isEmpty();
+			case WoTPackage.INTERACTION_PATTERN__SECURITY:
+				return security != null && !security.isEmpty();
 			case WoTPackage.INTERACTION_PATTERN__FORMS:
 				return forms != null && !forms.isEmpty();
 		}
@@ -383,8 +284,6 @@
 		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (label: ");
 		result.append(label);
-		result.append(", description: ");
-		result.append(description);
 		result.append(", scopes: ");
 		result.append(scopes);
 		result.append(')');
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 7c61e57..1a6d76b 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
@@ -19,10 +19,14 @@
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.papyrus.iotml.software.core.structure.impl.DetailedValueSpecificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
 import org.eclipse.papyrus.iotml.wot.Link;
+import org.eclipse.papyrus.iotml.wot.RelKind;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
+import org.eclipse.uml2.uml.PrimitiveType;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Link</b></em>'.
@@ -31,15 +35,36 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl#getHref <em>Href</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl#getMediaType <em>Media Type</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl#getRel <em>Rel</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl#getHref <em>Href</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl#getAnchor <em>Anchor</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.LinkImpl#getBase_PrimitiveType <em>Base Primitive Type</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class LinkImpl extends DetailedValueSpecificationImpl implements Link {
+public class LinkImpl extends MinimalEObjectImpl.Container implements Link {
+	/**
+	 * The default value of the '{@link #getHref() <em>Href</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHref()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String HREF_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getHref() <em>Href</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHref()
+	 * @generated
+	 * @ordered
+	 */
+	protected String href = HREF_EDEFAULT;
+
 	/**
 	 * The default value of the '{@link #getMediaType() <em>Media Type</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -48,7 +73,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String MEDIA_TYPE_EDEFAULT = null;
+	protected static final String MEDIA_TYPE_EDEFAULT = "application/json";
 
 	/**
 	 * The cached value of the '{@link #getMediaType() <em>Media Type</em>}' attribute.
@@ -68,7 +93,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String REL_EDEFAULT = null;
+	protected static final RelKind REL_EDEFAULT = RelKind.NONE;
 
 	/**
 	 * The cached value of the '{@link #getRel() <em>Rel</em>}' attribute.
@@ -78,27 +103,37 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected String rel = REL_EDEFAULT;
+	protected RelKind rel = REL_EDEFAULT;
 
 	/**
-	 * The cached value of the '{@link #getHref() <em>Href</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getHref()
-	 * @generated
-	 * @ordered
-	 */
-	protected Link href;
-
-	/**
-	 * The cached value of the '{@link #getAnchor() <em>Anchor</em>}' reference.
+	 * The default value of the '{@link #getAnchor() <em>Anchor</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #getAnchor()
 	 * @generated
 	 * @ordered
 	 */
-	protected Link anchor;
+	protected static final String ANCHOR_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAnchor() <em>Anchor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnchor()
+	 * @generated
+	 * @ordered
+	 */
+	protected String anchor = ANCHOR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBase_PrimitiveType() <em>Base Primitive Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_PrimitiveType()
+	 * @generated
+	 * @ordered
+	 */
+	protected PrimitiveType base_PrimitiveType;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -125,6 +160,29 @@
 	 * @generated
 	 */
 	@Override
+	public String getHref() {
+		return href;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHref(String newHref) {
+		String oldHref = href;
+		href = newHref;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.LINK__HREF, oldHref, href));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public String getMediaType() {
 		return mediaType;
 	}
@@ -148,7 +206,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getRel() {
+	public RelKind getRel() {
 		return rel;
 	}
 
@@ -158,9 +216,9 @@
 	 * @generated
 	 */
 	@Override
-	public void setRel(String newRel) {
-		String oldRel = rel;
-		rel = newRel;
+	public void setRel(RelKind newRel) {
+		RelKind oldRel = rel;
+		rel = newRel == null ? REL_EDEFAULT : newRel;
 		if (eNotificationRequired())
 			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.LINK__REL, oldRel, rel));
 	}
@@ -171,64 +229,7 @@
 	 * @generated
 	 */
 	@Override
-	public Link getHref() {
-		if (href != null && href.eIsProxy()) {
-			InternalEObject oldHref = (InternalEObject)href;
-			href = (Link)eResolveProxy(oldHref);
-			if (href != oldHref) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.LINK__HREF, oldHref, href));
-			}
-		}
-		return href;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Link basicGetHref() {
-		return href;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setHref(Link newHref) {
-		Link oldHref = href;
-		href = newHref;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.LINK__HREF, oldHref, href));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Link getAnchor() {
-		if (anchor != null && anchor.eIsProxy()) {
-			InternalEObject oldAnchor = (InternalEObject)anchor;
-			anchor = (Link)eResolveProxy(oldAnchor);
-			if (anchor != oldAnchor) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.LINK__ANCHOR, oldAnchor, anchor));
-			}
-		}
-		return anchor;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Link basicGetAnchor() {
+	public String getAnchor() {
 		return anchor;
 	}
 
@@ -238,8 +239,8 @@
 	 * @generated
 	 */
 	@Override
-	public void setAnchor(Link newAnchor) {
-		Link oldAnchor = anchor;
+	public void setAnchor(String newAnchor) {
+		String oldAnchor = anchor;
 		anchor = newAnchor;
 		if (eNotificationRequired())
 			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.LINK__ANCHOR, oldAnchor, anchor));
@@ -251,18 +252,59 @@
 	 * @generated
 	 */
 	@Override
+	public PrimitiveType getBase_PrimitiveType() {
+		if (base_PrimitiveType != null && base_PrimitiveType.eIsProxy()) {
+			InternalEObject oldBase_PrimitiveType = (InternalEObject)base_PrimitiveType;
+			base_PrimitiveType = (PrimitiveType)eResolveProxy(oldBase_PrimitiveType);
+			if (base_PrimitiveType != oldBase_PrimitiveType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.LINK__BASE_PRIMITIVE_TYPE, oldBase_PrimitiveType, base_PrimitiveType));
+			}
+		}
+		return base_PrimitiveType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public PrimitiveType basicGetBase_PrimitiveType() {
+		return base_PrimitiveType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_PrimitiveType(PrimitiveType newBase_PrimitiveType) {
+		PrimitiveType oldBase_PrimitiveType = base_PrimitiveType;
+		base_PrimitiveType = newBase_PrimitiveType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.LINK__BASE_PRIMITIVE_TYPE, oldBase_PrimitiveType, base_PrimitiveType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case WoTPackage.LINK__HREF:
+				return getHref();
 			case WoTPackage.LINK__MEDIA_TYPE:
 				return getMediaType();
 			case WoTPackage.LINK__REL:
 				return getRel();
-			case WoTPackage.LINK__HREF:
-				if (resolve) return getHref();
-				return basicGetHref();
 			case WoTPackage.LINK__ANCHOR:
-				if (resolve) return getAnchor();
-				return basicGetAnchor();
+				return getAnchor();
+			case WoTPackage.LINK__BASE_PRIMITIVE_TYPE:
+				if (resolve) return getBase_PrimitiveType();
+				return basicGetBase_PrimitiveType();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -275,17 +317,20 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case WoTPackage.LINK__HREF:
+				setHref((String)newValue);
+				return;
 			case WoTPackage.LINK__MEDIA_TYPE:
 				setMediaType((String)newValue);
 				return;
 			case WoTPackage.LINK__REL:
-				setRel((String)newValue);
-				return;
-			case WoTPackage.LINK__HREF:
-				setHref((Link)newValue);
+				setRel((RelKind)newValue);
 				return;
 			case WoTPackage.LINK__ANCHOR:
-				setAnchor((Link)newValue);
+				setAnchor((String)newValue);
+				return;
+			case WoTPackage.LINK__BASE_PRIMITIVE_TYPE:
+				setBase_PrimitiveType((PrimitiveType)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -299,17 +344,20 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case WoTPackage.LINK__HREF:
+				setHref(HREF_EDEFAULT);
+				return;
 			case WoTPackage.LINK__MEDIA_TYPE:
 				setMediaType(MEDIA_TYPE_EDEFAULT);
 				return;
 			case WoTPackage.LINK__REL:
 				setRel(REL_EDEFAULT);
 				return;
-			case WoTPackage.LINK__HREF:
-				setHref((Link)null);
-				return;
 			case WoTPackage.LINK__ANCHOR:
-				setAnchor((Link)null);
+				setAnchor(ANCHOR_EDEFAULT);
+				return;
+			case WoTPackage.LINK__BASE_PRIMITIVE_TYPE:
+				setBase_PrimitiveType((PrimitiveType)null);
 				return;
 		}
 		super.eUnset(featureID);
@@ -323,14 +371,16 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case WoTPackage.LINK__HREF:
+				return HREF_EDEFAULT == null ? href != null : !HREF_EDEFAULT.equals(href);
 			case WoTPackage.LINK__MEDIA_TYPE:
 				return MEDIA_TYPE_EDEFAULT == null ? mediaType != null : !MEDIA_TYPE_EDEFAULT.equals(mediaType);
 			case WoTPackage.LINK__REL:
-				return REL_EDEFAULT == null ? rel != null : !REL_EDEFAULT.equals(rel);
-			case WoTPackage.LINK__HREF:
-				return href != null;
+				return rel != REL_EDEFAULT;
 			case WoTPackage.LINK__ANCHOR:
-				return anchor != null;
+				return ANCHOR_EDEFAULT == null ? anchor != null : !ANCHOR_EDEFAULT.equals(anchor);
+			case WoTPackage.LINK__BASE_PRIMITIVE_TYPE:
+				return base_PrimitiveType != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -345,10 +395,14 @@
 		if (eIsProxy()) return super.toString();
 
 		StringBuilder result = new StringBuilder(super.toString());
-		result.append(" (mediaType: ");
+		result.append(" (href: ");
+		result.append(href);
+		result.append(", mediaType: ");
 		result.append(mediaType);
 		result.append(", rel: ");
 		result.append(rel);
+		result.append(", anchor: ");
+		result.append(anchor);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyImpl.java b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyImpl.java
index 51cb6c9..0fe1ee5 100644
--- a/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyImpl.java
+++ b/org.eclipse.papyrus.iotml.profile/src-gen/org/eclipse/papyrus/iotml/wot/impl/PropertyImpl.java
@@ -13,14 +13,23 @@
  */
 package org.eclipse.papyrus.iotml.wot.impl;
 
+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.EDataTypeUniqueEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.iotml.wot.Form;
+import org.eclipse.papyrus.iotml.wot.InteractionPattern;
 import org.eclipse.papyrus.iotml.wot.Property;
+import org.eclipse.papyrus.iotml.wot.SecurityScheme;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
 /**
@@ -31,13 +40,66 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl#getLabel <em>Label</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl#getScopes <em>Scopes</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl#getSecurity <em>Security</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl#getForms <em>Forms</em>}</li>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl#isObservable <em>Observable</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.PropertyImpl#getBase_Property <em>Base Property</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class PropertyImpl extends InteractionPatternImpl implements Property {
+public class PropertyImpl extends DataSchemaImpl implements Property {
+	/**
+	 * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LABEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String label = LABEL_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 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 #getForms() <em>Forms</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getForms()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Form> forms;
+
 	/**
 	 * The default value of the '{@link #isObservable() <em>Observable</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -59,16 +121,6 @@
 	protected boolean observable = OBSERVABLE_EDEFAULT;
 
 	/**
-	 * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getBase_Property()
-	 * @generated
-	 * @ordered
-	 */
-	protected org.eclipse.uml2.uml.Property base_Property;
-
-	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -93,6 +145,68 @@
 	 * @generated
 	 */
 	@Override
+	public String getLabel() {
+		return label;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLabel(String newLabel) {
+		String oldLabel = label;
+		label = newLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.PROPERTY__LABEL, oldLabel, label));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<String> getScopes() {
+		if (scopes == null) {
+			scopes = new EDataTypeUniqueEList<String>(String.class, this, WoTPackage.PROPERTY__SCOPES);
+		}
+		return scopes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<SecurityScheme> getSecurity() {
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.PROPERTY__SECURITY);
+		}
+		return security;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Form> getForms() {
+		if (forms == null) {
+			forms = new EObjectResolvingEList<Form>(Form.class, this, WoTPackage.PROPERTY__FORMS);
+		}
+		return forms;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public boolean isObservable() {
 		return observable;
 	}
@@ -116,53 +230,18 @@
 	 * @generated
 	 */
 	@Override
-	public org.eclipse.uml2.uml.Property getBase_Property() {
-		if (base_Property != null && base_Property.eIsProxy()) {
-			InternalEObject oldBase_Property = (InternalEObject)base_Property;
-			base_Property = (org.eclipse.uml2.uml.Property)eResolveProxy(oldBase_Property);
-			if (base_Property != oldBase_Property) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.PROPERTY__BASE_PROPERTY, oldBase_Property, base_Property));
-			}
-		}
-		return base_Property;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public org.eclipse.uml2.uml.Property basicGetBase_Property() {
-		return base_Property;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setBase_Property(org.eclipse.uml2.uml.Property newBase_Property) {
-		org.eclipse.uml2.uml.Property oldBase_Property = base_Property;
-		base_Property = newBase_Property;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.PROPERTY__BASE_PROPERTY, oldBase_Property, base_Property));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case WoTPackage.PROPERTY__LABEL:
+				return getLabel();
+			case WoTPackage.PROPERTY__SCOPES:
+				return getScopes();
+			case WoTPackage.PROPERTY__SECURITY:
+				return getSecurity();
+			case WoTPackage.PROPERTY__FORMS:
+				return getForms();
 			case WoTPackage.PROPERTY__OBSERVABLE:
 				return isObservable();
-			case WoTPackage.PROPERTY__BASE_PROPERTY:
-				if (resolve) return getBase_Property();
-				return basicGetBase_Property();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -172,15 +251,28 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case WoTPackage.PROPERTY__LABEL:
+				setLabel((String)newValue);
+				return;
+			case WoTPackage.PROPERTY__SCOPES:
+				getScopes().clear();
+				getScopes().addAll((Collection<? extends String>)newValue);
+				return;
+			case WoTPackage.PROPERTY__SECURITY:
+				getSecurity().clear();
+				getSecurity().addAll((Collection<? extends SecurityScheme>)newValue);
+				return;
+			case WoTPackage.PROPERTY__FORMS:
+				getForms().clear();
+				getForms().addAll((Collection<? extends Form>)newValue);
+				return;
 			case WoTPackage.PROPERTY__OBSERVABLE:
 				setObservable((Boolean)newValue);
 				return;
-			case WoTPackage.PROPERTY__BASE_PROPERTY:
-				setBase_Property((org.eclipse.uml2.uml.Property)newValue);
-				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -193,12 +285,21 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case WoTPackage.PROPERTY__LABEL:
+				setLabel(LABEL_EDEFAULT);
+				return;
+			case WoTPackage.PROPERTY__SCOPES:
+				getScopes().clear();
+				return;
+			case WoTPackage.PROPERTY__SECURITY:
+				getSecurity().clear();
+				return;
+			case WoTPackage.PROPERTY__FORMS:
+				getForms().clear();
+				return;
 			case WoTPackage.PROPERTY__OBSERVABLE:
 				setObservable(OBSERVABLE_EDEFAULT);
 				return;
-			case WoTPackage.PROPERTY__BASE_PROPERTY:
-				setBase_Property((org.eclipse.uml2.uml.Property)null);
-				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -211,10 +312,16 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case WoTPackage.PROPERTY__LABEL:
+				return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
+			case WoTPackage.PROPERTY__SCOPES:
+				return scopes != null && !scopes.isEmpty();
+			case WoTPackage.PROPERTY__SECURITY:
+				return security != null && !security.isEmpty();
+			case WoTPackage.PROPERTY__FORMS:
+				return forms != null && !forms.isEmpty();
 			case WoTPackage.PROPERTY__OBSERVABLE:
 				return observable != OBSERVABLE_EDEFAULT;
-			case WoTPackage.PROPERTY__BASE_PROPERTY:
-				return base_Property != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -225,11 +332,53 @@
 	 * @generated
 	 */
 	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionPattern.class) {
+			switch (derivedFeatureID) {
+				case WoTPackage.PROPERTY__LABEL: return WoTPackage.INTERACTION_PATTERN__LABEL;
+				case WoTPackage.PROPERTY__SCOPES: return WoTPackage.INTERACTION_PATTERN__SCOPES;
+				case WoTPackage.PROPERTY__SECURITY: return WoTPackage.INTERACTION_PATTERN__SECURITY;
+				case WoTPackage.PROPERTY__FORMS: return WoTPackage.INTERACTION_PATTERN__FORMS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionPattern.class) {
+			switch (baseFeatureID) {
+				case WoTPackage.INTERACTION_PATTERN__LABEL: return WoTPackage.PROPERTY__LABEL;
+				case WoTPackage.INTERACTION_PATTERN__SCOPES: return WoTPackage.PROPERTY__SCOPES;
+				case WoTPackage.INTERACTION_PATTERN__SECURITY: return WoTPackage.PROPERTY__SECURITY;
+				case WoTPackage.INTERACTION_PATTERN__FORMS: return WoTPackage.PROPERTY__FORMS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public String toString() {
 		if (eIsProxy()) return super.toString();
 
 		StringBuilder result = new StringBuilder(super.toString());
-		result.append(" (observable: ");
+		result.append(" (label: ");
+		result.append(label);
+		result.append(", scopes: ");
+		result.append(scopes);
+		result.append(", observable: ");
 		result.append(observable);
 		result.append(')');
 		return result.toString();
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 4f6602a..05dd5b9 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
@@ -19,11 +19,15 @@
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.papyrus.iotml.software.core.structure.impl.DetailedValueSpecificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
 import org.eclipse.papyrus.iotml.wot.Link;
 import org.eclipse.papyrus.iotml.wot.SecurityScheme;
+import org.eclipse.papyrus.iotml.wot.SecuritySchemeKind;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
 
+import org.eclipse.uml2.uml.Classifier;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Security Scheme</b></em>'.
@@ -33,13 +37,13 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getScheme <em>Scheme</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#getProxyUrl <em>Proxy Url</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.SecuritySchemeImpl#getBase_Classifier <em>Base Classifier</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class SecuritySchemeImpl extends DetailedValueSpecificationImpl implements SecurityScheme {
+public class SecuritySchemeImpl extends MinimalEObjectImpl.Container implements SecurityScheme {
 	/**
 	 * The default value of the '{@link #getScheme() <em>Scheme</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -48,7 +52,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final String SCHEME_EDEFAULT = null;
+	protected static final SecuritySchemeKind SCHEME_EDEFAULT = SecuritySchemeKind.NOSEC;
 
 	/**
 	 * The cached value of the '{@link #getScheme() <em>Scheme</em>}' attribute.
@@ -58,27 +62,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected String scheme = SCHEME_EDEFAULT;
-
-	/**
-	 * 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 #getDescription() <em>Description</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getDescription()
-	 * @generated
-	 * @ordered
-	 */
-	protected String description = DESCRIPTION_EDEFAULT;
+	protected SecuritySchemeKind scheme = SCHEME_EDEFAULT;
 
 	/**
 	 * The cached value of the '{@link #getProxyUrl() <em>Proxy Url</em>}' reference.
@@ -91,6 +75,16 @@
 	protected Link proxyUrl;
 
 	/**
+	 * The cached value of the '{@link #getBase_Classifier() <em>Base Classifier</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Classifier()
+	 * @generated
+	 * @ordered
+	 */
+	protected Classifier base_Classifier;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -115,7 +109,7 @@
 	 * @generated
 	 */
 	@Override
-	public String getScheme() {
+	public SecuritySchemeKind getScheme() {
 		return scheme;
 	}
 
@@ -125,9 +119,9 @@
 	 * @generated
 	 */
 	@Override
-	public void setScheme(String newScheme) {
-		String oldScheme = scheme;
-		scheme = newScheme;
+	public void setScheme(SecuritySchemeKind newScheme) {
+		SecuritySchemeKind oldScheme = scheme;
+		scheme = newScheme == null ? SCHEME_EDEFAULT : newScheme;
 		if (eNotificationRequired())
 			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.SECURITY_SCHEME__SCHEME, oldScheme, scheme));
 	}
@@ -138,29 +132,6 @@
 	 * @generated
 	 */
 	@Override
-	public String getDescription() {
-		return description;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setDescription(String newDescription) {
-		String oldDescription = description;
-		description = newDescription;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.SECURITY_SCHEME__DESCRIPTION, oldDescription, description));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
 	public Link getProxyUrl() {
 		if (proxyUrl != null && proxyUrl.eIsProxy()) {
 			InternalEObject oldProxyUrl = (InternalEObject)proxyUrl;
@@ -201,15 +172,56 @@
 	 * @generated
 	 */
 	@Override
+	public Classifier getBase_Classifier() {
+		if (base_Classifier != null && base_Classifier.eIsProxy()) {
+			InternalEObject oldBase_Classifier = (InternalEObject)base_Classifier;
+			base_Classifier = (Classifier)eResolveProxy(oldBase_Classifier);
+			if (base_Classifier != oldBase_Classifier) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER, oldBase_Classifier, base_Classifier));
+			}
+		}
+		return base_Classifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Classifier basicGetBase_Classifier() {
+		return base_Classifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Classifier(Classifier newBase_Classifier) {
+		Classifier oldBase_Classifier = base_Classifier;
+		base_Classifier = newBase_Classifier;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER, oldBase_Classifier, base_Classifier));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
 				return getScheme();
-			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
-				return getDescription();
 			case WoTPackage.SECURITY_SCHEME__PROXY_URL:
 				if (resolve) return getProxyUrl();
 				return basicGetProxyUrl();
+			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
+				if (resolve) return getBase_Classifier();
+				return basicGetBase_Classifier();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -223,14 +235,14 @@
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
-				setScheme((String)newValue);
-				return;
-			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
-				setDescription((String)newValue);
+				setScheme((SecuritySchemeKind)newValue);
 				return;
 			case WoTPackage.SECURITY_SCHEME__PROXY_URL:
 				setProxyUrl((Link)newValue);
 				return;
+			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
+				setBase_Classifier((Classifier)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -246,12 +258,12 @@
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
 				setScheme(SCHEME_EDEFAULT);
 				return;
-			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
-				setDescription(DESCRIPTION_EDEFAULT);
-				return;
 			case WoTPackage.SECURITY_SCHEME__PROXY_URL:
 				setProxyUrl((Link)null);
 				return;
+			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
+				setBase_Classifier((Classifier)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -265,11 +277,11 @@
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case WoTPackage.SECURITY_SCHEME__SCHEME:
-				return SCHEME_EDEFAULT == null ? scheme != null : !SCHEME_EDEFAULT.equals(scheme);
-			case WoTPackage.SECURITY_SCHEME__DESCRIPTION:
-				return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+				return scheme != SCHEME_EDEFAULT;
 			case WoTPackage.SECURITY_SCHEME__PROXY_URL:
 				return proxyUrl != null;
+			case WoTPackage.SECURITY_SCHEME__BASE_CLASSIFIER:
+				return base_Classifier != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -286,8 +298,6 @@
 		StringBuilder result = new StringBuilder(super.toString());
 		result.append(" (scheme: ");
 		result.append(scheme);
-		result.append(", description: ");
-		result.append(description);
 		result.append(')');
 		return result.toString();
 	}
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 563405b..ea42cfe 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
@@ -23,8 +23,11 @@
 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.software.artefact.impl.VirtualEntityImpl;
+
 import org.eclipse.papyrus.iotml.wot.Action;
 import org.eclipse.papyrus.iotml.wot.Event;
 import org.eclipse.papyrus.iotml.wot.Link;
@@ -43,11 +46,11 @@
  * <ul>
  *   <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#getThingSec <em>Thing Sec</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#getBase <em>Base</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#getEvent <em>Event</em>}</li>
- *   <li>{@link org.eclipse.papyrus.iotml.wot.impl.ThingImpl#getAction <em>Action</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>
  * </ul>
  *
@@ -95,14 +98,14 @@
 	protected String support = SUPPORT_EDEFAULT;
 
 	/**
-	 * The cached value of the '{@link #getThingSec() <em>Thing Sec</em>}' reference.
+	 * The cached value of the '{@link #getSecurity() <em>Security</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getThingSec()
+	 * @see #getSecurity()
 	 * @generated
 	 * @ordered
 	 */
-	protected SecurityScheme thingSec;
+	protected EList<SecurityScheme> security;
 
 	/**
 	 * The cached value of the '{@link #getBase() <em>Base</em>}' reference.
@@ -125,24 +128,24 @@
 	protected EList<Link> links;
 
 	/**
-	 * The cached value of the '{@link #getEvent() <em>Event</em>}' reference.
+	 * The cached value of the '{@link #getEvents() <em>Events</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getEvent()
+	 * @see #getEvents()
 	 * @generated
 	 * @ordered
 	 */
-	protected Event event;
+	protected EList<Event> events;
 
 	/**
-	 * The cached value of the '{@link #getAction() <em>Action</em>}' reference.
+	 * The cached value of the '{@link #getActions() <em>Actions</em>}' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getAction()
+	 * @see #getActions()
 	 * @generated
 	 * @ordered
 	 */
-	protected Action action;
+	protected EList<Action> actions;
 
 	/**
 	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' reference list.
@@ -225,38 +228,11 @@
 	 * @generated
 	 */
 	@Override
-	public SecurityScheme getThingSec() {
-		if (thingSec != null && thingSec.eIsProxy()) {
-			InternalEObject oldThingSec = (InternalEObject)thingSec;
-			thingSec = (SecurityScheme)eResolveProxy(oldThingSec);
-			if (thingSec != oldThingSec) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.THING__THING_SEC, oldThingSec, thingSec));
-			}
+	public EList<SecurityScheme> getSecurity() {
+		if (security == null) {
+			security = new EObjectResolvingEList<SecurityScheme>(SecurityScheme.class, this, WoTPackage.THING__SECURITY);
 		}
-		return thingSec;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SecurityScheme basicGetThingSec() {
-		return thingSec;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setThingSec(SecurityScheme newThingSec) {
-		SecurityScheme oldThingSec = thingSec;
-		thingSec = newThingSec;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.THING__THING_SEC, oldThingSec, thingSec));
+		return security;
 	}
 
 	/**
@@ -318,25 +294,11 @@
 	 * @generated
 	 */
 	@Override
-	public Event getEvent() {
-		if (event != null && event.eIsProxy()) {
-			InternalEObject oldEvent = (InternalEObject)event;
-			event = (Event)eResolveProxy(oldEvent);
-			if (event != oldEvent) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.THING__EVENT, oldEvent, event));
-			}
+	public EList<Event> getEvents() {
+		if (events == null) {
+			events = new EObjectResolvingEList<Event>(Event.class, this, WoTPackage.THING__EVENTS);
 		}
-		return event;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Event basicGetEvent() {
-		return event;
+		return events;
 	}
 
 	/**
@@ -345,51 +307,11 @@
 	 * @generated
 	 */
 	@Override
-	public void setEvent(Event newEvent) {
-		Event oldEvent = event;
-		event = newEvent;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.THING__EVENT, oldEvent, event));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Action getAction() {
-		if (action != null && action.eIsProxy()) {
-			InternalEObject oldAction = (InternalEObject)action;
-			action = (Action)eResolveProxy(oldAction);
-			if (action != oldAction) {
-				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, WoTPackage.THING__ACTION, oldAction, action));
-			}
+	public EList<Action> getActions() {
+		if (actions == null) {
+			actions = new EObjectResolvingEList<Action>(Action.class, this, WoTPackage.THING__ACTIONS);
 		}
-		return action;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Action basicGetAction() {
-		return action;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setAction(Action newAction) {
-		Action oldAction = action;
-		action = newAction;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, WoTPackage.THING__ACTION, oldAction, action));
+		return actions;
 	}
 
 	/**
@@ -417,20 +339,17 @@
 				return getId();
 			case WoTPackage.THING__SUPPORT:
 				return getSupport();
-			case WoTPackage.THING__THING_SEC:
-				if (resolve) return getThingSec();
-				return basicGetThingSec();
+			case WoTPackage.THING__SECURITY:
+				return getSecurity();
 			case WoTPackage.THING__BASE:
 				if (resolve) return getBase();
 				return basicGetBase();
 			case WoTPackage.THING__LINKS:
 				return getLinks();
-			case WoTPackage.THING__EVENT:
-				if (resolve) return getEvent();
-				return basicGetEvent();
-			case WoTPackage.THING__ACTION:
-				if (resolve) return getAction();
-				return basicGetAction();
+			case WoTPackage.THING__EVENTS:
+				return getEvents();
+			case WoTPackage.THING__ACTIONS:
+				return getActions();
 			case WoTPackage.THING__PROPERTIES:
 				return getProperties();
 		}
@@ -452,8 +371,9 @@
 			case WoTPackage.THING__SUPPORT:
 				setSupport((String)newValue);
 				return;
-			case WoTPackage.THING__THING_SEC:
-				setThingSec((SecurityScheme)newValue);
+			case WoTPackage.THING__SECURITY:
+				getSecurity().clear();
+				getSecurity().addAll((Collection<? extends SecurityScheme>)newValue);
 				return;
 			case WoTPackage.THING__BASE:
 				setBase((Link)newValue);
@@ -462,11 +382,13 @@
 				getLinks().clear();
 				getLinks().addAll((Collection<? extends Link>)newValue);
 				return;
-			case WoTPackage.THING__EVENT:
-				setEvent((Event)newValue);
+			case WoTPackage.THING__EVENTS:
+				getEvents().clear();
+				getEvents().addAll((Collection<? extends Event>)newValue);
 				return;
-			case WoTPackage.THING__ACTION:
-				setAction((Action)newValue);
+			case WoTPackage.THING__ACTIONS:
+				getActions().clear();
+				getActions().addAll((Collection<? extends Action>)newValue);
 				return;
 			case WoTPackage.THING__PROPERTIES:
 				getProperties().clear();
@@ -490,8 +412,8 @@
 			case WoTPackage.THING__SUPPORT:
 				setSupport(SUPPORT_EDEFAULT);
 				return;
-			case WoTPackage.THING__THING_SEC:
-				setThingSec((SecurityScheme)null);
+			case WoTPackage.THING__SECURITY:
+				getSecurity().clear();
 				return;
 			case WoTPackage.THING__BASE:
 				setBase((Link)null);
@@ -499,11 +421,11 @@
 			case WoTPackage.THING__LINKS:
 				getLinks().clear();
 				return;
-			case WoTPackage.THING__EVENT:
-				setEvent((Event)null);
+			case WoTPackage.THING__EVENTS:
+				getEvents().clear();
 				return;
-			case WoTPackage.THING__ACTION:
-				setAction((Action)null);
+			case WoTPackage.THING__ACTIONS:
+				getActions().clear();
 				return;
 			case WoTPackage.THING__PROPERTIES:
 				getProperties().clear();
@@ -524,16 +446,16 @@
 				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__THING_SEC:
-				return thingSec != null;
+			case WoTPackage.THING__SECURITY:
+				return security != null && !security.isEmpty();
 			case WoTPackage.THING__BASE:
 				return base != null;
 			case WoTPackage.THING__LINKS:
 				return links != null && !links.isEmpty();
-			case WoTPackage.THING__EVENT:
-				return event != null;
-			case WoTPackage.THING__ACTION:
-				return action != null;
+			case WoTPackage.THING__EVENTS:
+				return events != null && !events.isEmpty();
+			case WoTPackage.THING__ACTIONS:
+				return actions != null && !actions.isEmpty();
 			case WoTPackage.THING__PROPERTIES:
 				return properties != null && !properties.isEmpty();
 		}
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 27470f3..8f3e728 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
@@ -14,6 +14,7 @@
 package org.eclipse.papyrus.iotml.wot.impl;
 
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 
@@ -73,8 +74,7 @@
 			case WoTPackage.EVENT: return createEvent();
 			case WoTPackage.INTERACTION_PATTERN: return createInteractionPattern();
 			case WoTPackage.FORM: return createForm();
-			case WoTPackage.DATA_SCHEME: return createDataScheme();
-			case WoTPackage.DATE: return createDate();
+			case WoTPackage.DATA_SCHEMA: return createDataSchema();
 			case WoTPackage.ACTION: return createAction();
 			case WoTPackage.PROPERTY: return createProperty();
 			default:
@@ -88,6 +88,44 @@
 	 * @generated
 	 */
 	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case WoTPackage.SECURITY_SCHEME_KIND:
+				return createSecuritySchemeKindFromString(eDataType, initialValue);
+			case WoTPackage.REL_KIND:
+				return createRelKindFromString(eDataType, initialValue);
+			case WoTPackage.SUB_PROTOCOL_KIND:
+				return createSubProtocolKindFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case WoTPackage.SECURITY_SCHEME_KIND:
+				return convertSecuritySchemeKindToString(eDataType, instanceValue);
+			case WoTPackage.REL_KIND:
+				return convertRelKindToString(eDataType, instanceValue);
+			case WoTPackage.SUB_PROTOCOL_KIND:
+				return convertSubProtocolKindToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Thing createThing() {
 		ThingImpl thing = new ThingImpl();
 		return thing;
@@ -154,20 +192,9 @@
 	 * @generated
 	 */
 	@Override
-	public DataScheme createDataScheme() {
-		DataSchemeImpl dataScheme = new DataSchemeImpl();
-		return dataScheme;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Date createDate() {
-		DateImpl date = new DateImpl();
-		return date;
+	public DataSchema createDataSchema() {
+		DataSchemaImpl dataSchema = new DataSchemaImpl();
+		return dataSchema;
 	}
 
 	/**
@@ -197,6 +224,66 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public SecuritySchemeKind createSecuritySchemeKindFromString(EDataType eDataType, String initialValue) {
+		SecuritySchemeKind result = SecuritySchemeKind.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertSecuritySchemeKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RelKind createRelKindFromString(EDataType eDataType, String initialValue) {
+		RelKind result = RelKind.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertRelKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SubProtocolKind createSubProtocolKindFromString(EDataType eDataType, String initialValue) {
+		SubProtocolKind result = SubProtocolKind.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertSubProtocolKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public WoTPackage getWoTPackage() {
 		return (WoTPackage)getEPackage();
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 0cc13ac..67d948a 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
@@ -15,6 +15,7 @@
 
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EcorePackage;
@@ -23,7 +24,6 @@
 
 import org.eclipse.papyrus.MARTE.MARTEPackage;
 
-import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.GRMPackage;
 import org.eclipse.papyrus.MARTE_Library.BasicNFP_Types.BasicNFP_TypesPackage;
 
 import org.eclipse.papyrus.MARTE_Library.GRM_BasicTypes.GRM_BasicTypesPackage;
@@ -97,14 +97,16 @@
 import org.eclipse.papyrus.iotml.software.resource.impl.ResourcePackageImpl;
 
 import org.eclipse.papyrus.iotml.wot.Action;
-import org.eclipse.papyrus.iotml.wot.DataScheme;
-import org.eclipse.papyrus.iotml.wot.Date;
+import org.eclipse.papyrus.iotml.wot.DataSchema;
 import org.eclipse.papyrus.iotml.wot.Event;
 import org.eclipse.papyrus.iotml.wot.Form;
 import org.eclipse.papyrus.iotml.wot.InteractionPattern;
 import org.eclipse.papyrus.iotml.wot.Link;
 import org.eclipse.papyrus.iotml.wot.Property;
+import org.eclipse.papyrus.iotml.wot.RelKind;
 import org.eclipse.papyrus.iotml.wot.SecurityScheme;
+import org.eclipse.papyrus.iotml.wot.SecuritySchemeKind;
+import org.eclipse.papyrus.iotml.wot.SubProtocolKind;
 import org.eclipse.papyrus.iotml.wot.Thing;
 import org.eclipse.papyrus.iotml.wot.WoTFactory;
 import org.eclipse.papyrus.iotml.wot.WoTPackage;
@@ -171,14 +173,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass dataSchemeEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EClass dateEClass = null;
+	private EClass dataSchemaEClass = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -195,6 +190,27 @@
 	private EClass propertyEClass = null;
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum securitySchemeKindEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum relKindEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum subProtocolKindEEnum = null;
+
+	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
 	 * package URI value.
@@ -365,7 +381,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_ThingSec() {
+	public EReference getThing_Security() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -395,7 +411,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Event() {
+	public EReference getThing_Events() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(5);
 	}
 
@@ -405,7 +421,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getThing_Action() {
+	public EReference getThing_Actions() {
 		return (EReference)thingEClass.getEStructuralFeatures().get(6);
 	}
 
@@ -445,8 +461,8 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getSecurityScheme_Description() {
-		return (EAttribute)securitySchemeEClass.getEStructuralFeatures().get(1);
+	public EReference getSecurityScheme_ProxyUrl() {
+		return (EReference)securitySchemeEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -455,7 +471,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getSecurityScheme_ProxyUrl() {
+	public EReference getSecurityScheme_Base_Classifier() {
 		return (EReference)securitySchemeEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -475,7 +491,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getLink_MediaType() {
+	public EAttribute getLink_Href() {
 		return (EAttribute)linkEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -485,7 +501,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getLink_Rel() {
+	public EAttribute getLink_MediaType() {
 		return (EAttribute)linkEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -495,8 +511,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getLink_Href() {
-		return (EReference)linkEClass.getEStructuralFeatures().get(2);
+	public EAttribute getLink_Rel() {
+		return (EAttribute)linkEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -505,8 +521,18 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getLink_Anchor() {
-		return (EReference)linkEClass.getEStructuralFeatures().get(3);
+	public EAttribute getLink_Anchor() {
+		return (EAttribute)linkEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getLink_Base_PrimitiveType() {
+		return (EReference)linkEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -525,7 +551,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getEvent_Base_Event() {
+	public EReference getEvent_Base_Signal() {
 		return (EReference)eventEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -555,7 +581,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getInteractionPattern_Description() {
+	public EAttribute getInteractionPattern_Scopes() {
 		return (EAttribute)interactionPatternEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -565,18 +591,8 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getInteractionPattern_Scopes() {
-		return (EAttribute)interactionPatternEClass.getEStructuralFeatures().get(2);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public EReference getInteractionPattern_IntSec() {
-		return (EReference)interactionPatternEClass.getEStructuralFeatures().get(3);
+	public EReference getInteractionPattern_Security() {
+		return (EReference)interactionPatternEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -586,7 +602,7 @@
 	 */
 	@Override
 	public EReference getInteractionPattern_Forms() {
-		return (EReference)interactionPatternEClass.getEStructuralFeatures().get(4);
+		return (EReference)interactionPatternEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -605,8 +621,8 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getForm_MediaType() {
-		return (EAttribute)formEClass.getEStructuralFeatures().get(0);
+	public EReference getForm_Href() {
+		return (EReference)formEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -615,7 +631,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getForm_Rel() {
+	public EAttribute getForm_MediaType() {
 		return (EAttribute)formEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -625,7 +641,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getForm_SubProtocol() {
+	public EAttribute getForm_Rel() {
 		return (EAttribute)formEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -635,7 +651,7 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getForm_Scopes() {
+	public EAttribute getForm_SubProtocol() {
 		return (EAttribute)formEClass.getEStructuralFeatures().get(3);
 	}
 
@@ -645,7 +661,7 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getForm_Href() {
+	public EReference getForm_Security() {
 		return (EReference)formEClass.getEStructuralFeatures().get(4);
 	}
 
@@ -655,8 +671,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getForm_FormSec() {
-		return (EReference)formEClass.getEStructuralFeatures().get(5);
+	public EAttribute getForm_Scopes() {
+		return (EAttribute)formEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -665,8 +681,8 @@
 	 * @generated
 	 */
 	@Override
-	public EClass getDataScheme() {
-		return dataSchemeEClass;
+	public EClass getDataSchema() {
+		return dataSchemaEClass;
 	}
 
 	/**
@@ -675,8 +691,8 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getDataScheme_Type() {
-		return (EAttribute)dataSchemeEClass.getEStructuralFeatures().get(0);
+	public EReference getDataSchema_Base_TypedElement() {
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -685,8 +701,8 @@
 	 * @generated
 	 */
 	@Override
-	public EAttribute getDataScheme_Description() {
-		return (EAttribute)dataSchemeEClass.getEStructuralFeatures().get(1);
+	public EReference getDataSchema_Enum() {
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -695,8 +711,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getDataScheme_Const() {
-		return (EReference)dataSchemeEClass.getEStructuralFeatures().get(2);
+	public EReference getDataSchema_NumberInterval() {
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -705,8 +721,8 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getDataScheme_Enum() {
-		return (EReference)dataSchemeEClass.getEStructuralFeatures().get(3);
+	public EReference getDataSchema_Required() {
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -715,8 +731,18 @@
 	 * @generated
 	 */
 	@Override
-	public EClass getDate() {
-		return dateEClass;
+	public EReference getDataSchema_Items() {
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getDataSchema_Properties() {
+		return (EReference)dataSchemaEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -755,6 +781,16 @@
 	 * @generated
 	 */
 	@Override
+	public EReference getAction_Base_BehavioralFeature() {
+		return (EReference)actionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public EClass getProperty() {
 		return propertyEClass;
 	}
@@ -775,8 +811,28 @@
 	 * @generated
 	 */
 	@Override
-	public EReference getProperty_Base_Property() {
-		return (EReference)propertyEClass.getEStructuralFeatures().get(1);
+	public EEnum getSecuritySchemeKind() {
+		return securitySchemeKindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getRelKind() {
+		return relKindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getSubProtocolKind() {
+		return subProtocolKindEEnum;
 	}
 
 	/**
@@ -811,57 +867,62 @@
 		thingEClass = createEClass(THING);
 		createEAttribute(thingEClass, THING__ID);
 		createEAttribute(thingEClass, THING__SUPPORT);
-		createEReference(thingEClass, THING__THING_SEC);
+		createEReference(thingEClass, THING__SECURITY);
 		createEReference(thingEClass, THING__BASE);
 		createEReference(thingEClass, THING__LINKS);
-		createEReference(thingEClass, THING__EVENT);
-		createEReference(thingEClass, THING__ACTION);
+		createEReference(thingEClass, THING__EVENTS);
+		createEReference(thingEClass, THING__ACTIONS);
 		createEReference(thingEClass, THING__PROPERTIES);
 
 		securitySchemeEClass = createEClass(SECURITY_SCHEME);
 		createEAttribute(securitySchemeEClass, SECURITY_SCHEME__SCHEME);
-		createEAttribute(securitySchemeEClass, SECURITY_SCHEME__DESCRIPTION);
 		createEReference(securitySchemeEClass, SECURITY_SCHEME__PROXY_URL);
+		createEReference(securitySchemeEClass, SECURITY_SCHEME__BASE_CLASSIFIER);
 
 		linkEClass = createEClass(LINK);
+		createEAttribute(linkEClass, LINK__HREF);
 		createEAttribute(linkEClass, LINK__MEDIA_TYPE);
 		createEAttribute(linkEClass, LINK__REL);
-		createEReference(linkEClass, LINK__HREF);
-		createEReference(linkEClass, LINK__ANCHOR);
+		createEAttribute(linkEClass, LINK__ANCHOR);
+		createEReference(linkEClass, LINK__BASE_PRIMITIVE_TYPE);
 
 		eventEClass = createEClass(EVENT);
-		createEReference(eventEClass, EVENT__BASE_EVENT);
+		createEReference(eventEClass, EVENT__BASE_SIGNAL);
 
 		interactionPatternEClass = createEClass(INTERACTION_PATTERN);
 		createEAttribute(interactionPatternEClass, INTERACTION_PATTERN__LABEL);
-		createEAttribute(interactionPatternEClass, INTERACTION_PATTERN__DESCRIPTION);
 		createEAttribute(interactionPatternEClass, INTERACTION_PATTERN__SCOPES);
-		createEReference(interactionPatternEClass, INTERACTION_PATTERN__INT_SEC);
+		createEReference(interactionPatternEClass, INTERACTION_PATTERN__SECURITY);
 		createEReference(interactionPatternEClass, INTERACTION_PATTERN__FORMS);
 
 		formEClass = createEClass(FORM);
+		createEReference(formEClass, FORM__HREF);
 		createEAttribute(formEClass, FORM__MEDIA_TYPE);
 		createEAttribute(formEClass, FORM__REL);
 		createEAttribute(formEClass, FORM__SUB_PROTOCOL);
+		createEReference(formEClass, FORM__SECURITY);
 		createEAttribute(formEClass, FORM__SCOPES);
-		createEReference(formEClass, FORM__HREF);
-		createEReference(formEClass, FORM__FORM_SEC);
 
-		dataSchemeEClass = createEClass(DATA_SCHEME);
-		createEAttribute(dataSchemeEClass, DATA_SCHEME__TYPE);
-		createEAttribute(dataSchemeEClass, DATA_SCHEME__DESCRIPTION);
-		createEReference(dataSchemeEClass, DATA_SCHEME__CONST);
-		createEReference(dataSchemeEClass, DATA_SCHEME__ENUM);
-
-		dateEClass = createEClass(DATE);
+		dataSchemaEClass = createEClass(DATA_SCHEMA);
+		createEReference(dataSchemaEClass, DATA_SCHEMA__BASE_TYPED_ELEMENT);
+		createEReference(dataSchemaEClass, DATA_SCHEMA__ENUM);
+		createEReference(dataSchemaEClass, DATA_SCHEMA__NUMBER_INTERVAL);
+		createEReference(dataSchemaEClass, DATA_SCHEMA__REQUIRED);
+		createEReference(dataSchemaEClass, DATA_SCHEMA__ITEMS);
+		createEReference(dataSchemaEClass, DATA_SCHEMA__PROPERTIES);
 
 		actionEClass = createEClass(ACTION);
 		createEReference(actionEClass, ACTION__INPUT);
 		createEReference(actionEClass, ACTION__OUTPUT);
+		createEReference(actionEClass, ACTION__BASE_BEHAVIORAL_FEATURE);
 
 		propertyEClass = createEClass(PROPERTY);
 		createEAttribute(propertyEClass, PROPERTY__OBSERVABLE);
-		createEReference(propertyEClass, PROPERTY__BASE_PROPERTY);
+
+		// Create enums
+		securitySchemeKindEEnum = createEEnum(SECURITY_SCHEME_KIND);
+		relKindEEnum = createEEnum(REL_KIND);
+		subProtocolKindEEnum = createEEnum(SUB_PROTOCOL_KIND);
 	}
 
 	/**
@@ -890,9 +951,8 @@
 		// Obtain other dependent packages
 		ArtefactPackage theArtefactPackage = (ArtefactPackage)EPackage.Registry.INSTANCE.getEPackage(ArtefactPackage.eNS_URI);
 		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
-		StructurePackage theStructurePackage = (StructurePackage)EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
 		UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
-		GRMPackage theGRMPackage = (GRMPackage)EPackage.Registry.INSTANCE.getEPackage(GRMPackage.eNS_URI);
+		StructurePackage theStructurePackage = (StructurePackage)EPackage.Registry.INSTANCE.getEPackage(StructurePackage.eNS_URI);
 
 		// Create type parameters
 
@@ -900,71 +960,94 @@
 
 		// Add supertypes to classes
 		thingEClass.getESuperTypes().add(theArtefactPackage.getVirtualEntity());
-		securitySchemeEClass.getESuperTypes().add(theStructurePackage.getDetailedValueSpecification());
-		linkEClass.getESuperTypes().add(theStructurePackage.getDetailedValueSpecification());
+		eventEClass.getESuperTypes().add(this.getDataSchema());
 		eventEClass.getESuperTypes().add(this.getInteractionPattern());
-		interactionPatternEClass.getESuperTypes().add(theGRMPackage.getGrService());
-		formEClass.getESuperTypes().add(theStructurePackage.getDetailedValueSpecification());
-		dataSchemeEClass.getESuperTypes().add(theStructurePackage.getDetailedValueSpecification());
-		dateEClass.getESuperTypes().add(theStructurePackage.getDetailedValueSpecification());
+		formEClass.getESuperTypes().add(theStructurePackage.getMetaValueSpecification());
 		actionEClass.getESuperTypes().add(this.getInteractionPattern());
+		propertyEClass.getESuperTypes().add(this.getDataSchema());
 		propertyEClass.getESuperTypes().add(this.getInteractionPattern());
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(thingEClass, Thing.class, "Thing", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getThing_Id(), theTypesPackage.getString(), "id", null, 1, 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_ThingSec(), this.getSecurityScheme(), null, "thingSec", 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_Security(), this.getSecurityScheme(), null, "security", 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(), this.getLink(), null, "base", 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_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_Event(), this.getEvent(), null, "event", 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_Action(), this.getAction(), null, "action", 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_Events(), this.getEvent(), 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.getAction(), 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.getProperty(), 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);
 
 		initEClass(securitySchemeEClass, SecurityScheme.class, "SecurityScheme", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getSecurityScheme_Scheme(), theTypesPackage.getString(), "scheme", 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, 0, 1, SecurityScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getSecurityScheme_ProxyUrl(), this.getLink(), null, "proxyUrl", 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_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);
+		initEReference(getSecurityScheme_ProxyUrl(), this.getLink(), null, "proxyUrl", null, 1, 1, SecurityScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		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);
 
 		initEClass(linkEClass, Link.class, "Link", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getLink_MediaType(), theTypesPackage.getString(), "mediaType", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEAttribute(getLink_Rel(), theTypesPackage.getString(), "rel", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getLink_Href(), this.getLink(), null, "href", null, 1, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getLink_Anchor(), this.getLink(), null, "anchor", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLink_Href(), theTypesPackage.getString(), "href", null, 1, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLink_MediaType(), theTypesPackage.getString(), "mediaType", "application/json", 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLink_Rel(), this.getRelKind(), "rel", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		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);
+		initEReference(getLink_Base_PrimitiveType(), theUMLPackage.getPrimitiveType(), null, "base_PrimitiveType", null, 0, 1, Link.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(eventEClass, Event.class, "Event", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getEvent_Base_Event(), theUMLPackage.getEvent(), null, "base_Event", null, 0, 1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getEvent_Base_Signal(), theUMLPackage.getSignal(), null, "base_Signal", null, 0, 1, Event.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(interactionPatternEClass, InteractionPattern.class, "InteractionPattern", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getInteractionPattern_Label(), theTypesPackage.getString(), "label", null, 1, 1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEAttribute(getInteractionPattern_Description(), theTypesPackage.getString(), "description", null, 1, 1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEAttribute(getInteractionPattern_Scopes(), theTypesPackage.getString(), "scopes", null, 0, 1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getInteractionPattern_IntSec(), this.getSecurityScheme(), null, "intSec", null, 0, 1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getInteractionPattern_Forms(), this.getForm(), null, "forms", null, 0, -1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getInteractionPattern_Label(), theTypesPackage.getString(), "label", null, 0, 1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getInteractionPattern_Scopes(), theTypesPackage.getString(), "scopes", null, 0, -1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getInteractionPattern_Security(), this.getSecurityScheme(), null, "security", null, 0, -1, InteractionPattern.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getInteractionPattern_Forms(), this.getForm(), null, "forms", null, 1, -1, InteractionPattern.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_MediaType(), theTypesPackage.getString(), "mediaType", null, 0, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEAttribute(getForm_Rel(), theTypesPackage.getString(), "rel", null, 0, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEAttribute(getForm_SubProtocol(), theTypesPackage.getString(), "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);
 		initEReference(getForm_Href(), this.getLink(), null, "href", 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_FormSec(), this.getSecurityScheme(), null, "formSec", null, 1, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getForm_MediaType(), theTypesPackage.getString(), "mediaType", "application/json", 0, 1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getForm_Rel(), this.getRelKind(), "rel", 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);
+		initEReference(getForm_Security(), this.getSecurityScheme(), null, "security", null, 0, -1, Form.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, 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);
 
-		initEClass(dataSchemeEClass, DataScheme.class, "DataScheme", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getDataScheme_Type(), theTypesPackage.getString(), "type", null, 0, 1, DataScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEAttribute(getDataScheme_Description(), theTypesPackage.getString(), "description", null, 0, 1, DataScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getDataScheme_Const(), this.getDate(), null, "const", null, 1, 1, DataScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getDataScheme_Enum(), this.getDate(), null, "enum", null, 1, 1, DataScheme.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-
-		initEClass(dateEClass, Date.class, "Date", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEClass(dataSchemaEClass, DataSchema.class, "DataSchema", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		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);
+		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, 1, 1, DataSchema.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(actionEClass, Action.class, "Action", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getAction_Input(), this.getDataScheme(), null, "input", null, 0, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getAction_Output(), this.getDataScheme(), null, "output", null, 1, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAction_Input(), this.getDataSchema(), null, "input", null, 0, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAction_Output(), this.getDataSchema(), null, "output", null, 0, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAction_Base_BehavioralFeature(), theUMLPackage.getBehavioralFeature(), null, "base_BehavioralFeature", null, 0, 1, Action.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getProperty_Observable(), theTypesPackage.getBoolean(), "observable", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getProperty_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(securitySchemeKindEEnum, SecuritySchemeKind.class, "SecuritySchemeKind");
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.NOSEC);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.BASIC);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.CERT);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.DIGEST);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.BEARER);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.POP);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.PSK);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.PUBLIC);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.OAUTH);
+		addEEnumLiteral(securitySchemeKindEEnum, SecuritySchemeKind.APIKEY);
+
+		initEEnum(relKindEEnum, RelKind.class, "RelKind");
+		addEEnumLiteral(relKindEEnum, RelKind.NONE);
+		addEEnumLiteral(relKindEEnum, RelKind.READPROPERTY);
+		addEEnumLiteral(relKindEEnum, RelKind.WRITEPROPERTY);
+		addEEnumLiteral(relKindEEnum, RelKind.OBSERVERPROPERTY);
+		addEEnumLiteral(relKindEEnum, RelKind.INVOKEACTION);
+		addEEnumLiteral(relKindEEnum, RelKind.SUBSCRIBEEVENT);
+		addEEnumLiteral(relKindEEnum, RelKind.UNSUBSCRIBEEVENT);
+
+		initEEnum(subProtocolKindEEnum, SubProtocolKind.class, "SubProtocolKind");
+		addEEnumLiteral(subProtocolKindEEnum, SubProtocolKind.NONE);
+		addEEnumLiteral(subProtocolKindEEnum, SubProtocolKind.LONG_POLL);
 
 		// Create resource
 		createResource(eNS_URI);
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 04d4571..891fd2a 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
@@ -19,10 +19,12 @@
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.GrService;
+
 import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
 import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
-import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
+
+import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
+
 import org.eclipse.papyrus.iotml.wot.*;
 
 /**
@@ -106,12 +108,8 @@
 				return createFormAdapter();
 			}
 			@Override
-			public Adapter caseDataScheme(DataScheme object) {
-				return createDataSchemeAdapter();
-			}
-			@Override
-			public Adapter caseDate(Date object) {
-				return createDateAdapter();
+			public Adapter caseDataSchema(DataSchema object) {
+				return createDataSchemaAdapter();
 			}
 			@Override
 			public Adapter caseAction(Action object) {
@@ -130,12 +128,8 @@
 				return createVirtualEntityAdapter();
 			}
 			@Override
-			public Adapter caseDetailedValueSpecification(DetailedValueSpecification object) {
-				return createDetailedValueSpecificationAdapter();
-			}
-			@Override
-			public Adapter caseGrService(GrService object) {
-				return createGrServiceAdapter();
+			public Adapter caseMetaValueSpecification(MetaValueSpecification object) {
+				return createMetaValueSpecificationAdapter();
 			}
 			@Override
 			public Adapter defaultCase(EObject object) {
@@ -242,30 +236,16 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.wot.DataScheme <em>Data Scheme</em>}'.
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.wot.DataSchema <em>Data Schema</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.wot.DataScheme
+	 * @see org.eclipse.papyrus.iotml.wot.DataSchema
 	 * @generated
 	 */
-	public Adapter createDataSchemeAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.wot.Date <em>Date</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.wot.Date
-	 * @generated
-	 */
-	public Adapter createDateAdapter() {
+	public Adapter createDataSchemaAdapter() {
 		return null;
 	}
 
@@ -326,30 +306,16 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification <em>Detailed Value Specification</em>}'.
+	 * 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.DetailedValueSpecification
+	 * @see org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification
 	 * @generated
 	 */
-	public Adapter createDetailedValueSpecificationAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.GrService <em>Gr Service</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.MARTE.MARTE_Foundations.GRM.GrService
-	 * @generated
-	 */
-	public Adapter createGrServiceAdapter() {
+	public Adapter createMetaValueSpecificationAdapter() {
 		return 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 704f361..d4f3da1 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
@@ -17,10 +17,12 @@
 import org.eclipse.emf.ecore.EPackage;
 
 import org.eclipse.emf.ecore.util.Switch;
-import org.eclipse.papyrus.MARTE.MARTE_Foundations.GRM.GrService;
+
 import org.eclipse.papyrus.iotml.software.artefact.DigitalArtefact;
 import org.eclipse.papyrus.iotml.software.artefact.VirtualEntity;
-import org.eclipse.papyrus.iotml.software.core.structure.DetailedValueSpecification;
+
+import org.eclipse.papyrus.iotml.software.core.structure.MetaValueSpecification;
+
 import org.eclipse.papyrus.iotml.wot.*;
 
 /**
@@ -91,50 +93,39 @@
 			case WoTPackage.SECURITY_SCHEME: {
 				SecurityScheme securityScheme = (SecurityScheme)theEObject;
 				T result = caseSecurityScheme(securityScheme);
-				if (result == null) result = caseDetailedValueSpecification(securityScheme);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case WoTPackage.LINK: {
 				Link link = (Link)theEObject;
 				T result = caseLink(link);
-				if (result == null) result = caseDetailedValueSpecification(link);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case WoTPackage.EVENT: {
 				Event event = (Event)theEObject;
 				T result = caseEvent(event);
+				if (result == null) result = caseDataSchema(event);
 				if (result == null) result = caseInteractionPattern(event);
-				if (result == null) result = caseGrService(event);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case WoTPackage.INTERACTION_PATTERN: {
 				InteractionPattern interactionPattern = (InteractionPattern)theEObject;
 				T result = caseInteractionPattern(interactionPattern);
-				if (result == null) result = caseGrService(interactionPattern);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case WoTPackage.FORM: {
 				Form form = (Form)theEObject;
 				T result = caseForm(form);
-				if (result == null) result = caseDetailedValueSpecification(form);
+				if (result == null) result = caseMetaValueSpecification(form);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case WoTPackage.DATA_SCHEME: {
-				DataScheme dataScheme = (DataScheme)theEObject;
-				T result = caseDataScheme(dataScheme);
-				if (result == null) result = caseDetailedValueSpecification(dataScheme);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case WoTPackage.DATE: {
-				Date date = (Date)theEObject;
-				T result = caseDate(date);
-				if (result == null) result = caseDetailedValueSpecification(date);
+			case WoTPackage.DATA_SCHEMA: {
+				DataSchema dataSchema = (DataSchema)theEObject;
+				T result = caseDataSchema(dataSchema);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -142,15 +133,14 @@
 				Action action = (Action)theEObject;
 				T result = caseAction(action);
 				if (result == null) result = caseInteractionPattern(action);
-				if (result == null) result = caseGrService(action);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case WoTPackage.PROPERTY: {
 				Property property = (Property)theEObject;
 				T result = caseProperty(property);
+				if (result == null) result = caseDataSchema(property);
 				if (result == null) result = caseInteractionPattern(property);
-				if (result == null) result = caseGrService(property);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -249,32 +239,17 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Data Scheme</em>'.
+	 * Returns the result of interpreting the object as an instance of '<em>Data Schema</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>Data Scheme</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Data Schema</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseDataScheme(DataScheme object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Date</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>Date</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseDate(Date object) {
+	public T caseDataSchema(DataSchema object) {
 		return null;
 	}
 
@@ -339,32 +314,17 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Detailed Value Specification</em>'.
+	 * 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>Detailed Value Specification</em>'.
+	 * @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 caseDetailedValueSpecification(DetailedValueSpecification object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Gr Service</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>Gr Service</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseGrService(GrService object) {
+	public T caseMetaValueSpecification(MetaValueSpecification object) {
 		return 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 6e9a45b..7e8bad3 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
@@ -21,7 +21,7 @@
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.papyrus.sysml14.feature.feature.group" version="0.0.0"/>
-      <repository id="papyrus-sysml14-photon" location="https://hudson.eclipse.org/papyrus/job/papyrus-sysml-master/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.sysml14.p2/target/repository/"/>
+      <repository id="papyrus-sysml14-photon" location="https://ci.eclipse.org/papyrus/view/Sysml/job/papyrus-sysml14-master/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.sysml14.p2/target/repository/"/>
     </location>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.papyrus.moka.feature.feature.group" version="0.0.0"/>