|
|
@@ -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
|
|
|
+ ]
|
|
|
+}
|