Просмотр исходного кода

FEAT - Updated ontology with artifacts features and added test pms

marcioantfilho 4 месяцев назад
Родитель
Сommit
359b298324

+ 206 - 0
ontology/system/src/oml/ua.be/sdo2l/description/artifacts/MyPM_2_pm.oml

@@ -0,0 +1,206 @@
+description <http://ua.be/sdo2l/description/artifacts/MyPM_2_pm#> as MyPM_2_pm {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  extends <http://ua.be/sdo2l/description/artifacts/FTG_ftg#> as ftg_instance
+  extends <http://ua.be/sdo2l/description/artifacts/RefinementPM#> as RefinementPM
+
+  instance model : pm:Model [
+    object_diagram:hasName "MyPM_2_pm"
+  ]
+ 
+  instance initial : pm:Initial [
+  	pm:hasName "Start Sketching Process"
+    object_diagram:inModel model
+    pm:ctrlTo activity_0_port_0
+  ]
+
+  instance activity_0_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+  ]
+
+  instance activity_0 : pm:Activity [
+    pm:hasName "sketch"
+    pm:isTransformation ftg_instance:t_Sketch
+    object_diagram:inModel model
+  ]
+
+  instance activity_0_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:ctrlTo activity_1_port_0
+  ]
+
+  instance activity_0_port_2 : pm:ActivityDataOutputPort [ 
+    pm:hasName "sketch"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:dataTo artifact_0
+  ]
+
+  instance activity_1_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+  ]
+
+  instance activity_1_port_2 : pm:DataInputPort [
+    pm:hasName "sketch"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+  ]
+
+  instance activity_1 : pm:Activity [
+    pm:hasName "look_at_sketch"
+    pm:isTransformation ftg_instance:t_LookAtSketch
+    object_diagram:inModel model
+  ]
+
+  instance activity_1_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:ctrlTo invoking_activity_port_0
+  ]
+
+  instance activity_1_port_3 : pm:CtrlOutputPort [
+    pm:hasName "cout_end"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:ctrlTo final
+  ]
+
+  instance invoking_activity_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity invoking_activity
+    object_diagram:inModel model
+  ]
+
+  instance invoking_activity : pm:InvokingActivity [
+	 pm:hasName "refine_sketch_process"
+	 pm:isTransformation ftg_instance:t_LookAtSketch
+	 pm:invokesPM RefinementPM:model
+	 object_diagram:inModel model
+  ]
+
+  instance invoking_activity_port_2 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity invoking_activity
+    object_diagram:inModel model
+    pm:ctrlTo evaluate_sketch_input_port
+  ]
+  
+  instance invoking_activity_data_output : pm:ActivityDataOutputPort [
+    pm:hasName "rsketch"
+    pm:ofActivity invoking_activity
+    object_diagram:inModel model
+    pm:dataTo refined_sketch_artifact
+  ]
+
+  instance evaluate_sketch_input_port : pm:CtrlInputPort [
+    pm:hasName "cin_evaluate"
+    pm:ofActivity evaluate_sketch
+    object_diagram:inModel model
+  ]
+
+  instance evaluate_sketch_data_input : pm:DataInputPort [
+      pm:hasName "refined_sketch_in"
+      pm:ofActivity evaluate_sketch
+      object_diagram:inModel model
+  ]
+
+  instance evaluate_sketch : pm:Activity [
+      pm:hasName "evaluate_sketch"
+      pm:isTransformation ftg_instance:t_LookAtSketch
+      object_diagram:inModel model
+  ]
+
+  instance evaluate_sketch_output_port : pm:CtrlOutputPort [
+      pm:hasName "cout_evaluated"
+      pm:ofActivity evaluate_sketch
+      object_diagram:inModel model
+      pm:ctrlTo final
+  ]
+
+  instance final : pm:Final [
+  	pm:hasName "End Sketching Process"
+    object_diagram:inModel model
+  ]
+
+  instance artifact_0 : pm:Artifact [
+    pm:hasName "sketch"
+    pm:hasType ftg_instance:f_xopp
+    object_diagram:inModel model
+    pm:dataTo activity_1_port_2
+  ]
+
+  instance refined_sketch_artifact : pm:Artifact [
+    pm:hasName "refined_sketch"
+    pm:hasType ftg_instance:f_xopp
+    object_diagram:inModel model
+    pm:dataTo evaluate_sketch_data_input
+  ]
+  
+  relation instance ctrl_flow_0 : pm:CtrlFlow [
+    from initial
+    to activity_0_port_0
+    object_diagram:inModel model
+  ]
+
+  relation instance ctrl_flow_1 : pm:CtrlFlow [
+    from activity_0_port_1
+    to activity_1_port_0
+    object_diagram:inModel model
+  ]
+
+  relation instance ctrl_flow_2 : pm:CtrlFlow [
+    from activity_1_port_1
+    to invoking_activity_port_0
+    object_diagram:inModel model
+  ]
+
+  relation instance ctrl_flow_3 : pm:CtrlFlow [
+    from activity_1_port_3
+    to final
+    object_diagram:inModel model
+  ]
+
+  relation instance ctrl_flow_4 : pm:CtrlFlow [
+    from invoking_activity_port_2
+    to evaluate_sketch_input_port
+    object_diagram:inModel model
+  ]
+
+  relation instance ctrl_flow_5 : pm:CtrlFlow [
+      from evaluate_sketch_output_port
+      to final
+      object_diagram:inModel model
+  ]
+
+  relation instance data_flow_0 : pm:DataFlow [
+    from artifact_0
+    to activity_1_port_2
+    object_diagram:inModel model
+  ]
+
+  relation instance data_flow_1 : pm:DataFlow [
+    from activity_0_port_2
+    to artifact_0
+    object_diagram:inModel model
+  ]
+
+  relation instance data_flow_2 : pm:DataFlow [
+      from invoking_activity_data_output
+      to refined_sketch_artifact
+      object_diagram:inModel model
+  ]
+
+  relation instance data_flow_3 : pm:DataFlow [
+      from refined_sketch_artifact
+      to evaluate_sketch_data_input
+      object_diagram:inModel model
+  ]
+}

+ 12 - 15
ontology/system/src/oml/ua.be/sdo2l/description/artifacts/MyPM_pm.oml

@@ -2,17 +2,16 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
 
   uses <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm
   uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
-
   extends <http://ua.be/sdo2l/description/artifacts/FTG_ftg#> as ftg_instance
-  extends <http://ua.be/sdo2l/description/artifacts/EarlyDesignSketching_pm#> as early_design_sketching_pm
+  extends <http://ua.be/sdo2l/description/artifacts/RefinementPM#> as RefinementPM
 
   instance model : pm:Model [
     object_diagram:hasName "MyPM_pm"
-  ] 
+  ]
  
   instance initial : pm:Initial [
     object_diagram:inModel model
-    pm:ctrlTo activity_0_port_0 
+    pm:ctrlTo activity_0_port_0
   ]
 
   instance activity_0_port_0 : pm:CtrlInputPort [
@@ -31,14 +30,14 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
     pm:hasName "cout"
     pm:ofActivity activity_0
     object_diagram:inModel model
-    pm:ctrlTo activity_1_port_0 // Fluxo de controle para a atividade 1
+    pm:ctrlTo activity_1_port_0
   ]
 
   instance activity_0_port_2 : pm:DataOutputPort [
     pm:hasName "sketch"
     pm:ofActivity activity_0
     object_diagram:inModel model
-    pm:dataTo artifact_0 // Fluxo de dados para o artefato
+    pm:dataTo artifact_0
   ]
 
   instance activity_1_port_0 : pm:CtrlInputPort [
@@ -63,14 +62,14 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
     pm:hasName "cout"
     pm:ofActivity activity_1
     object_diagram:inModel model
-    pm:ctrlTo invoking_activity_port_0 // Fluxo para invocar outro modelo
+    pm:ctrlTo invoking_activity_port_0
   ]
 
   instance activity_1_port_3 : pm:CtrlOutputPort [
     pm:hasName "cout_end"
     pm:ofActivity activity_1
     object_diagram:inModel model
-    pm:ctrlTo final // Fluxo final
+    pm:ctrlTo final
   ]
 
   instance invoking_activity_port_0 : pm:CtrlInputPort [
@@ -80,9 +79,9 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
   ]
 
   instance invoking_activity : pm:InvokingActivity [
-	 pm:hasName "rec"
+	 pm:hasName "refine_sketch_process"
 	 pm:isTransformation ftg_instance:t_LookAtSketch
-	 pm:invokesPM model  
+	 pm:invokesPM RefinementPM:model
 	 object_diagram:inModel model
   ]
 
@@ -90,7 +89,7 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
     pm:hasName "cout"
     pm:ofActivity invoking_activity
     object_diagram:inModel model
-    pm:ctrlTo final // Fluxo final após invocação
+    pm:ctrlTo final
   ]
 
   instance final : pm:Final [
@@ -101,10 +100,9 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
     pm:hasName "sketch"
     pm:hasType ftg_instance:f_xopp
     object_diagram:inModel model
-    pm:dataTo activity_1_port_2 // Fluxo de dados para a atividade 1
+    pm:dataTo activity_1_port_2
   ]
   
-  // Relações de fluxo de controle
   relation instance ctrl_flow_0 : pm:CtrlFlow [
     from initial
     to activity_0_port_0
@@ -135,7 +133,6 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
     object_diagram:inModel model
   ]
 
-  // Fluxo de dados
   relation instance data_flow_0 : pm:DataFlow [
     from artifact_0
     to activity_1_port_2
@@ -147,4 +144,4 @@ description <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm {
     to artifact_0
     object_diagram:inModel model
   ]
-}
+}

+ 5 - 3
ontology/system/src/oml/ua.be/sdo2l/description/artifacts/Paralels_pm.oml

@@ -2,13 +2,14 @@ description <http://ua.be/sdo2l/description/artifacts/Paralels_pm#> as Paralels_
 
   uses <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm
   uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
-  extends <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as MyPM_pm
+  extends <http://ua.be/sdo2l/description/artifacts/MyPM_2_pm#> as MyPM_2_pm
 
   instance model : pm:Model [
     object_diagram:hasName "Paralels_pm"
   ]
 
   instance initial : pm:Initial [
+  	pm:hasName "Start Parallel Process"
     object_diagram:inModel model
     pm:ctrlTo splitter
   ]
@@ -27,7 +28,7 @@ description <http://ua.be/sdo2l/description/artifacts/Paralels_pm#> as Paralels_
 
   instance invoking_1 : pm:InvokingActivity [
     pm:hasName "Invoke_MyPM_1"
-    pm:invokesPM MyPM_pm:model
+    pm:invokesPM MyPM_2_pm:model
     object_diagram:inModel model
   ]
 
@@ -46,7 +47,7 @@ description <http://ua.be/sdo2l/description/artifacts/Paralels_pm#> as Paralels_
 
   instance invoking_2 : pm:InvokingActivity [
     pm:hasName "Invoke_MyPM_2"
-    pm:invokesPM MyPM_pm:model
+    pm:invokesPM MyPM_2_pm:model
     object_diagram:inModel model
   ]
 
@@ -63,6 +64,7 @@ description <http://ua.be/sdo2l/description/artifacts/Paralels_pm#> as Paralels_
   ]
 
   instance final : pm:Final [
+  	pm:hasName "End Parallel Process"
     object_diagram:inModel model
   ]
   

+ 83 - 0
ontology/system/src/oml/ua.be/sdo2l/description/artifacts/RefinementPM.oml

@@ -0,0 +1,83 @@
+description <http://ua.be/sdo2l/description/artifacts/RefinementPM#> as RefinementPM {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  extends <http://ua.be/sdo2l/description/artifacts/FTG_ftg#> as ftg_instance
+
+  instance model : pm:Model [
+    object_diagram:hasName "RefinementPM"
+  ]
+
+  instance initial : pm:Initial [
+  	pm:hasName "Start Refinement"
+    object_diagram:inModel model
+    pm:ctrlTo activity_gen_port_in
+  ]
+
+  instance activity_gen : pm:Activity [
+    pm:hasName "generate_refined_sketch"
+    pm:isTransformation ftg_instance:t_Sketch
+    object_diagram:inModel model
+  ]
+
+  instance activity_gen_port_in : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_gen
+    object_diagram:inModel model
+  ]
+
+  instance activity_gen_port_cout : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_gen
+    object_diagram:inModel model
+    pm:ctrlTo final
+  ]
+
+  instance activity_gen_port_dout : pm:ActivityDataOutputPort [
+    pm:hasName "refined_sketch_out"
+    pm:ofActivity activity_gen
+    object_diagram:inModel model
+    pm:dataTo refined_artifact
+  ]
+
+  instance refined_artifact : pm:Artifact [
+    pm:hasName "refined_sketch"
+    pm:hasType ftg_instance:f_xopp
+    object_diagram:inModel model
+    pm:dataTo parameter_output
+  ]
+  
+    relation instance data_flow_gen_2 : pm:DataFlow [
+    from refined_artifact
+    to parameter_output
+    object_diagram:inModel model
+  ]
+
+  instance final : pm:Final [
+  	pm:hasName "End Refinement"
+    object_diagram:inModel model
+  ]
+
+  relation instance ctrl_flow_gen_1 : pm:CtrlFlow [
+    from initial
+    to activity_gen_port_in
+    object_diagram:inModel model
+  ]
+
+  relation instance ctrl_flow_gen_2 : pm:CtrlFlow [
+    from activity_gen_port_cout
+    to final
+    object_diagram:inModel model
+  ]
+  
+  instance parameter_output : pm:DataOutputPort [
+      pm:hasName "rsketch"
+      object_diagram:inModel model
+  ]
+
+  relation instance data_flow_gen_1 : pm:DataFlow [
+    from activity_gen_port_dout
+    to refined_artifact
+    object_diagram:inModel model
+  ]
+}

+ 142 - 0
ontology/system/src/oml/ua.be/sdo2l/description/artifacts/drivetrain_hierarchical_pm.oml

@@ -0,0 +1,142 @@
+description <http://ua.be/sdo2l/description/artifacts/drivetrain_hierarchical_pm#> as drivetrain_hierarchical_pm {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/ftg#> as ftg
+
+  extends <http://ua.be/sdo2l/description/artifacts/FTG_ftg#> as ftg_instance
+
+  // Main hierarchical process model
+  instance model : pm:Model [
+    object_diagram:hasName "drivetrain_hierarchical_pm"
+  ]
+
+  instance initial : pm:Initial [ pm:hasName "initial" object_diagram:inModel model ]
+  instance final : pm:Final [ pm:hasName "final" object_diagram:inModel model ]
+
+  // --- Artifacts in Main Model ---
+  instance artifact_0 : pm:Artifact [ pm:hasName "drivetrain_limitations" pm:hasType ftg_instance:f_TextDocument object_diagram:inModel model ]
+  instance artifact_1 : pm:Artifact [ pm:hasName "test_requirements" pm:hasType ftg_instance:f_TextDocument object_diagram:inModel model ]
+  instance artifact_2 : pm:Artifact [ pm:hasName "matlab_torque" pm:hasType ftg_instance:f_Profile object_diagram:inModel model ]
+  instance artifact_3 : pm:Artifact [ pm:hasName "control_parameter_generator" pm:hasType ftg_instance:f_Script object_diagram:inModel model ]
+  instance artifact_6 : pm:Artifact [ pm:hasName "drivetrain_sensor_data" pm:hasType ftg_instance:f_TabularData object_diagram:inModel model ]
+  instance artifact_7 : pm:Artifact [ pm:hasName "coupling_sensor_data" pm:hasType ftg_instance:f_TabularData object_diagram:inModel model ]
+
+  // --- Activities in Main Model ---
+  instance activity_5 : pm:Activity [ pm:hasName "InputParameters" pm:isTransformation ftg_instance:t_Preparation object_diagram:inModel model ]
+  instance activity_0 : pm:Activity [ pm:hasName "set_up_drivetrain_profile" pm:isTransformation ftg_instance:t_SetupProfile object_diagram:inModel model ]
+  instance hierarchical_activity : pm:InvokingActivity [ pm:hasName "Conduct_Experiment" pm:invokesPM model_sub object_diagram:inModel model ]
+  instance activity_4 : pm:Activity [ pm:hasName "check_properties" pm:isTransformation ftg_instance:t_VerifyData object_diagram:inModel model ]
+
+  // --- Ports for Main Model Activities ---
+  instance activity_5_port_0 : pm:CtrlInputPort [ pm:hasName "cin" pm:ofActivity activity_5 ]
+  instance activity_5_port_1 : pm:CtrlOutputPort [ pm:hasName "cout" pm:ofActivity activity_5 ]
+  instance activity_5_port_2 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity activity_5 ]
+  instance activity_5_port_3 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity activity_5 ]
+  instance activity_5_port_4 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity activity_5 ]
+
+  instance activity_0_port_0 : pm:CtrlInputPort [ pm:hasName "cin" pm:ofActivity activity_0 ]
+  instance activity_0_port_2 : pm:CtrlOutputPort [ pm:hasName "cout" pm:ofActivity activity_0 ]
+  instance activity_0_port_3 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity activity_0 ]
+  instance activity_0_port_4 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity activity_0 ]
+  instance activity_0_port_5 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity activity_0 ]
+
+  instance hierarchical_activity_port_0 : pm:CtrlInputPort [ pm:hasName "cin" pm:ofActivity hierarchical_activity ]
+  instance hierarchical_activity_port_1 : pm:CtrlOutputPort [ pm:hasName "cout" pm:ofActivity hierarchical_activity ]
+  //Corrected to match the actual inputs needed by the sub-process
+  instance hierarchical_activity_port_2 : pm:DataInputPort [ pm:hasName "din_torque" pm:ofActivity hierarchical_activity ]
+  instance hierarchical_activity_port_3 : pm:DataInputPort [ pm:hasName "din_generator" pm:ofActivity hierarchical_activity ]
+  instance hierarchical_activity_port_4 : pm:DataInputPort [ pm:hasName "din_reqs" pm:ofActivity hierarchical_activity ]
+  //Outputs from the sub-process
+  instance hierarchical_activity_port_5 : pm:DataOutputPort [ pm:hasName "dout_drivetrain_data" pm:ofActivity hierarchical_activity ]
+  instance hierarchical_activity_port_6 : pm:DataOutputPort [ pm:hasName "dout_coupling_data" pm:ofActivity hierarchical_activity ]
+
+  instance activity_4_port_0 : pm:CtrlInputPort [ pm:hasName "cin" pm:ofActivity activity_4 ]
+  instance activity_4_port_1 : pm:CtrlOutputPort [ pm:hasName "cout" pm:ofActivity activity_4 ]
+  instance activity_4_port_3 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity activity_4 ]
+  instance activity_4_port_4 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity activity_4 ]
+
+  // --- Flows in Main Model ---
+  relation instance ctrl_flow_0 : pm:CtrlFlow [ from initial to activity_5_port_0 object_diagram:inModel model ]
+  relation instance ctrl_flow_1 : pm:CtrlFlow [ from activity_5_port_1 to activity_0_port_0 object_diagram:inModel model ]
+  relation instance ctrl_flow_2 : pm:CtrlFlow [ from activity_0_port_2 to hierarchical_activity_port_0 object_diagram:inModel model ]
+  relation instance ctrl_flow_3 : pm:CtrlFlow [ from hierarchical_activity_port_1 to activity_4_port_0 object_diagram:inModel model ]
+  relation instance ctrl_flow_4 : pm:CtrlFlow [ from activity_4_port_1 to final object_diagram:inModel model ]
+
+  relation instance data_flow_0 : pm:DataFlow [ from activity_5_port_2 to artifact_0 object_diagram:inModel model ]
+  relation instance data_flow_1 : pm:DataFlow [ from artifact_0 to activity_0_port_3 object_diagram:inModel model ]
+  relation instance data_flow_2 : pm:DataFlow [ from activity_5_port_3 to artifact_1 object_diagram:inModel model ]
+  relation instance data_flow_3 : pm:DataFlow [ from artifact_1 to activity_0_port_4 object_diagram:inModel model ]
+  relation instance data_flow_4 : pm:DataFlow [ from activity_0_port_5 to artifact_2 object_diagram:inModel model ]
+  relation instance data_flow_5 : pm:DataFlow [ from activity_5_port_4 to artifact_3 object_diagram:inModel model ]
+  //Data flows into the invoking activity
+  relation instance data_flow_6 : pm:DataFlow [ from artifact_2 to hierarchical_activity_port_2 object_diagram:inModel model ]
+  relation instance data_flow_7 : pm:DataFlow [ from artifact_3 to hierarchical_activity_port_3 object_diagram:inModel model ]
+  relation instance data_flow_8 : pm:DataFlow [ from artifact_1 to hierarchical_activity_port_4 object_diagram:inModel model ]
+  //Data flows out of the invoking activity
+  relation instance data_flow_9 : pm:DataFlow [ from hierarchical_activity_port_5 to artifact_6 object_diagram:inModel model ]
+  relation instance data_flow_10 : pm:DataFlow [ from hierarchical_activity_port_6 to artifact_7 object_diagram:inModel model ]
+  //Data flows into the final check
+  relation instance data_flow_11 : pm:DataFlow [ from artifact_6 to activity_4_port_3 object_diagram:inModel model ]
+  relation instance data_flow_12 : pm:DataFlow [ from artifact_7 to activity_4_port_4 object_diagram:inModel model ]
+
+
+  // --- Sub-Process Model for Invocation ---
+  instance model_sub : pm:Model [ object_diagram:hasName "conduct_experiment_sub_pm" ]
+
+  instance sub_initial : pm:Initial [ object_diagram:inModel model_sub ]
+  instance sub_final : pm:Final [ object_diagram:inModel model_sub ]
+
+  // Artifacts in Sub-Model
+  // Input artifacts (populated by the engine from the invoking activity's inputs)
+  instance sub_artifact_1 : pm:Artifact [ pm:hasName "test_requirements" pm:hasType ftg_instance:f_TextDocument object_diagram:inModel model_sub ]
+  instance sub_artifact_2 : pm:Artifact [ pm:hasName "matlab_torque" pm:hasType ftg_instance:f_Profile object_diagram:inModel model_sub ]
+  instance sub_artifact_3 : pm:Artifact [ pm:hasName "control_parameter_generator" pm:hasType ftg_instance:f_Script object_diagram:inModel model_sub ]
+  // Internal artifacts
+  instance sub_artifact_4 : pm:Artifact [ pm:hasName "matlab_control_parameters" pm:hasType ftg_instance:f_TabularData object_diagram:inModel model_sub ]
+  instance sub_artifact_5 : pm:Artifact [ pm:hasName "c-code_to_be_run_on_rtt" pm:hasType ftg_instance:f_Code object_diagram:inModel model_sub ]
+  // Output artifacts (read by the engine and passed to the invoking activity's outputs)
+  instance sub_artifact_6 : pm:Artifact [ pm:hasName "drivetrain_sensor_data" pm:hasType ftg_instance:f_TabularData object_diagram:inModel model_sub ]
+  instance sub_artifact_7 : pm:Artifact [ pm:hasName "coupling_sensor_data" pm:hasType ftg_instance:f_TabularData object_diagram:inModel model_sub ]
+
+  // Activities in Sub-Model
+  instance sub_activity_1 : pm:Activity [ pm:hasName "Generate_matlab_control_parameters" pm:isTransformation ftg_instance:t_GenerateControlParameters object_diagram:inModel model_sub ]
+  instance sub_activity_2 : pm:Activity [ pm:hasName "Build_simulink_control_settings" pm:isTransformation ftg_instance:t_BuildControlSettings object_diagram:inModel model_sub ]
+  instance sub_activity_3 : pm:Activity [ pm:hasName "run_experiment" pm:isTransformation ftg_instance:t_RunExperiment object_diagram:inModel model_sub ]
+
+  // Ports for Sub-Model Activities
+  instance sub_activity_1_port_0 : pm:CtrlInputPort [ pm:hasName "cin" pm:ofActivity sub_activity_1 ]
+  instance sub_activity_1_port_1 : pm:CtrlOutputPort [ pm:hasName "cout" pm:ofActivity sub_activity_1 ]
+  instance sub_activity_1_port_2 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity sub_activity_1 ]
+  instance sub_activity_1_port_3 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity sub_activity_1 ]
+  instance sub_activity_1_port_4 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity sub_activity_1 ]
+
+  instance sub_activity_2_port_0 : pm:CtrlInputPort [ pm:hasName "cin" pm:ofActivity sub_activity_2 ]
+  instance sub_activity_2_port_1 : pm:CtrlOutputPort [ pm:hasName "cout" pm:ofActivity sub_activity_2 ]
+  instance sub_activity_2_port_2 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity sub_activity_2 ]
+  instance sub_activity_2_port_3 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity sub_activity_2 ]
+  instance sub_activity_2_port_4 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity sub_activity_2 ]
+
+  instance sub_activity_3_port_0 : pm:CtrlInputPort [ pm:hasName "cin" pm:ofActivity sub_activity_3 ]
+  instance sub_activity_3_port_1 : pm:CtrlOutputPort [ pm:hasName "cout" pm:ofActivity sub_activity_3 ]
+  instance sub_activity_3_port_2 : pm:DataInputPort [ pm:hasName "din" pm:ofActivity sub_activity_3 ]
+  instance sub_activity_3_port_3 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity sub_activity_3 ]
+  instance sub_activity_3_port_4 : pm:DataOutputPort [ pm:hasName "dout" pm:ofActivity sub_activity_3 ]
+
+  // Flows in Sub-Model
+  relation instance ctrl_flow_sub_0 : pm:CtrlFlow [ from sub_initial to sub_activity_1_port_0 object_diagram:inModel model_sub ]
+  relation instance ctrl_flow_sub_1 : pm:CtrlFlow [ from sub_activity_1_port_1 to sub_activity_2_port_0 object_diagram:inModel model_sub ]
+  relation instance ctrl_flow_sub_2 : pm:CtrlFlow [ from sub_activity_2_port_1 to sub_activity_3_port_0 object_diagram:inModel model_sub ]
+  relation instance ctrl_flow_sub_3 : pm:CtrlFlow [ from sub_activity_3_port_1 to sub_final object_diagram:inModel model_sub ]
+  
+  // Note: Data flow based on flat drivetrain_pm.oml logic
+  relation instance data_flow_sub_0 : pm:DataFlow [ from sub_artifact_2 to sub_activity_1_port_3 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_1 : pm:DataFlow [ from sub_artifact_3 to sub_activity_1_port_2 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_2 : pm:DataFlow [ from sub_activity_1_port_4 to sub_artifact_4 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_3 : pm:DataFlow [ from sub_artifact_4 to sub_activity_2_port_3 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_4 : pm:DataFlow [ from sub_artifact_1 to sub_activity_2_port_2 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_5 : pm:DataFlow [ from sub_activity_2_port_4 to sub_artifact_5 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_6 : pm:DataFlow [ from sub_artifact_5 to sub_activity_3_port_2 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_7 : pm:DataFlow [ from sub_activity_3_port_3 to sub_artifact_6 object_diagram:inModel model_sub ]
+  relation instance data_flow_sub_8 : pm:DataFlow [ from sub_activity_3_port_4 to sub_artifact_7 object_diagram:inModel model_sub ]
+}

+ 3 - 0
ontology/system/src/oml/ua.be/sdo2l/description/bundle.oml

@@ -31,4 +31,7 @@ description bundle <http://ua.be/sdo2l/description/bundle#> as ^bundle {
   includes <http://ua.be/sdo2l/description/artifacts/xopp2_xopp#>
   includes <http://ua.be/sdo2l/description/artifacts/MyPM_pm#>
   includes <http://ua.be/sdo2l/description/artifacts/Paralels_pm#>
+  includes <http://ua.be/sdo2l/description/artifacts/RefinementPM#>
+  includes <http://ua.be/sdo2l/description/artifacts/MyPM_2_pm#>
+  includes <http://ua.be/sdo2l/description/artifacts/drivetrain_hierarchical_pm#>
 }

+ 10 - 7
ontology/system/src/oml/ua.be/sdo2l/vocabulary/formalisms/pm.oml

@@ -56,7 +56,7 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm {
 
     scalar property hasTimeout [
         domain AutomatedActivity
-        range xsd:unsignedLong // milliseconds (usually you'll want a timeout of multiple seconds up to maybe multiple hours or even days, but for testing purposes a millisecond timeout could be more useful)
+        range xsd:unsignedLong // milliseconds
     ]
 
     // An activity may (optionally) point to a ftg:Transformation
@@ -71,7 +71,7 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm {
     ]
 
     aspect Port < element, Named [
-        restricts ofActivity to exactly 1
+        restricts ofActivity to max 1
     ]
 
     relation entity HasPort  [
@@ -91,21 +91,24 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm {
     concept CtrlInputPort < CtrlSink, Port [
         restricts  ctrlFrom to exactly 1
     ]
-    concept DataOutputPort < DataSource, Port [
+    concept DataOutputPort < DataSource, DataSink, Port []
+    
+    concept ActivityDataOutputPort < DataOutputPort [
         restricts  dataTo to exactly 1
     ]
-    concept DataInputPort < DataSink, Port [
+    
+    concept DataInputPort < DataSink, DataSource, Port [
         restricts  dataFrom to exactly 1
     ]
     
-    concept Initial < element, CtrlSource [
+    concept Initial < element, CtrlSource, Named [
         restricts  ctrlTo to exactly 1
     ]
-    concept Final < element, CtrlSink 
+    concept Final < element, CtrlSink, Named 
 
     concept Artifact < element, Named, DataSource, DataSink [
         // an artifact must come from somewhere :)
-        restricts  dataFrom to min 1
+        restricts  dataFrom to min 0
     ]
 
     relation entity HasType [