Explorar el Código

Forgot to add 'pm' vocabulary + added slightly more advanced generated PM description

Joeri Exelmans hace 2 años
padre
commit
16c085e118

+ 56 - 2
examples/oml/SystemDesignOntology2Layers/src/oml/ua.be/sdo2l/description/artifacts/my_pm.oml

@@ -1,5 +1,5 @@
 // Warning: Generated Code! Do not edit!
-// Input file: test/data/TrivialPM.drawio
+// Input file: /home/maestro/repos/drawio-parsers/test/data/SlightlyLessTrivialPM.drawio
 // Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2pm
 
 description <http://ua.be/sdo2l/description/artifacts/my_pm#> as my_pm {
@@ -12,28 +12,82 @@ description <http://ua.be/sdo2l/description/artifacts/my_pm#> as my_pm {
   ci initial : pm:Initial [
     object_diagram:inModel model
   ]
+
   ci final : pm:Final [
     object_diagram:inModel model
   ]
-  ci activity_0 : pm:Artifact [
+
+  ci artifact_0 : pm:Artifact [
+    object_diagram:inModel model
+  ]
+
+  ci activity_0 : pm:Activity [
+    pm:hasName "Do things"
     object_diagram:inModel model
   ]
+
   ci activity_0_port_0 : pm:CtrlInputPort [
     pm:ofActivity activity_0
     object_diagram:inModel model
   ]
+
   ci activity_0_port_1 : pm:CtrlOutputPort [
     pm:ofActivity activity_0
     object_diagram:inModel model
   ]
+
+  ci activity_0_port_2 : pm:DataOutputPort [
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+  ]
+
+  ci activity_1 : pm:Activity [
+    pm:hasName "activity_name"
+    object_diagram:inModel model
+  ]
+
+  ci activity_1_port_0 : pm:CtrlInputPort [
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+  ]
+
+  ci activity_1_port_1 : pm:CtrlOutputPort [
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+  ]
+
+  ci activity_1_port_2 : pm:DataInputPort [
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+  ]
+
   ri ctrl_flow_0 : pm:CtrlFlow [
     from initial
     to activity_0_port_0
     object_diagram:inModel model
   ]
+
   ri ctrl_flow_1 : pm:CtrlFlow [
     from activity_0_port_1
+    to activity_1_port_0
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_2 : pm:CtrlFlow [
+    from activity_1_port_1
     to final
     object_diagram:inModel model
   ]
+  
+  ri data_flow_0 : pm:DataFlow [
+    from artifact_0
+    to activity_1_port_2
+    object_diagram:inModel model
+  ]
+  
+  ri data_flow_1 : pm:DataFlow [
+    from activity_0_port_2
+    to artifact_0
+    object_diagram:inModel model
+  ]
 }

+ 119 - 0
examples/oml/SystemDesignOntology2Layers/src/oml/ua.be/sdo2l/vocabulary/formalisms/pm.oml

@@ -0,0 +1,119 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm {
+	
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+	extends <http://ua.be/sdo2l/vocabulary/base/ftg#> as ftg
+
+	aspect CtrlSource []
+	aspect CtrlSink []
+	aspect DataSource []
+	aspect DataSink []
+	
+	relation entity CtrlFlow :> object_diagram:Link [
+		from CtrlSource
+		to CtrlSink
+		forward ctrlTo
+		reverse ctrlFrom
+		asymmetric
+		irreflexive
+	]
+	relation entity DataFlow :> object_diagram:Link [
+		from DataSource
+		to DataSink
+		forward dataTo
+		reverse dataFrom
+		asymmetric
+		irreflexive
+	]
+	
+	aspect Named [
+		restricts scalar property hasName to exactly 1
+	]
+	scalar property hasName :> object_diagram:hasField [
+		domain Named
+		range xsd:string
+		functional
+	]
+
+	aspect element :> object_diagram:Object []
+	
+	concept Activity :> element, Named [
+		// must have at least one of the following port types:
+		restricts some relation hasPort to CtrlInputPort
+		restricts some relation hasPort to CtrlOutputPort
+	]
+	
+	relation entity IsTransformation [
+		from Activity
+		to ftg:Transformation
+		forward isTransformation
+		reverse occursAsActivity
+		functional
+		asymmetric
+		irreflexive
+	]
+	
+	aspect Port :> element, Named [
+		restricts relation ofActivity to exactly 1
+	]
+	
+	relation entity HasPort :> object_diagram:Link [
+		from Activity
+		to Port
+		forward hasPort
+		reverse ofActivity
+		asymmetric
+		irreflexive
+		inverse functional
+	]
+	
+	// Every port can only have one incoming/outgoing connection
+	concept CtrlOutputPort :> CtrlSource, Port [
+		restricts relation ctrlTo to exactly 1
+	]
+	concept CtrlInputPort :> CtrlSink, Port [
+		restricts relation ctrlFrom to exactly 1
+	]
+	concept DataOutputPort :> DataSource, Port [
+		restricts relation dataTo to exactly 1
+	]
+	concept DataInputPort :> DataSink, Port [
+		restricts relation dataFrom to exactly 1
+	]
+	
+	concept Initial :> element, CtrlSource [
+		restricts relation ctrlTo to exactly 1
+	]
+	concept Final :> element, CtrlSink [
+		restricts relation ctrlFrom to exactly 1
+	]
+	
+	concept Artifact :> element, Named, DataSource, DataSink [
+		// an artifact must come from somewhere :)
+		restricts relation dataTo to min 1
+	]
+	
+	relation entity HasType [
+		from Artifact
+		to ftg:Formalism
+		forward hasType
+		reverse occursAsArtifact
+		functional
+		asymmetric
+		irreflexive
+	]
+	
+	concept ForkJoin :> element, CtrlSink, CtrlSource [
+		restricts relation ctrlFrom to min 1
+		restricts relation ctrlTo to min 1
+	]
+	
+	concept Merge :> element, CtrlSink, CtrlSource [
+		// Only one outgoing control flow link:
+		restricts relation ctrlTo to exactly 1
+	]
+	
+	concept Model :> object_diagram:Model [
+		restricts all relation object_diagram:hasObject to element
+	]
+}