Quellcode durchsuchen

Vendor ontology

Arkadiusz Ryś vor 2 Jahren
Ursprung
Commit
fae659b296
84 geänderte Dateien mit 10150 neuen und 0 gelöschten Zeilen
  1. 23 0
      backend/ontology/.editorconfig
  2. 28 0
      backend/ontology/.fuseki.ttl
  3. 29 0
      backend/ontology/.project
  4. 251 0
      backend/ontology/build.gradle
  5. 5 0
      backend/ontology/catalog.xml
  6. 2 0
      backend/ontology/representations.aird
  7. 1 0
      backend/ontology/src/data/.gitignore
  8. 13 0
      backend/ontology/src/data/README.md
  9. 6 0
      backend/ontology/src/data/control.mat
  10. 10 0
      backend/ontology/src/data/coupling.csv
  11. 6 0
      backend/ontology/src/data/generator.mlx
  12. 2 0
      backend/ontology/src/data/limitations.txt
  13. 21 0
      backend/ontology/src/data/profile.csv
  14. 4 0
      backend/ontology/src/data/requirements.txt
  15. 2 0
      backend/ontology/src/data/rtt.c
  16. 58 0
      backend/ontology/src/data/rules_sensor.rml
  17. 10 0
      backend/ontology/src/data/sensor.csv
  18. 65 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/AnotherPM_corr.oml
  19. 312 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/AnotherPM_drawio.oml
  20. 81 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/AnotherPM_pm.oml
  21. 102 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/Drawing_drawio.oml
  22. 101 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/FTG_corr.oml
  23. 2084 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/FTG_drawio.oml
  24. 178 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/FTG_ftg.oml
  25. 41 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MinimalPM_corr.oml
  26. 96 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MinimalPM_drawio.oml
  27. 33 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MinimalPM_pm.oml
  28. 83 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MyPM_corr.oml
  29. 490 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MyPM_drawio.oml
  30. 124 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MyPM_pm.oml
  31. 89 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/RecPM_corr.oml
  32. 576 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/RecPM_drawio.oml
  33. 144 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/RecPM_pm.oml
  34. 43 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/SmallXournalFile_xopp.oml
  35. 36 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/TwoHiddenLayers_xopp.oml
  36. 455 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/drivetrain_corr.oml
  37. 2148 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/drivetrain_drawio.oml
  38. 504 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/drivetrain_pm.oml
  39. 51 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/imabox_drawio.oml
  40. 43 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/my_xopp.oml
  41. 18 0
      backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/my_xopp_to_drawio.oml
  42. 28 0
      backend/ontology/src/oml/ua.be/sdo2l/description/bundle.oml
  43. 180 0
      backend/ontology/src/oml/ua.be/sdo2l/description/traces/my_pt.oml
  44. 6 0
      backend/ontology/src/oml/ua.be/sdo2l/files/csv/addresses.csv
  45. 1 0
      backend/ontology/src/oml/ua.be/sdo2l/files/drawio/AnotherPM:pm
  46. 1 0
      backend/ontology/src/oml/ua.be/sdo2l/files/drawio/FTG:ftg
  47. 1 0
      backend/ontology/src/oml/ua.be/sdo2l/files/drawio/MinimalPM:pm
  48. 1 0
      backend/ontology/src/oml/ua.be/sdo2l/files/drawio/MyPM:pm
  49. 1 0
      backend/ontology/src/oml/ua.be/sdo2l/files/drawio/MyPMRec:pm
  50. 1 0
      backend/ontology/src/oml/ua.be/sdo2l/files/drawio/drivetrain:pm
  51. 1 0
      backend/ontology/src/oml/ua.be/sdo2l/files/drawio/imabox
  52. BIN
      backend/ontology/src/oml/ua.be/sdo2l/files/file/api.png
  53. BIN
      backend/ontology/src/oml/ua.be/sdo2l/files/file/robot.webp
  54. BIN
      backend/ontology/src/oml/ua.be/sdo2l/files/xopp/SmallXournalFile.xopp
  55. BIN
      backend/ontology/src/oml/ua.be/sdo2l/files/xopp/TwoHiddenLayers.xopp
  56. 34 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/base/acyclic.oml
  57. 131 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/base/base.oml
  58. 27 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/bundle.oml
  59. 44 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/federation.oml
  60. 59 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/code.oml
  61. 76 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/component.oml
  62. 19 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/cs_as.oml
  63. 25 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/dict.oml
  64. 204 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/drawio.oml
  65. 13 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/file.oml
  66. 57 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/ftg.oml
  67. 48 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/object_diagram.oml
  68. 120 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/pm.oml
  69. 124 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/processtraces.oml
  70. 30 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/requirement.oml
  71. 51 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/richtext.oml
  72. 31 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/script.oml
  73. 17 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/shaclproperty.oml
  74. 8 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/system.oml
  75. 111 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/tabular.oml
  76. 27 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/text.oml
  77. 17 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/traceability_model.oml
  78. 16 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/violation.oml
  79. 137 0
      backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/xopp.oml
  80. 44 0
      backend/ontology/src/shacl/pt_time_consistency.ttl
  81. 8 0
      backend/ontology/src/sparql/GetObjects.sparql
  82. 12 0
      backend/ontology/src/sparql/GetTypesWithoutSubType.sparql
  83. 48 0
      backend/ontology/src/sparql/WhatIsCell.sparql
  84. 23 0
      backend/ontology/src/sparql/WhatIsDiagram.sparql

+ 23 - 0
backend/ontology/.editorconfig

@@ -0,0 +1,23 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.{py,rst,ini,oml,gradle}]
+indent_style = space
+indent_size = 4
+
+[*.{html,css,scss,json,yml,svg,xml,ttl}]
+indent_style = space
+indent_size = 2
+max_line_length = 140
+
+[*.md]
+trim_trailing_whitespace = false
+
+[*.project]
+indent_style = space
+indent_size = 2

+ 28 - 0
backend/ontology/.fuseki.ttl

@@ -0,0 +1,28 @@
+@prefix fuseki:  <http://jena.apache.org/fuseki#> .
+@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb:     <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix tdb2:    <http://jena.apache.org/2016/tdb#> .
+@prefix ja:      <http://jena.hpl.hp.com/2005/11/Assembler#> .
+@prefix :        <#> .
+
+[] rdf:type fuseki:Server .
+
+<#service> rdf:type fuseki:Service ;
+    rdfs:label          "SystemDesignOntology2Layers" ;                             # Human readable label for dataset
+    fuseki:name         "SystemDesignOntology2Layers" ;                             # Name of the dataset in the endpoint url
+    fuseki:serviceReadWriteGraphStore "SystemDesignOntology2Layers" ;               # SPARQL Graph store protocol (read and write)
+    fuseki:endpoint     [ fuseki:operation fuseki:query ; fuseki:name "sparql"  ] ; # SPARQL query service
+    fuseki:endpoint     [ fuseki:operation fuseki:shacl ; fuseki:name "shacl" ] ;   # SHACL query service
+    
+    # Joeri: I added these, because the enactment service expects a single endpoint for query and update:
+    fuseki:endpoint     [ fuseki:operation fuseki:update ];
+    fuseki:endpoint     [ fuseki:operation fuseki:query ];
+    
+    fuseki:dataset      <#dataset> .
+
+<#dataset> rdf:type tdb2:DatasetTDB2 ;
+    tdb2:location "run/databases/DB2" ;
+    ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ;
+    # Make the default graph be the union of all named graphs.
+    tdb2:unionDefaultGraph true ;

+ 29 - 0
backend/ontology/.project

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>SystemDesignOntology2Layers</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>io.opencaesar.rosetta.oml.ui.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>io.opencaesar.rosetta.oml.ui.nature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
+	</natures>
+</projectDescription>

+ 251 - 0
backend/ontology/build.gradle

@@ -0,0 +1,251 @@
+buildscript {
+    repositories {
+        mavenLocal()
+        mavenCentral()
+    }
+    dependencies {
+        classpath "io.opencaesar.owl:owl-fuseki-gradle:+"
+        classpath "io.opencaesar.owl:owl-shacl-fuseki-gradle:+"
+        classpath "io.opencaesar.owl:owl-query-gradle:+"
+        classpath "io.opencaesar.owl:owl-load-gradle:+"
+        classpath "io.opencaesar.owl:owl-reason-gradle:+"
+        classpath "io.opencaesar.oml:oml-bikeshed-gradle:1.+"
+        classpath "io.opencaesar.oml:oml-merge-gradle:1.+"
+        classpath "io.opencaesar.adapters:oml2owl-gradle:1.+"
+    }
+}
+
+plugins {
+    id "java"
+    id "maven-publish"
+    id "eclipse"
+    id "signing"
+}
+
+ext.title = "System Design Ontology - 2 Layers"
+description = "System design ontology considering only 2 layers (types and instances)."
+group = "be.ua"
+version = "1.0.0"
+
+ext {
+    dataset = "SystemDesignOntology2Layers"
+    rootIri = "http://ua.be/sdo2l/description/bundle"
+    url = ""
+    bikeshed = "build/bikeshed"
+}
+
+repositories {
+    mavenLocal()
+    mavenCentral()
+    maven {
+      //url "https://git.rys.one/api/v4/groups/dtdesign/-/packages/maven"
+        url "https://git.rys.one/api/v4/projects/${System.getenv('CI_PROJECT_ID')}/packages/maven"
+        name "Gitlab"
+        credentials(HttpHeaderCredentials) {
+            name = "Job-Token"
+            value = System.getenv("CI_JOB_TOKEN")
+        }
+        authentication {
+            header(HttpHeaderAuthentication)
+        }
+    }
+}
+
+configurations {
+    oml
+}
+
+ext { 
+    //coreVersion = "3.+"
+    metrologyVersion = "+"
+}
+
+dependencies {
+    //oml "io.opencaesar.ontologies:core-vocabularies:$coreVersion"
+    oml "io.opencaesar.ontologies:metrology-vocabularies:$metrologyVersion"
+}
+
+task downloadDependencies(type:io.opencaesar.oml.merge.OmlMergeTask, group:"oml") {
+    inputZipPaths = configurations.oml.files
+    outputCatalogFolder = file("build/oml")
+}
+
+task omlToBikeshed(type: io.opencaesar.oml.bikeshed.Oml2BikeshedTask, group:"oml", dependsOn: downloadDependencies) {
+    inputCatalogPath = file("catalog.xml")
+    inputCatalogTitle = project.title
+    inputCatalogVersion = project.version
+    rootOntologyIri = "$rootIri".toString()
+    outputFolderPath = file("$bikeshed")
+    publishUrl = "$url".toString()
+}
+
+task generateDocs(type: Exec, dependsOn: omlToBikeshed) {
+    inputs.files(fileTree("$bikeshed").include("**/*.bs"))
+    outputs.files(fileTree("$bikeshed").include("**/*.html"))
+    if (org.gradle.internal.os.OperatingSystem.current().isWindows()) {
+        commandLine "$bikeshed/publish.bat"
+    } else {
+        commandLine "$bikeshed/publish.sh"
+    }
+}
+
+task omlToOwl(type:io.opencaesar.oml2owl.Oml2OwlTask, group:"oml", dependsOn: downloadDependencies) {
+    // OML catalog
+    inputCatalogPath = file("catalog.xml")
+    // OWL catalog
+    outputCatalogPath = file("build/owl/catalog.xml")
+}
+
+// A task to run the Openllet reasoner on the OWL catalog
+task owlReason(type:io.opencaesar.owl.reason.OwlReasonTask, group:"oml", dependsOn: omlToOwl) {
+    // OWL catalog
+    catalogPath = file("build/owl/catalog.xml")
+    // Input ontology IRI to reason on
+    inputOntologyIri = "$rootIri".toString()
+    // Entailment statements to generate and the ontologies to persist them in
+    specs = [
+        "$rootIri/classes = ALL_SUBCLASS".toString(),
+        "$rootIri/properties = INVERSE_PROPERTY | ALL_SUBPROPERTY".toString(),
+        "$rootIri/individuals = ALL_INSTANCE | DATA_PROPERTY_VALUE | OBJECT_PROPERTY_VALUE | SAME_AS".toString()
+    ]
+    // Junit error report
+    reportPath = file("build/reports/reasoning.xml")
+}
+
+task startFuseki(type: io.opencaesar.owl.fuseki.StartFusekiTask, group:"oml") {
+    configurationPath = file(".fuseki.ttl")
+    outputFolderPath = file(".fuseki")
+    webUI = true
+}
+
+task stopFuseki(type: io.opencaesar.owl.fuseki.StopFusekiTask, group:"oml") {
+    outputFolderPath = file(".fuseki")
+}
+
+task owlLoad(type:io.opencaesar.owl.load.OwlLoadTask, group:"oml", dependsOn: owlReason) {
+    inputs.files(startFuseki.outputFolderPath) // rerun when fuseki restarts
+    catalogPath = file("build/owl/catalog.xml")
+    endpointURL = "https://fuseki.rys.app/$dataset".toString()
+    fileExtensions = ["owl", "ttl"]
+    iris = [
+        "$rootIri/classes".toString(),
+        "$rootIri/properties".toString(),
+        "$rootIri/individuals".toString()
+    ]
+}
+
+task owlQuery(type:io.opencaesar.owl.query.OwlQueryTask, group:"oml", dependsOn: owlLoad) {
+    inputs.files(owlLoad.inputs.files) // rerun when the dataset changes
+    endpointURL = "https://fuseki.rys.app/$dataset".toString()
+    queryPath = file("src/sparql")
+    resultPath = file("build/results")
+    format = "json"
+}
+
+task owlShacl(type:io.opencaesar.owl.shacl.fuseki.OwlShaclFusekiTask, group:"oml", dependsOn: owlLoad) {
+    inputs.files(owlLoad.inputs.files) // rerun when the dataset changes
+    endpointURL = "https://fuseki.rys.app/$dataset".toString()
+    queryPath = file("src/shacl")
+    resultPath = file("build/reports")
+}
+
+build {
+    group "oml"
+    dependsOn owlReason
+}
+
+tasks.named("clean") {
+    group "oml"
+}
+
+task omlZip(type: Zip, group:"oml") {
+    from file("src/oml")
+    include "**/*.oml"
+    destinationDirectory = file("build/libs")
+    archiveBaseName = project.name
+    archiveVersion = project.version
+}
+
+def pomConfig = {
+    licenses {
+        license {
+            name "The Apache Software License, Version 2.0"
+            url "http://www.apache.org/licenses/LICENSE-2.0.txt"
+            distribution "repo"
+        }
+    }
+    developers {
+        developer {
+            id "uantwerp"
+            name "University of Antwerp"
+            email ""
+        }
+    }
+    scm {
+        url "https://msdl.uantwerpen.be/git/lucasalbertins/DTDesign/"
+    }
+}
+
+publishing {
+    publications {
+        maven(MavenPublication) {
+            groupId project.group
+            artifactId project.name
+            version project.version
+            artifact omlZip
+            pom {
+                packaging = "zip"
+                withXml {
+                    def root = asNode()
+                    if (configurations.find { it.name == "oml" }) {
+                        def dependencies = root.appendNode("dependencies")
+                        configurations.oml.resolvedConfiguration.resolvedArtifacts.each {
+                            def dependency = dependencies.appendNode("dependency")
+                            dependency.appendNode("groupId", it.moduleVersion.id.group)
+                            dependency.appendNode("artifactId", it.moduleVersion.id.name)
+                            dependency.appendNode("version", it.moduleVersion.id.version)
+                            if (it.classifier != null) {
+                                dependency.appendNode("classifier", it.classifier)
+                                dependency.appendNode("type", it.extension)
+                            }
+                        }
+                    }
+                    root.appendNode("name", project.ext.title)
+                    root.appendNode("description", project.description)
+                    root.appendNode("url", "https://msdl.uantwerpen.be/git/lucasalbertins/DTDesign/")
+                    root.children().last() + pomConfig
+                }
+            }
+        }
+    }
+    repositories {
+        maven {
+          //url "https://git.rys.one/api/v4/groups/dtdesign/-/packages/maven"
+            url "https://git.rys.one/api/v4/projects/${System.getenv('CI_PROJECT_ID')}/packages/maven"
+            name "Gitlab"
+            credentials(HttpHeaderCredentials) {
+                name = "Job-Token"
+                value = System.getenv("CI_JOB_TOKEN")
+            }
+            authentication {
+                header(HttpHeaderAuthentication)
+            }
+        }
+    }
+}
+
+//signing {
+//    def pgpSigningKey = project.findProperty("pgpSigningKey")
+//    if (pgpSigningKey != null) { pgpSigningKey = new String(pgpSigningKey.decodeBase64()) }
+//    def pgpSigningPassword = project.findProperty("pgpSigningPassword")
+//    useInMemoryPgpKeys(pgpSigningKey, pgpSigningPassword)
+//    sign publishing.publications.maven
+//}
+
+//gradle.taskGraph.whenReady { taskGraph ->
+//    signMavenPublication.onlyIf { taskGraph.allTasks.any{it.name == "publishMavenPublicationToGitlabRepository"} }
+//}
+
+eclipse {
+    synchronizationTasks downloadDependencies
+}

+ 5 - 0
backend/ontology/catalog.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="public">
+	<rewriteURI uriStartString="http://ua.be/sdo2l/" rewritePrefix="src/oml/ua.be/sdo2l/"/>
+	<rewriteURI uriStartString="http://" rewritePrefix="build/oml/"/>
+</catalog>

+ 2 - 0
backend/ontology/representations.aird

@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" uid="_oOHLUK0pEe2ohuzI-H2Jdg" version="15.0.0.202209061200"/>

+ 1 - 0
backend/ontology/src/data/.gitignore

@@ -0,0 +1 @@
+0p1Hz_rotation_1600Hz_64G_060123.txt

+ 13 - 0
backend/ontology/src/data/README.md

@@ -0,0 +1,13 @@
+# What we know
+
+The sensor data is formatted as:
+index, microsec, sensor 1 -> sensor 8 (16bit) m/s² (x/2^16*2 double range),  
+Ring 1 and ring 2.
+
+The time series is the Torque in Nm.
+
+The parameters model is a MATLAB file (.mat).
+
+# Disclaimer
+
+All the data is made up.

+ 6 - 0
backend/ontology/src/data/control.mat

@@ -0,0 +1,6 @@
+[x,y,z] = sphere;
+r = 2;
+surf(x*r,y*r,z*r)
+axis equal
+A = 4*pi*r^2;
+V = (4/3)*pi*r^3;

+ 10 - 0
backend/ontology/src/data/coupling.csv

@@ -0,0 +1,10 @@
+index,microsec,sense_00,sense_01,sense_02,sense_03,sense_10,sense_11,sense_12,sense_13
+0,100,0.3,0.6,0.1,0.3,0.3,0.1,0.3,0.5
+1,145,0.4,0.4,0.5,0.6,0.1,0.1,0.1,0.7
+2,246,0.1,0.2,0.6,0.7,0.1,0.2,0.2,0.5
+3,451,0.1,0.1,0.7,0.5,0.5,0.1,0.2,0.8
+4,564,0.2,0.1,0.9,0.4,0.4,0.3,0.4,0.9
+5,578,0.1,0.8,0.7,0.3,0.1,0.3,0.8,0.2
+6,612,0.2,0.4,0.7,0.2,0.2,0.1,0.1,0.1
+7,715,0.8,0.4,0.7,0.1,0.1,0.4,0.5,0.3
+8,788,0.1,0.1,0.4,0.5,0.1,0.1,0.1,0.1

+ 6 - 0
backend/ontology/src/data/generator.mlx

@@ -0,0 +1,6 @@
+num = randi(100)
+if num < 90
+   sz = 'yes'
+else
+   sz = 'no'
+end

+ 2 - 0
backend/ontology/src/data/limitations.txt

@@ -0,0 +1,2 @@
+We need to operate between 0 and 5000 RPM.
+The torque cannot exceed 1000 Nm.

+ 21 - 0
backend/ontology/src/data/profile.csv

@@ -0,0 +1,21 @@
+time,value
+1645343060000,0.1063435735
+1645799771000,0.1413462533
+1643731574000,0.0373289706
+1645534917000,0.1933671917
+1645881479000,-0.1221919282
+1644552154000,-0.1778075408
+1644171052000,-0.2688664202
+1643827663000,-0.1011829049
+1645673633000,-0.0463323214
+1645119377000,-0.2162654668
+1644038701000,0.2680340619
+1645058918000,-0.0288904173
+1643880041000,0.0804983286
+1645744877000,0.0828198062
+1645403668000,0.2368045351
+1645322842000,-0.3658627047
+1645305624000,-0.2719289020
+1645430775000,-0.1403125402
+1644767653000,-0.1142019323
+1644604915000,-0.0052879950

+ 4 - 0
backend/ontology/src/data/requirements.txt

@@ -0,0 +1,4 @@
+We need a drivetrain.
+It needs a sensor.
+This sensor needs to measure values.
+These values need to be between certain limits.

+ 2 - 0
backend/ontology/src/data/rtt.c

@@ -0,0 +1,2 @@
+#include <stdio.h>
+int main() {printf("Hello, World!"); return 0;}

+ 58 - 0
backend/ontology/src/data/rules_sensor.rml

@@ -0,0 +1,58 @@
+prefixes:
+  ex: http://example.com/table/table/
+  dbo: http://dbpedia.org/ontology/
+  rr: http://www.w3.org/ns/r2rml#
+  foaf: http://xmlns.com/foaf/0.1/
+  xsd: http://www.w3.org/2001/XMLSchema#
+  rdfs: http://www.w3.org/2000/01/rdf-schema#
+  dc: http://purl.org/dc/elements/1.1/
+  rev: http://purl.org/stuff/rev#
+  gtfs: http://vocab.gtfs.org/terms#
+  geo: http://www.w3.org/2003/01/geo/wgs84_pos#
+  schema: http://schema.org/
+  dct: http://purl.org/dc/terms/
+  rml: http://semweb.mmlab.be/ns/rml#
+  ql: http://semweb.mmlab.be/ns/ql#
+  rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
+
+mappings:
+  sensor_readings:
+    sources:
+      - [sensor.csv~csv]
+    s: ex:$(index)
+    po:
+      - [a, ex:SensorReading]
+      - [ex:occuredIndex, $(index)]
+      - [ex:occuredTime, $(microsec)]
+      - p: ex:Value
+          o:
+            value: $(sense_00)
+            datatype: xsd:double
+      - p: ex:Value
+          o:
+            value: $(sense_01)
+            datatype: xsd:double
+      - p: ex:Value
+          o:
+            value: $(sense_02)
+            datatype: xsd:double
+      - p: ex:Value
+          o:
+            value: $(sense_03)
+            datatype: xsd:double
+      - p: ex:Value
+          o:
+            value: $(sense_10)
+            datatype: xsd:double
+      - p: ex:Value
+          o:
+            value: $(sense_11)
+            datatype: xsd:double
+      - p: ex:Value
+          o:
+            value: $(sense_12)
+            datatype: xsd:double
+      - p: ex:Value
+          o:
+            value: $(sense_13)
+            datatype: xsd:double

+ 10 - 0
backend/ontology/src/data/sensor.csv

@@ -0,0 +1,10 @@
+index,microsec,sense_00,sense_01,sense_02,sense_03,sense_10,sense_11,sense_12,sense_13
+0,100,0.3,0.6,0.1,0.3,0.3,0.1,0.3,0.5
+1,145,0.4,0.4,0.5,0.6,0.1,0.1,0.1,0.7
+2,246,0.1,0.2,0.6,0.7,0.1,0.2,0.2,0.5
+3,451,0.1,0.1,0.7,0.5,0.5,0.1,0.2,0.8
+4,564,0.2,0.1,0.9,0.4,0.4,0.3,0.4,0.9
+5,578,0.1,0.8,0.7,0.3,0.1,0.3,0.8,0.2
+6,612,0.2,0.4,0.7,0.2,0.2,0.1,0.1,0.1
+7,715,0.8,0.4,0.7,0.1,0.1,0.4,0.5,0.3
+8,788,0.1,0.1,0.4,0.5,0.1,0.1,0.1,0.1

+ 65 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/AnotherPM_corr.oml

@@ -0,0 +1,65 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/AnotherPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+// This file contains the correspondence links between concrete syntax (Drawio) and abstract syntax (Process Model).
+description <http://ua.be/sdo2l/description/artifacts/AnotherPM_corr#> as AnotherPM_corr {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+  extends <http://ua.be/sdo2l/description/artifacts/AnotherPM_drawio#> as my_drawio
+  extends <http://ua.be/sdo2l/description/artifacts/AnotherPM_pm#> as my_pm
+
+  ci model : cs_as:CorrespondenceModel [
+    object_diagram:hasName "AnotherPM_corr"
+  ]
+
+  ri trace_drawio_0v6vhYM9hFzFfcc7qPzW-3_initial : cs_as:CS_AS_Link [
+    from my_drawio:cell_0v6vhYM9hFzFfcc7qPzW-3
+    to my_pm:initial
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_0v6vhYM9hFzFfcc7qPzW-4_final : cs_as:CS_AS_Link [
+    from my_drawio:cell_0v6vhYM9hFzFfcc7qPzW-4
+    to my_pm:final
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_OMHYlqIPrFl9iUvyUxSD-0_artifact_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_OMHYlqIPrFl9iUvyUxSD-0
+    to my_pm:artifact_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_OMHYlqIPrFl9iUvyUxSD-1_activity_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_OMHYlqIPrFl9iUvyUxSD-1
+    to my_pm:activity_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_OMHYlqIPrFl9iUvyUxSD-6_ctrl_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_OMHYlqIPrFl9iUvyUxSD-6
+    to my_pm:ctrl_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_OMHYlqIPrFl9iUvyUxSD-3_data_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_OMHYlqIPrFl9iUvyUxSD-3
+    to my_pm:data_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_OMHYlqIPrFl9iUvyUxSD-7_ctrl_flow_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_OMHYlqIPrFl9iUvyUxSD-7
+    to my_pm:ctrl_flow_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_0v6vhYM9hFzFfcc7qPzW-1_model : cs_as:CS_AS_Link [
+    from my_drawio:cell_0v6vhYM9hFzFfcc7qPzW-1
+    to my_pm:model
+    object_diagram:inModel model
+  ]
+}

+ 312 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/AnotherPM_drawio.oml

@@ -0,0 +1,312 @@
+// Warning: Generated code! Do not edit!
+// Input: http://localhost:5000/files/drawio/AnotherPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/oml_generator.py
+// Minimal mode enabled: Page/cell attributes, style, and geometries have been omitted (making the drawio-> OML conversion lossy).
+
+description <http://ua.be/sdo2l/description/artifacts/AnotherPM_drawio#> as AnotherPM_drawio {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+
+  ci model : drawio:Model [
+    drawio:hasDrawioId "isBpO64vPvADqoAOVkyf"
+    object_diagram:hasName "AnotherPM:pm_drawio"
+  ]
+
+  
+  ci cell_0v6vhYM9hFzFfcc7qPzW-0 : drawio:Cell [
+    drawio:hasDrawioId "0v6vhYM9hFzFfcc7qPzW-0"
+    drawio:isRootOf model
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_0v6vhYM9hFzFfcc7qPzW-1 : drawio:Cell [
+    drawio:hasDrawioId "0v6vhYM9hFzFfcc7qPzW-1"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-0
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-6 : drawio:Edge [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-6"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-1
+    object_diagram:inModel model
+    drawio:hasSource cell_0v6vhYM9hFzFfcc7qPzW-3
+    drawio:hasTarget cell_OMHYlqIPrFl9iUvyUxSD-4
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-6_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-6
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-6_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-6
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_0v6vhYM9hFzFfcc7qPzW-3 : drawio:Vertex [
+    drawio:hasDrawioId "0v6vhYM9hFzFfcc7qPzW-3"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_0v6vhYM9hFzFfcc7qPzW-3_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_0v6vhYM9hFzFfcc7qPzW-3
+    object_diagram:inModel model
+  ]
+  ci cell_0v6vhYM9hFzFfcc7qPzW-3_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "initial"
+    drawio:propertyOf cell_0v6vhYM9hFzFfcc7qPzW-3
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_0v6vhYM9hFzFfcc7qPzW-4 : drawio:Vertex [
+    drawio:hasDrawioId "0v6vhYM9hFzFfcc7qPzW-4"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_0v6vhYM9hFzFfcc7qPzW-4_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_0v6vhYM9hFzFfcc7qPzW-4
+    object_diagram:inModel model
+  ]
+  ci cell_0v6vhYM9hFzFfcc7qPzW-4_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "final"
+    drawio:propertyOf cell_0v6vhYM9hFzFfcc7qPzW-4
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-0 : drawio:Vertex [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-0"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-0_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%name% : %type%"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-0
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-0_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "artifact"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-0
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-0_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-0
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-0_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-0
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-0_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue "xopp"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-0
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-1 : drawio:Vertex [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-1"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-1_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "<u style=\"color: rgb(0 , 0 , 0)\">%name%<br>: %type%</u>"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-1_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "activity"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-1_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "lol"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-1_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue ""
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-1_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-2 : drawio:Vertex [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-2"
+    drawio:hasParent cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-2_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-2
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-2_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "dout"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-2
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-2_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-2
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-2_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_out"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-2
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-4 : drawio:Vertex [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-4"
+    drawio:hasParent cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-4_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-4
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-4_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cin"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-4
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-4_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-4
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-4_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_in"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-4
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-5 : drawio:Vertex [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-5"
+    drawio:hasParent cell_OMHYlqIPrFl9iUvyUxSD-1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-5_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-5
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-5_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cout"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-5
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-5_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-5
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-5_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_out"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-5
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-3 : drawio:Edge [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-3"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-1
+    object_diagram:inModel model
+    drawio:hasSource cell_OMHYlqIPrFl9iUvyUxSD-2
+    drawio:hasTarget cell_OMHYlqIPrFl9iUvyUxSD-0
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-3_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-3
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-3_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_flow"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-3
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-7 : drawio:Edge [
+    drawio:hasDrawioId "OMHYlqIPrFl9iUvyUxSD-7"
+    drawio:hasParent cell_0v6vhYM9hFzFfcc7qPzW-1
+    object_diagram:inModel model
+    drawio:hasSource cell_OMHYlqIPrFl9iUvyUxSD-5
+    drawio:hasTarget cell_0v6vhYM9hFzFfcc7qPzW-4
+  ]
+  
+  ci cell_OMHYlqIPrFl9iUvyUxSD-7_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-7
+    object_diagram:inModel model
+  ]
+  ci cell_OMHYlqIPrFl9iUvyUxSD-7_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_OMHYlqIPrFl9iUvyUxSD-7
+    object_diagram:inModel model
+  ]
+
+  
+}

+ 81 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/AnotherPM_pm.oml

@@ -0,0 +1,81 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/AnotherPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+description <http://ua.be/sdo2l/description/artifacts/AnotherPM_pm#> as AnotherPM_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
+
+  ci model : pm:Model [
+    object_diagram:hasName "AnotherPM_pm"
+  ]
+
+  ci initial : pm:Initial [
+    object_diagram:inModel model
+    pm:ctrlTo activity_0_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci final : pm:Final [
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_0_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_0 : pm:Artifact [
+    pm:hasName "sketch"
+    pm:hasType ftg_instance:f_xopp
+    object_diagram:inModel model
+    
+  ]
+
+  ci activity_0 : pm:Activity [
+    pm:hasName "lol"
+    object_diagram:inModel model
+  ]
+
+  ci activity_0_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:ctrlTo final // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    //pm:ctrlFrom initial // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_2 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:dataTo artifact_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  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 final
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_0 : pm:DataFlow [
+    from activity_0_port_2
+    to artifact_0
+    object_diagram:inModel model
+  ]
+
+}

+ 102 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/Drawing_drawio.oml

@@ -0,0 +1,102 @@
+// Warning: Generated code! Do not edit!
+// Input: http://localhost:5000/files/drawio/Drawing
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/oml_generator.py
+// Minimal mode enabled: Page/cell attributes, style, and geometries have been omitted (making the drawio-> OML conversion lossy).
+
+description <http://ua.be/sdo2l/description/artifacts/Drawing_drawio#> as Drawing_drawio {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+
+  ci model : drawio:Model [
+    drawio:hasDrawioId "LgIOMtHxWmRO3Oc9vvxL"
+    object_diagram:hasName "Drawing_drawio"
+  ]
+
+  
+  ci cell_0 : drawio:Cell [
+    drawio:hasDrawioId "0"
+    drawio:isRootOf model
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_1 : drawio:Cell [
+    drawio:hasDrawioId "1"
+    drawio:hasParent cell_0
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-1 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-1"
+    drawio:hasValue "Actor"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-2 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-2"
+    drawio:hasValue "Actor"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-3 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-3"
+    drawio:hasValue "Actor"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-4 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-4"
+    drawio:hasValue "Actor"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-6 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-6"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-7 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-7"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-8 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-8"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_qzttm6LrCUpeeJGvPEF2-9 : drawio:Vertex [
+    drawio:hasDrawioId "qzttm6LrCUpeeJGvPEF2-9"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+}

+ 101 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/FTG_corr.oml

@@ -0,0 +1,101 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/FTG:ftg
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/ftg/oml_generator.py
+
+// This file contains the correspondence links between concrete syntax (Drawio) and abstract syntax (FTG).
+description <http://ua.be/sdo2l/description/artifacts/FTG_corr#> as FTG_corr {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+  extends <http://ua.be/sdo2l/description/artifacts/FTG_drawio#> as my_drawio
+  extends <http://ua.be/sdo2l/description/artifacts/FTG_ftg#> as my_ftg
+
+  ci model : cs_as:CorrespondenceModel [
+    object_diagram:hasName "FTG_corr"
+  ]
+
+  ri trace_drawio_VtfaJCiFz_Gr-LFw8VM8-3_f_xopp : cs_as:CS_AS_Link [
+    from my_drawio:cell_VtfaJCiFz_Gr-LFw8VM8-3
+    to my_ftg:f_xopp
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_DT2_XpkoWL6Mp4KuCbJF-10_f_TextDocument : cs_as:CS_AS_Link [
+    from my_drawio:cell_DT2_XpkoWL6Mp4KuCbJF-10
+    to my_ftg:f_TextDocument
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_DT2_XpkoWL6Mp4KuCbJF-16_f_Profile : cs_as:CS_AS_Link [
+    from my_drawio:cell_DT2_XpkoWL6Mp4KuCbJF-16
+    to my_ftg:f_Profile
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_DT2_XpkoWL6Mp4KuCbJF-19_f_TabularData : cs_as:CS_AS_Link [
+    from my_drawio:cell_DT2_XpkoWL6Mp4KuCbJF-19
+    to my_ftg:f_TabularData
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_DT2_XpkoWL6Mp4KuCbJF-21_f_Code : cs_as:CS_AS_Link [
+    from my_drawio:cell_DT2_XpkoWL6Mp4KuCbJF-21
+    to my_ftg:f_Code
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_DT2_XpkoWL6Mp4KuCbJF-24_f_Script : cs_as:CS_AS_Link [
+    from my_drawio:cell_DT2_XpkoWL6Mp4KuCbJF-24
+    to my_ftg:f_Script
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_VtfaJCiFz_Gr-LFw8VM8-1_t_Sketch : cs_as:CS_AS_Link [
+    from my_drawio:cell_VtfaJCiFz_Gr-LFw8VM8-1
+    to my_ftg:t_Sketch
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_VtfaJCiFz_Gr-LFw8VM8-2_t_LookAtSketch : cs_as:CS_AS_Link [
+    from my_drawio:cell_VtfaJCiFz_Gr-LFw8VM8-2
+    to my_ftg:t_LookAtSketch
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_4rE98VZ8RXfWWRRUgjGg-1_t_Preparation : cs_as:CS_AS_Link [
+    from my_drawio:cell_4rE98VZ8RXfWWRRUgjGg-1
+    to my_ftg:t_Preparation
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_4rE98VZ8RXfWWRRUgjGg-9_t_SetupProfile : cs_as:CS_AS_Link [
+    from my_drawio:cell_4rE98VZ8RXfWWRRUgjGg-9
+    to my_ftg:t_SetupProfile
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_4rE98VZ8RXfWWRRUgjGg-16_t_GenerateControlParameters : cs_as:CS_AS_Link [
+    from my_drawio:cell_4rE98VZ8RXfWWRRUgjGg-16
+    to my_ftg:t_GenerateControlParameters
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_4rE98VZ8RXfWWRRUgjGg-22_t_VerifyData : cs_as:CS_AS_Link [
+    from my_drawio:cell_4rE98VZ8RXfWWRRUgjGg-22
+    to my_ftg:t_VerifyData
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_4rE98VZ8RXfWWRRUgjGg-28_t_RunExperiment : cs_as:CS_AS_Link [
+    from my_drawio:cell_4rE98VZ8RXfWWRRUgjGg-28
+    to my_ftg:t_RunExperiment
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_4rE98VZ8RXfWWRRUgjGg-35_t_BuildControlSettings : cs_as:CS_AS_Link [
+    from my_drawio:cell_4rE98VZ8RXfWWRRUgjGg-35
+    to my_ftg:t_BuildControlSettings
+    object_diagram:inModel model
+  ]
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 2084 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/FTG_drawio.oml


+ 178 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/FTG_ftg.oml

@@ -0,0 +1,178 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/FTG:ftg
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/ftg/oml_generator.py
+
+description <http://ua.be/sdo2l/description/artifacts/FTG_ftg#> as FTG_ftg {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/ftg#> as ftg
+  uses <http://ua.be/sdo2l/vocabulary/base/base#> as base
+
+  ci f_xopp : ftg:Formalism [
+    base:hasGUID "xopp"
+  ]
+
+  ci f_TextDocument : ftg:Formalism [
+    base:hasGUID "TextDocument"
+  ]
+
+  ci f_Profile : ftg:Formalism [
+    base:hasGUID "Profile"
+  ]
+
+  ci f_TabularData : ftg:Formalism [
+    base:hasGUID "TabularData"
+  ]
+
+  ci f_Code : ftg:Formalism [
+    base:hasGUID "Code"
+  ]
+
+  ci f_Script : ftg:Formalism [
+    base:hasGUID "Script"
+  ]
+
+  ci t_Sketch : ftg:Transformation [
+    base:hasGUID "Sketch"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlOutput "cout"
+  ]
+  ri t_Sketch_output0 : ftg:HasOutput [
+    from t_Sketch
+    to f_xopp
+    ftg:hasName "sketch"
+  ]
+
+  ci t_LookAtSketch : ftg:Transformation [
+    base:hasGUID "LookAtSketch"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlOutput "cout"
+  ]
+  ri t_LookAtSketch_input0 : ftg:HasInput [
+    from t_LookAtSketch
+    to f_xopp
+    ftg:hasName "sketch"
+  ]
+
+  ci t_Preparation : ftg:Transformation [
+    base:hasGUID "Preparation"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlOutput "cout"
+  ]
+  ri t_Preparation_output0 : ftg:HasOutput [
+    from t_Preparation
+    to f_TextDocument
+    ftg:hasName "dout"
+  ]
+  ri t_Preparation_output1 : ftg:HasOutput [
+    from t_Preparation
+    to f_TextDocument
+    ftg:hasName "dout"
+  ]
+  ri t_Preparation_output2 : ftg:HasOutput [
+    from t_Preparation
+    to f_Script
+    ftg:hasName "dout"
+  ]
+
+  ci t_SetupProfile : ftg:Transformation [
+    base:hasGUID "SetupProfile"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlInput "cinRec"
+    ftg:hasCtrlOutput "cout"
+  ]
+  ri t_SetupProfile_input0 : ftg:HasInput [
+    from t_SetupProfile
+    to f_TextDocument
+    ftg:hasName "din"
+  ]
+  ri t_SetupProfile_input1 : ftg:HasInput [
+    from t_SetupProfile
+    to f_TextDocument
+    ftg:hasName "din"
+  ]
+  ri t_SetupProfile_output0 : ftg:HasOutput [
+    from t_SetupProfile
+    to f_Profile
+    ftg:hasName "dout"
+  ]
+
+  ci t_GenerateControlParameters : ftg:Transformation [
+    base:hasGUID "GenerateControlParameters"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlOutput "cout"
+  ]
+  ri t_GenerateControlParameters_input0 : ftg:HasInput [
+    from t_GenerateControlParameters
+    to f_Profile
+    ftg:hasName "din"
+  ]
+  ri t_GenerateControlParameters_input1 : ftg:HasInput [
+    from t_GenerateControlParameters
+    to f_Script
+    ftg:hasName "din"
+  ]
+  ri t_GenerateControlParameters_output0 : ftg:HasOutput [
+    from t_GenerateControlParameters
+    to f_TabularData
+    ftg:hasName "dout"
+  ]
+
+  ci t_VerifyData : ftg:Transformation [
+    base:hasGUID "VerifyData"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlOutput "cout"
+    ftg:hasCtrlOutput "coutRec"
+  ]
+  ri t_VerifyData_input0 : ftg:HasInput [
+    from t_VerifyData
+    to f_TabularData
+    ftg:hasName "din"
+  ]
+  ri t_VerifyData_input1 : ftg:HasInput [
+    from t_VerifyData
+    to f_TabularData
+    ftg:hasName "din"
+  ]
+
+  ci t_RunExperiment : ftg:Transformation [
+    base:hasGUID "RunExperiment"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlOutput "cout"
+  ]
+  ri t_RunExperiment_input0 : ftg:HasInput [
+    from t_RunExperiment
+    to f_Code
+    ftg:hasName "din"
+  ]
+  ri t_RunExperiment_output0 : ftg:HasOutput [
+    from t_RunExperiment
+    to f_TabularData
+    ftg:hasName "dout"
+  ]
+  ri t_RunExperiment_output1 : ftg:HasOutput [
+    from t_RunExperiment
+    to f_TabularData
+    ftg:hasName "dout"
+  ]
+
+  ci t_BuildControlSettings : ftg:Transformation [
+    base:hasGUID "BuildControlSettings"
+    ftg:hasCtrlInput "cin"
+    ftg:hasCtrlOutput "cout"
+  ]
+  ri t_BuildControlSettings_input0 : ftg:HasInput [
+    from t_BuildControlSettings
+    to f_TabularData
+    ftg:hasName "din"
+  ]
+  ri t_BuildControlSettings_input1 : ftg:HasInput [
+    from t_BuildControlSettings
+    to f_TextDocument
+    ftg:hasName "din"
+  ]
+  ri t_BuildControlSettings_output0 : ftg:HasOutput [
+    from t_BuildControlSettings
+    to f_Code
+    ftg:hasName "dout"
+  ]
+}

+ 41 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MinimalPM_corr.oml

@@ -0,0 +1,41 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/MinimalPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+// This file contains the correspondence links between concrete syntax (Drawio) and abstract syntax (Process Model).
+description <http://ua.be/sdo2l/description/artifacts/MinimalPM_corr#> as MinimalPM_corr {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+  extends <http://ua.be/sdo2l/description/artifacts/MinimalPM_drawio#> as my_drawio
+  extends <http://ua.be/sdo2l/description/artifacts/MinimalPM_pm#> as my_pm
+
+  ci model : cs_as:CorrespondenceModel [
+    object_diagram:hasName "MinimalPM_corr"
+  ]
+
+  ri trace_drawio_kPhmW1dwLuky_b0boUTp-1_initial : cs_as:CS_AS_Link [
+    from my_drawio:cell_kPhmW1dwLuky_b0boUTp-1
+    to my_pm:initial
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_kPhmW1dwLuky_b0boUTp-2_final : cs_as:CS_AS_Link [
+    from my_drawio:cell_kPhmW1dwLuky_b0boUTp-2
+    to my_pm:final
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_kPhmW1dwLuky_b0boUTp-3_ctrl_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_kPhmW1dwLuky_b0boUTp-3
+    to my_pm:ctrl_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_1_model : cs_as:CS_AS_Link [
+    from my_drawio:cell_1
+    to my_pm:model
+    object_diagram:inModel model
+  ]
+}

+ 96 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MinimalPM_drawio.oml

@@ -0,0 +1,96 @@
+// Warning: Generated code! Do not edit!
+// Input: http://localhost:5000/files/drawio/MinimalPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/oml_generator.py
+// Minimal mode enabled: Page/cell attributes, style, and geometries have been omitted (making the drawio-> OML conversion lossy).
+
+description <http://ua.be/sdo2l/description/artifacts/MinimalPM_drawio#> as MinimalPM_drawio {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+
+  ci model : drawio:Model [
+    drawio:hasDrawioId "k7m7Ebu8EXRkVeQowzfr"
+    object_diagram:hasName "MinimalPM:pm_drawio"
+  ]
+
+  
+  ci cell_0 : drawio:Cell [
+    drawio:hasDrawioId "0"
+    drawio:isRootOf model
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_1 : drawio:Cell [
+    drawio:hasDrawioId "1"
+    drawio:hasParent cell_0
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_kPhmW1dwLuky_b0boUTp-3 : drawio:Edge [
+    drawio:hasDrawioId "kPhmW1dwLuky_b0boUTp-3"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_kPhmW1dwLuky_b0boUTp-1
+    drawio:hasTarget cell_kPhmW1dwLuky_b0boUTp-2
+  ]
+  
+  ci cell_kPhmW1dwLuky_b0boUTp-3_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_kPhmW1dwLuky_b0boUTp-3
+    object_diagram:inModel model
+  ]
+  ci cell_kPhmW1dwLuky_b0boUTp-3_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_kPhmW1dwLuky_b0boUTp-3
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_kPhmW1dwLuky_b0boUTp-1 : drawio:Vertex [
+    drawio:hasDrawioId "kPhmW1dwLuky_b0boUTp-1"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_kPhmW1dwLuky_b0boUTp-1_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_kPhmW1dwLuky_b0boUTp-1
+    object_diagram:inModel model
+  ]
+  ci cell_kPhmW1dwLuky_b0boUTp-1_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "initial"
+    drawio:propertyOf cell_kPhmW1dwLuky_b0boUTp-1
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_kPhmW1dwLuky_b0boUTp-2 : drawio:Vertex [
+    drawio:hasDrawioId "kPhmW1dwLuky_b0boUTp-2"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_kPhmW1dwLuky_b0boUTp-2_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_kPhmW1dwLuky_b0boUTp-2
+    object_diagram:inModel model
+  ]
+  ci cell_kPhmW1dwLuky_b0boUTp-2_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "final"
+    drawio:propertyOf cell_kPhmW1dwLuky_b0boUTp-2
+    object_diagram:inModel model
+  ]
+
+  
+}

+ 33 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MinimalPM_pm.oml

@@ -0,0 +1,33 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/MinimalPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+description <http://ua.be/sdo2l/description/artifacts/MinimalPM_pm#> as MinimalPM_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
+
+  ci model : pm:Model [
+    object_diagram:hasName "MinimalPM_pm"
+  ]
+
+  ci initial : pm:Initial [
+    object_diagram:inModel model
+    pm:ctrlTo final // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci final : pm:Final [
+    object_diagram:inModel model
+    //pm:ctrlFrom initial // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ri ctrl_flow_0 : pm:CtrlFlow [
+    from initial
+    to final
+    object_diagram:inModel model
+  ]
+
+}

+ 83 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MyPM_corr.oml

@@ -0,0 +1,83 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/MyPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+// This file contains the correspondence links between concrete syntax (Drawio) and abstract syntax (Process Model).
+description <http://ua.be/sdo2l/description/artifacts/MyPM_corr#> as MyPM_corr {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+  extends <http://ua.be/sdo2l/description/artifacts/MyPM_drawio#> as my_drawio
+  extends <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as my_pm
+
+  ci model : cs_as:CorrespondenceModel [
+    object_diagram:hasName "MyPM_corr"
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-1_initial : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-1
+    to my_pm:initial
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-3_final : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-3
+    to my_pm:final
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-2_activity_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-2
+    to my_pm:activity_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-33_artifact_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-33
+    to my_pm:artifact_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_1m2y2pvaED3J6VFvMTAg-2_activity_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_1m2y2pvaED3J6VFvMTAg-2
+    to my_pm:activity_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-6_ctrl_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-6
+    to my_pm:ctrl_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-7_ctrl_flow_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-7
+    to my_pm:ctrl_flow_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-20_ctrl_flow_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-20
+    to my_pm:ctrl_flow_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-32_data_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-32
+    to my_pm:data_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-28_data_flow_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-28
+    to my_pm:data_flow_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_1_model : cs_as:CS_AS_Link [
+    from my_drawio:cell_1
+    to my_pm:model
+    object_diagram:inModel model
+  ]
+}

+ 490 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MyPM_drawio.oml

@@ -0,0 +1,490 @@
+// Warning: Generated code! Do not edit!
+// Input: http://localhost:5000/files/drawio/MyPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/oml_generator.py
+// Minimal mode enabled: Page/cell attributes, style, and geometries have been omitted (making the drawio-> OML conversion lossy).
+
+description <http://ua.be/sdo2l/description/artifacts/MyPM_drawio#> as MyPM_drawio {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+
+  ci model : drawio:Model [
+    drawio:hasDrawioId "prYNwPAbIUO19HUZXAOh"
+    object_diagram:hasName "MyPM:pm_drawio"
+  ]
+
+  
+  ci cell_0 : drawio:Cell [
+    drawio:hasDrawioId "0"
+    drawio:isRootOf model
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_1 : drawio:Cell [
+    drawio:hasDrawioId "1"
+    drawio:hasParent cell_0
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-1 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-1"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-1_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-1
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-1_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "initial"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-1
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-2"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "<u style=\"color: rgb(0 , 0 , 0)\">%name%<br>: %type%</u>"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "activity"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue "Sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-4"
+    drawio:hasParent cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cin"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_in"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-5"
+    drawio:hasParent cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cout"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_out"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-27"
+    drawio:hasParent cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_out"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-6 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-6"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-1
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-4
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-6_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-6
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-6_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-6
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-3 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-3"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-3_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-3
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-3_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "final"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-3
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-7 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-7"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-5
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-18
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-7_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-7
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-7_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-7
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-20 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-20"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-19
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-3
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-20_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-20
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-20_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-20
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-32 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-32"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-33
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-31
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-32_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-32
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-32_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-32
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-28 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-28"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-27
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-33
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-28_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-28
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-28_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-28
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-33"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%name% : %type%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "artifact"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue "xopp"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_1m2y2pvaED3J6VFvMTAg-2 : drawio:Vertex [
+    drawio:hasDrawioId "1m2y2pvaED3J6VFvMTAg-2"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "<u style=\"color: rgb(0 , 0 , 0)\">%name%<br>: %type%</u>"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "activity"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "look_at_sketch"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue "LookAtSketch"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-19"
+    drawio:hasParent cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cout"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_out"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-31"
+    drawio:hasParent cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_in"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-18"
+    drawio:hasParent cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cin"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_in"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+
+  
+}

+ 124 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/MyPM_pm.oml

@@ -0,0 +1,124 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/MyPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+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
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/ftg#> as ftg
+
+  extends <http://ua.be/sdo2l/description/artifacts/FTG_ftg#> as ftg_instance
+
+  ci model : pm:Model [
+    object_diagram:hasName "MyPM_pm"
+  ]
+
+  ci initial : pm:Initial [
+    object_diagram:inModel model
+    pm:ctrlTo activity_0_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci final : pm:Final [
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_1_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_0 : pm:Artifact [
+    pm:hasName "sketch"
+    pm:hasType ftg_instance:f_xopp
+    object_diagram:inModel model
+    pm:dataTo activity_1_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_0 : pm:Activity [
+    pm:hasName "sketch"
+    pm:isTransformation ftg_instance:t_Sketch
+    object_diagram:inModel model
+  ]
+
+  ci activity_0_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:ctrlTo activity_1_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    //pm:ctrlFrom initial // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_2 : pm:DataOutputPort [
+    pm:hasName "sketch"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:dataTo artifact_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_1 : pm:Activity [
+    pm:hasName "look_at_sketch"
+    pm:isTransformation ftg_instance:t_LookAtSketch
+    object_diagram:inModel model
+  ]
+
+  ci activity_1_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:ctrlTo final // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_1_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_0_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+  
+
+  ci activity_1_port_2 : pm:DataInputPort [
+    pm:hasName "sketch"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    //pm:dataFrom artifact_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  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
+  ]
+
+}

+ 89 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/RecPM_corr.oml

@@ -0,0 +1,89 @@
+// Warning: Generated Code! Do not edit!
+// Input: /Users/albertins/git/drawio2oml/RecPM.drawio#RecPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+// This file contains the correspondence links between concrete syntax (Drawio) and abstract syntax (Process Model).
+description <http://ua.be/sdo2l/description/artifacts/RecPM_corr#> as RecPM_corr {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+  extends <http://ua.be/sdo2l/description/artifacts/RecPM_drawio#> as my_drawio
+  extends <http://ua.be/sdo2l/description/artifacts/RecPM_pm#> as my_pm
+
+  ci model : cs_as:CorrespondenceModel [
+    object_diagram:hasName "RecPM_corr"
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-1_initial : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-1
+    to my_pm:initial
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-3_final : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-3
+    to my_pm:final
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-2_activity_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-2
+    to my_pm:activity_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-33_artifact_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-33
+    to my_pm:artifact_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_1m2y2pvaED3J6VFvMTAg-2_activity_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_1m2y2pvaED3J6VFvMTAg-2
+    to my_pm:activity_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-6_ctrl_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-6
+    to my_pm:ctrl_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-7_ctrl_flow_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-7
+    to my_pm:ctrl_flow_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-20_ctrl_flow_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-20
+    to my_pm:ctrl_flow_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-32_data_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-32
+    to my_pm:data_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_CvR4PfVCJDiI6bvIUUvl-28_data_flow_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-28
+    to my_pm:data_flow_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_DqRSZQiQ3lTnqpyIPe1H-2_ctrl_flow_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_DqRSZQiQ3lTnqpyIPe1H-2
+    to my_pm:ctrl_flow_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_1_model : cs_as:CS_AS_Link [
+    from my_drawio:cell_1
+    to my_pm:model
+    object_diagram:inModel model
+  ]
+}

+ 576 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/RecPM_drawio.oml

@@ -0,0 +1,576 @@
+// Warning: Generated code! Do not edit!
+// Input: /Users/albertins/git/drawio2oml/RecPM.drawio#RecPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/oml_generator.py
+// Minimal mode enabled: Page/cell attributes, style, and geometries have been omitted (making the drawio-> OML conversion lossy).
+
+description <http://ua.be/sdo2l/description/artifacts/RecPM_drawio#> as RecPM_drawio {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+
+  ci model : drawio:Model [
+    drawio:hasDrawioId "2Bc0qMESYrDuhpiJgCwm"
+    object_diagram:hasName "RecPM:pm_drawio"
+  ]
+
+  
+  ci cell_0 : drawio:Cell [
+    drawio:hasDrawioId "0"
+    drawio:isRootOf model
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_1 : drawio:Cell [
+    drawio:hasDrawioId "1"
+    drawio:hasParent cell_0
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-1 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-1"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-1_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-1
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-1_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "initial"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-1
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-2"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "<u style=\"color: rgb(0 , 0 , 0)\">%name%<br>: %type%</u>"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "activity"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue "Sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-2_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-27"
+    drawio:hasParent cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-27_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_out"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-27
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-5"
+    drawio:hasParent cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cout"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-5_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_out"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-5
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-4"
+    drawio:hasParent cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cin"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-4_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_in"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-4
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-1 : drawio:Vertex [
+    drawio:hasDrawioId "DqRSZQiQ3lTnqpyIPe1H-1"
+    drawio:hasParent cell_CvR4PfVCJDiI6bvIUUvl-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-1_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_DqRSZQiQ3lTnqpyIPe1H-1
+    object_diagram:inModel model
+  ]
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-1_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cinRec"
+    drawio:propertyOf cell_DqRSZQiQ3lTnqpyIPe1H-1
+    object_diagram:inModel model
+  ]
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-1_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_DqRSZQiQ3lTnqpyIPe1H-1
+    object_diagram:inModel model
+  ]
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-1_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_in"
+    drawio:propertyOf cell_DqRSZQiQ3lTnqpyIPe1H-1
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-6 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-6"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-1
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-4
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-6_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-6
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-6_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-6
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-3 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-3"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-3_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-3
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-3_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "final"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-3
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-7 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-7"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-5
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-18
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-7_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-7
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-7_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-7
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-20 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-20"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-19
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-3
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-20_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-20
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-20_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-20
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-32 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-32"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-33
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-31
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-32_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-32
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-32_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-32
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-28 : drawio:Edge [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-28"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_CvR4PfVCJDiI6bvIUUvl-27
+    drawio:hasTarget cell_CvR4PfVCJDiI6bvIUUvl-33
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-28_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-28
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-28_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_flow"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-28
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-33"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%name% : %type%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "artifact"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-33_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue "xopp"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-33
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_1m2y2pvaED3J6VFvMTAg-2 : drawio:Vertex [
+    drawio:hasDrawioId "1m2y2pvaED3J6VFvMTAg-2"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "<u style=\"color: rgb(0 , 0 , 0)\">%name%<br>: %type%</u>"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "activity"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_name : drawio:CellProperty [
+    dict:hasKey "name"
+    dict:hasValue "look_at_sketch"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_type : drawio:CellProperty [
+    dict:hasKey "type"
+    dict:hasValue "LookAtSketch"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  ci cell_1m2y2pvaED3J6VFvMTAg-2_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-19"
+    drawio:hasParent cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cout"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-19_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_out"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-19
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-31"
+    drawio:hasParent cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "sketch"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-31_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "data_in"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-31
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18 : drawio:Vertex [
+    drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-18"
+    drawio:hasParent cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "cin"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+  ci cell_CvR4PfVCJDiI6bvIUUvl-18_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_in"
+    drawio:propertyOf cell_CvR4PfVCJDiI6bvIUUvl-18
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_7jRsOKVBNxhU3iQF4-4r-1 : drawio:Vertex [
+    drawio:hasDrawioId "7jRsOKVBNxhU3iQF4-4r-1"
+    drawio:hasParent cell_1m2y2pvaED3J6VFvMTAg-2
+    object_diagram:inModel model
+  ]
+  
+  ci cell_7jRsOKVBNxhU3iQF4-4r-1_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue "%portname%"
+    drawio:propertyOf cell_7jRsOKVBNxhU3iQF4-4r-1
+    object_diagram:inModel model
+  ]
+  ci cell_7jRsOKVBNxhU3iQF4-4r-1_prop_portname : drawio:CellProperty [
+    dict:hasKey "portname"
+    dict:hasValue "coutRec"
+    drawio:propertyOf cell_7jRsOKVBNxhU3iQF4-4r-1
+    object_diagram:inModel model
+  ]
+  ci cell_7jRsOKVBNxhU3iQF4-4r-1_prop_placeholders : drawio:CellProperty [
+    dict:hasKey "placeholders"
+    dict:hasValue "1"
+    drawio:propertyOf cell_7jRsOKVBNxhU3iQF4-4r-1
+    object_diagram:inModel model
+  ]
+  ci cell_7jRsOKVBNxhU3iQF4-4r-1_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_out"
+    drawio:propertyOf cell_7jRsOKVBNxhU3iQF4-4r-1
+    object_diagram:inModel model
+  ]
+
+  
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-2 : drawio:Edge [
+    drawio:hasDrawioId "DqRSZQiQ3lTnqpyIPe1H-2"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+    drawio:hasSource cell_7jRsOKVBNxhU3iQF4-4r-1
+    drawio:hasTarget cell_DqRSZQiQ3lTnqpyIPe1H-1
+  ]
+  
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-2_prop_label : drawio:CellProperty [
+    dict:hasKey "label"
+    dict:hasValue ""
+    drawio:propertyOf cell_DqRSZQiQ3lTnqpyIPe1H-2
+    object_diagram:inModel model
+  ]
+  ci cell_DqRSZQiQ3lTnqpyIPe1H-2_prop_pmRole : drawio:CellProperty [
+    dict:hasKey "pmRole"
+    dict:hasValue "ctrl_flow"
+    drawio:propertyOf cell_DqRSZQiQ3lTnqpyIPe1H-2
+    object_diagram:inModel model
+  ]
+
+  
+}

+ 144 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/RecPM_pm.oml

@@ -0,0 +1,144 @@
+// Warning: Generated Code! Do not edit!
+// Input: /Users/albertins/git/drawio2oml/RecPM.drawio#RecPM:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+description <http://ua.be/sdo2l/description/artifacts/RecPM_pm#> as RecPM_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
+
+  ci model : pm:Model [
+    object_diagram:hasName "RecPM_pm"
+  ]
+
+  ci initial : pm:Initial [
+    object_diagram:inModel model
+    pm:ctrlTo activity_0_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci final : pm:Final [
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_1_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_0 : pm:Artifact [
+    pm:hasName "sketch"
+    pm:hasType ftg_instance:f_xopp
+    object_diagram:inModel model
+    pm:dataTo activity_1_port_3 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_0 : pm:Activity [
+    pm:hasName "sketch"
+    pm:isTransformation ftg_instance:t_Sketch
+    object_diagram:inModel model
+  ]
+
+  ci activity_0_port_2 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:ctrlTo activity_1_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    //pm:ctrlFrom initial // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_0_port_1 : pm:CtrlInputPort [
+    pm:hasName "cinRec"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_1_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_3 : pm:DataOutputPort [
+    pm:hasName "sketch"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:dataTo artifact_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_1 : pm:Activity [
+    pm:hasName "look_at_sketch"
+    pm:isTransformation ftg_instance:t_LookAtSketch
+    object_diagram:inModel model
+  ]
+
+  ci activity_1_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:ctrlTo final // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_1_port_2 : pm:CtrlOutputPort [
+    pm:hasName "coutRec"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:ctrlTo activity_0_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_1_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_0_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+  
+
+  ci activity_1_port_3 : pm:DataInputPort [
+    pm:hasName "sketch"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    //pm:dataFrom artifact_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  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_2
+    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 ctrl_flow_3 : pm:CtrlFlow [
+    from activity_1_port_2
+    to activity_0_port_1
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_0 : pm:DataFlow [
+    from artifact_0
+    to activity_1_port_3
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_1 : pm:DataFlow [
+    from activity_0_port_3
+    to artifact_0
+    object_diagram:inModel model
+  ]
+
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 43 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/SmallXournalFile_xopp.oml


+ 36 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/TwoHiddenLayers_xopp.oml

@@ -0,0 +1,36 @@
+// Warning: Generated code! Do not edit!
+// Input file: 'http://localhost:5000/files/xopp/TwoHiddenLayers.xopp'
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/xopp2py
+// Minimal mode enabled: All XML attributes and non-text nodes are omitted.
+
+description <http://ua.be/sdo2l/description/artifacts/TwoHiddenLayers_xopp#> as TwoHiddenLayers_xopp {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/xopp#> as xopp
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+  ci model : xopp:Model [
+    object_diagram:hasName "TwoHiddenLayers_xopp"
+  ]
+
+  ci file : xopp:File [
+    xopp:hasCreator "Xournal++ 1.1.2"
+    xopp:hasFileVersion 4
+    xopp:hasTitle "Xournal++ document - see https://github.com/xournalpp/xournalpp"
+    object_diagram:inModel model
+  ]
+
+  ci p0 : xopp:Page [
+    xopp:hasWidth 595.27559100
+    xopp:hasHeight 841.88976400
+    xopp:hasBackgroundType "solid"
+    xopp:hasBackgroundColor "#ffffffff"
+    xopp:hasBackgroundStyle "plain"
+    xopp:inFile file
+    object_diagram:inModel model
+  ]
+
+  ci p0l0 : xopp:Layer [
+    xopp:inPage p0
+    object_diagram:inModel model
+  ]
+}

+ 455 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/drivetrain_corr.oml

@@ -0,0 +1,455 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/drivetrain:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+// This file contains the correspondence links between concrete syntax (Drawio) and abstract syntax (Process Model).
+description <http://ua.be/sdo2l/description/artifacts/drivetrain_corr#> as drivetrain_corr {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+  extends <http://ua.be/sdo2l/description/artifacts/drivetrain_drawio#> as my_drawio
+  extends <http://ua.be/sdo2l/description/artifacts/drivetrain_pm#> as my_pm
+
+  ci model : cs_as:CorrespondenceModel [
+    object_diagram:hasName "drivetrain_corr"
+  ]
+
+  ri trace_drawio_Kvt-DgTJ1DRZdE3eO3Tz-1_initial : cs_as:CS_AS_Link [
+    from my_drawio:cell_Kvt-DgTJ1DRZdE3eO3Tz-1
+    to my_pm:initial
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-69_final : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-69
+    to my_pm:final
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-10_activity_0_port_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-10
+    to my_pm:activity_0_port_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-12_activity_0_port_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-12
+    to my_pm:activity_0_port_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-13_activity_0_port_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-13
+    to my_pm:activity_0_port_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-20_activity_0_port_5 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-20
+    to my_pm:activity_0_port_5
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-23_activity_0_port_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-23
+    to my_pm:activity_0_port_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_lIuTJBtmPldcnfcOhHGF-3_activity_0_port_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_lIuTJBtmPldcnfcOhHGF-3
+    to my_pm:activity_0_port_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-4_activity_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-4
+    to my_pm:activity_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-5_artifact_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-5
+    to my_pm:artifact_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-6_artifact_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-6
+    to my_pm:artifact_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-17_artifact_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-17
+    to my_pm:artifact_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-18_artifact_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-18
+    to my_pm:artifact_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-28_activity_1_port_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-28
+    to my_pm:activity_1_port_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-2_activity_1_port_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-2
+    to my_pm:activity_1_port_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-38_activity_1_port_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-38
+    to my_pm:activity_1_port_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-24_activity_1_port_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-24
+    to my_pm:activity_1_port_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-26_activity_1_port_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-26
+    to my_pm:activity_1_port_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-22_activity_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-22
+    to my_pm:activity_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-43_activity_2_port_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-43
+    to my_pm:activity_2_port_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-1_activity_2_port_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-1
+    to my_pm:activity_2_port_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-4_activity_2_port_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-4
+    to my_pm:activity_2_port_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_-FBhw_vcgPF5rW2nMRGZ-12_activity_2_port_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_-FBhw_vcgPF5rW2nMRGZ-12
+    to my_pm:activity_2_port_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-47_activity_2_port_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-47
+    to my_pm:activity_2_port_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-30_activity_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-30
+    to my_pm:activity_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-34_artifact_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-34
+    to my_pm:artifact_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-49_artifact_5 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-49
+    to my_pm:artifact_5
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-57_activity_3_port_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-57
+    to my_pm:activity_3_port_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-58_activity_3_port_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-58
+    to my_pm:activity_3_port_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-5_activity_3_port_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-5
+    to my_pm:activity_3_port_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-8_activity_3_port_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-8
+    to my_pm:activity_3_port_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_-FBhw_vcgPF5rW2nMRGZ-13_activity_3_port_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_-FBhw_vcgPF5rW2nMRGZ-13
+    to my_pm:activity_3_port_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-50_activity_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-50
+    to my_pm:activity_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-52_artifact_6 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-52
+    to my_pm:artifact_6
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-53_artifact_7 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-53
+    to my_pm:artifact_7
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-67_activity_4_port_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-67
+    to my_pm:activity_4_port_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_hjtIVpRlB6XSkxCe3kzS-4_activity_4_port_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_hjtIVpRlB6XSkxCe3kzS-4
+    to my_pm:activity_4_port_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_lIuTJBtmPldcnfcOhHGF-6_activity_4_port_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_lIuTJBtmPldcnfcOhHGF-6
+    to my_pm:activity_4_port_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-68_activity_4_port_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-68
+    to my_pm:activity_4_port_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-7_activity_4_port_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-7
+    to my_pm:activity_4_port_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-54_activity_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-54
+    to my_pm:activity_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_oDRBLhcRjnzzmYJR4pT3-2_activity_5_port_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_oDRBLhcRjnzzmYJR4pT3-2
+    to my_pm:activity_5_port_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_oDRBLhcRjnzzmYJR4pT3-3_activity_5_port_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_oDRBLhcRjnzzmYJR4pT3-3
+    to my_pm:activity_5_port_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_oDRBLhcRjnzzmYJR4pT3-5_activity_5_port_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_oDRBLhcRjnzzmYJR4pT3-5
+    to my_pm:activity_5_port_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_oDRBLhcRjnzzmYJR4pT3-6_activity_5_port_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_oDRBLhcRjnzzmYJR4pT3-6
+    to my_pm:activity_5_port_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_nNHIfMFn6DHzLZeGgIeC-1_activity_5_port_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_nNHIfMFn6DHzLZeGgIeC-1
+    to my_pm:activity_5_port_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_ZZiZBwUqE79DcpNbQ25f-1_activity_5 : cs_as:CS_AS_Link [
+    from my_drawio:cell_ZZiZBwUqE79DcpNbQ25f-1
+    to my_pm:activity_5
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-3_ctrl_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-3
+    to my_pm:ctrl_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-14_data_flow_0 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-14
+    to my_pm:data_flow_0
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-15_data_flow_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-15
+    to my_pm:data_flow_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_hjtIVpRlB6XSkxCe3kzS-1_data_flow_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_hjtIVpRlB6XSkxCe3kzS-1
+    to my_pm:data_flow_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-27_data_flow_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-27
+    to my_pm:data_flow_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-29_data_flow_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-29
+    to my_pm:data_flow_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-21_data_flow_5 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-21
+    to my_pm:data_flow_5
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-25_ctrl_flow_1 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-25
+    to my_pm:ctrl_flow_1
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-48_data_flow_6 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-48
+    to my_pm:data_flow_6
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-41_data_flow_7 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-41
+    to my_pm:data_flow_7
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_-FBhw_vcgPF5rW2nMRGZ-15_data_flow_8 : cs_as:CS_AS_Link [
+    from my_drawio:cell_-FBhw_vcgPF5rW2nMRGZ-15
+    to my_pm:data_flow_8
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_qdYLwQm77Az_fS4UmsVN-1_data_flow_9 : cs_as:CS_AS_Link [
+    from my_drawio:cell_qdYLwQm77Az_fS4UmsVN-1
+    to my_pm:data_flow_9
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_-FBhw_vcgPF5rW2nMRGZ-11_data_flow_10 : cs_as:CS_AS_Link [
+    from my_drawio:cell_-FBhw_vcgPF5rW2nMRGZ-11
+    to my_pm:data_flow_10
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_Akw1mT6UbTgWhP--InIg-65_data_flow_11 : cs_as:CS_AS_Link [
+    from my_drawio:cell_Akw1mT6UbTgWhP--InIg-65
+    to my_pm:data_flow_11
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_-FBhw_vcgPF5rW2nMRGZ-6_data_flow_12 : cs_as:CS_AS_Link [
+    from my_drawio:cell_-FBhw_vcgPF5rW2nMRGZ-6
+    to my_pm:data_flow_12
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_-FBhw_vcgPF5rW2nMRGZ-14_data_flow_13 : cs_as:CS_AS_Link [
+    from my_drawio:cell_-FBhw_vcgPF5rW2nMRGZ-14
+    to my_pm:data_flow_13
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-3_ctrl_flow_2 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-3
+    to my_pm:ctrl_flow_2
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-6_ctrl_flow_3 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-6
+    to my_pm:ctrl_flow_3
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_XzE_Lk5AR0apfi5KI8EF-9_ctrl_flow_4 : cs_as:CS_AS_Link [
+    from my_drawio:cell_XzE_Lk5AR0apfi5KI8EF-9
+    to my_pm:ctrl_flow_4
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_hjtIVpRlB6XSkxCe3kzS-5_ctrl_flow_5 : cs_as:CS_AS_Link [
+    from my_drawio:cell_hjtIVpRlB6XSkxCe3kzS-5
+    to my_pm:ctrl_flow_5
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_lIuTJBtmPldcnfcOhHGF-5_ctrl_flow_6 : cs_as:CS_AS_Link [
+    from my_drawio:cell_lIuTJBtmPldcnfcOhHGF-5
+    to my_pm:ctrl_flow_6
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_oDRBLhcRjnzzmYJR4pT3-4_ctrl_flow_7 : cs_as:CS_AS_Link [
+    from my_drawio:cell_oDRBLhcRjnzzmYJR4pT3-4
+    to my_pm:ctrl_flow_7
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_oDRBLhcRjnzzmYJR4pT3-7_data_flow_14 : cs_as:CS_AS_Link [
+    from my_drawio:cell_oDRBLhcRjnzzmYJR4pT3-7
+    to my_pm:data_flow_14
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_oDRBLhcRjnzzmYJR4pT3-8_data_flow_15 : cs_as:CS_AS_Link [
+    from my_drawio:cell_oDRBLhcRjnzzmYJR4pT3-8
+    to my_pm:data_flow_15
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_nNHIfMFn6DHzLZeGgIeC-2_data_flow_16 : cs_as:CS_AS_Link [
+    from my_drawio:cell_nNHIfMFn6DHzLZeGgIeC-2
+    to my_pm:data_flow_16
+    object_diagram:inModel model
+  ]
+
+  ri trace_drawio_1_model : cs_as:CS_AS_Link [
+    from my_drawio:cell_1
+    to my_pm:model
+    object_diagram:inModel model
+  ]
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 2148 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/drivetrain_drawio.oml


+ 504 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/drivetrain_pm.oml

@@ -0,0 +1,504 @@
+// Warning: Generated Code! Do not edit!
+// Input: http://localhost:5000/files/drawio/drivetrain:pm
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/pm/oml_generator.py
+
+description <http://ua.be/sdo2l/description/artifacts/drivetrain_pm#> as drivetrain_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
+
+  ci model : pm:Model [
+    object_diagram:hasName "drivetrain_pm"
+  ]
+
+  ci initial : pm:Initial [
+    object_diagram:inModel model
+    pm:ctrlTo activity_5_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci final : pm:Final [
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_4_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_0 : pm:Artifact [
+    pm:hasName "drivetrain_limitations"
+    pm:hasType ftg_instance:f_TextDocument
+    object_diagram:inModel model
+    pm:dataTo activity_0_port_3 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_1 : pm:Artifact [
+    pm:hasName "test_requirements"
+    pm:hasType ftg_instance:f_TextDocument
+    object_diagram:inModel model
+    pm:dataTo activity_0_port_4 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner errorpm:dataTo activity_2_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_2 : pm:Artifact [
+    pm:hasName "matlab_torque"
+    pm:hasType ftg_instance:f_Profile
+    object_diagram:inModel model
+    pm:dataTo activity_1_port_3 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_3 : pm:Artifact [
+    pm:hasName "control_parameter_generator"
+    pm:hasType ftg_instance:f_Script
+    object_diagram:inModel model
+    pm:dataTo activity_1_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_4 : pm:Artifact [
+    pm:hasName "matlab_control_parameters"
+    pm:hasType ftg_instance:f_TabularData
+    object_diagram:inModel model
+    pm:dataTo activity_2_port_3 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_5 : pm:Artifact [
+    pm:hasName "c-code_to_be_run_on_rtt"
+    pm:hasType ftg_instance:f_Code
+    object_diagram:inModel model
+    pm:dataTo activity_3_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_6 : pm:Artifact [
+    pm:hasName "drivetrain_sensor_data"
+    pm:hasType ftg_instance:f_TabularData
+    object_diagram:inModel model
+    pm:dataTo activity_4_port_3 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci artifact_7 : pm:Artifact [
+    pm:hasName "coupling_sensor_data"
+    pm:hasType ftg_instance:f_TabularData
+    object_diagram:inModel model
+    pm:dataTo activity_4_port_4 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_0 : pm:Activity [
+    pm:hasName "set_up_drivetrain_profile"
+    pm:isTransformation ftg_instance:t_SetupProfile
+    object_diagram:inModel model
+  ]
+
+  ci activity_0_port_2 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:ctrlTo activity_1_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_5_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_0_port_1 : pm:CtrlInputPort [
+    pm:hasName "cinRec"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_4_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_5 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:dataTo artifact_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_0_port_3 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:dataFrom artifact_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_0_port_4 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_0
+    object_diagram:inModel model
+    pm:dataFrom artifact_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_1 : pm:Activity [
+    pm:hasName "Generate_matlab_control_parameters"
+    pm:isTransformation ftg_instance:t_GenerateControlParameters
+    object_diagram:inModel model
+  ]
+
+  ci activity_1_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:ctrlTo activity_2_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_1_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_0_port_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_1_port_4 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:dataTo artifact_4 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_1_port_2 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:dataFrom artifact_3 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_1_port_3 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_1
+    object_diagram:inModel model
+    pm:dataFrom artifact_2 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_2 : pm:Activity [
+    pm:hasName "Build_simulink_control_settings"
+    pm:isTransformation ftg_instance:t_BuildControlSettings
+    object_diagram:inModel model
+  ]
+
+  ci activity_2_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_2
+    object_diagram:inModel model
+    pm:ctrlTo activity_3_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_2_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_2
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_1_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_2_port_4 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_2
+    object_diagram:inModel model
+    pm:dataTo artifact_5 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_2_port_2 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_2
+    object_diagram:inModel model
+    pm:dataFrom artifact_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_2_port_3 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_2
+    object_diagram:inModel model
+    pm:dataFrom artifact_4 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_3 : pm:Activity [
+    pm:hasName "run_experiment"
+    pm:isTransformation ftg_instance:t_RunExperiment
+    object_diagram:inModel model
+  ]
+
+  ci activity_3_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_3
+    object_diagram:inModel model
+    pm:ctrlTo activity_4_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_3_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_3
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_2_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_3_port_3 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_3
+    object_diagram:inModel model
+    pm:dataTo artifact_6 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_3_port_4 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_3
+    object_diagram:inModel model
+    pm:dataTo artifact_7 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_3_port_2 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_3
+    object_diagram:inModel model
+    pm:dataFrom artifact_5 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_4 : pm:Activity [
+    pm:hasName "check_properties"
+    pm:isTransformation ftg_instance:t_VerifyData
+    object_diagram:inModel model
+  ]
+
+  ci activity_4_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_4
+    object_diagram:inModel model
+    pm:ctrlTo final // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_4_port_2 : pm:CtrlOutputPort [
+    pm:hasName "coutRec"
+    pm:ofActivity activity_4
+    object_diagram:inModel model
+    pm:ctrlTo activity_0_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_4_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_4
+    object_diagram:inModel model
+    //pm:ctrlFrom activity_3_port_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+  
+
+  ci activity_4_port_3 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_4
+    object_diagram:inModel model
+    pm:dataFrom artifact_6 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_4_port_4 : pm:DataInputPort [
+    pm:hasName "din"
+    pm:ofActivity activity_4
+    object_diagram:inModel model
+    pm:dataFrom artifact_7 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_5 : pm:Activity [
+    pm:hasName "InputParameters"
+    pm:isTransformation ftg_instance:t_Preparation
+    object_diagram:inModel model
+  ]
+
+  ci activity_5_port_1 : pm:CtrlOutputPort [
+    pm:hasName "cout"
+    pm:ofActivity activity_5
+    object_diagram:inModel model
+    pm:ctrlTo activity_0_port_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_5_port_0 : pm:CtrlInputPort [
+    pm:hasName "cin"
+    pm:ofActivity activity_5
+    object_diagram:inModel model
+    //pm:ctrlFrom initial // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ci activity_5_port_2 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_5
+    object_diagram:inModel model
+    pm:dataTo artifact_0 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_5_port_3 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_5
+    object_diagram:inModel model
+    pm:dataTo artifact_1 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+
+  ci activity_5_port_4 : pm:DataOutputPort [
+    pm:hasName "dout"
+    pm:ofActivity activity_5
+    object_diagram:inModel model
+    pm:dataTo artifact_3 // for some reason, we have to explicitly create the unreified relations on top of the reified relations (at the end of this file) or we get a reasoner error
+  ]
+  
+
+  ri ctrl_flow_0 : pm:CtrlFlow [
+    from initial
+    to activity_5_port_0
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_1 : pm:CtrlFlow [
+    from activity_0_port_2
+    to activity_1_port_0
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_2 : pm:CtrlFlow [
+    from activity_1_port_1
+    to activity_2_port_0
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_3 : pm:CtrlFlow [
+    from activity_2_port_1
+    to activity_3_port_0
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_4 : pm:CtrlFlow [
+    from activity_3_port_1
+    to activity_4_port_0
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_5 : pm:CtrlFlow [
+    from activity_4_port_1
+    to final
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_6 : pm:CtrlFlow [
+    from activity_4_port_2
+    to activity_0_port_1
+    object_diagram:inModel model
+  ]
+
+  ri ctrl_flow_7 : pm:CtrlFlow [
+    from activity_5_port_1
+    to activity_0_port_0
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_0 : pm:DataFlow [
+    from artifact_0
+    to activity_0_port_3
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_1 : pm:DataFlow [
+    from artifact_1
+    to activity_0_port_4
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_2 : pm:DataFlow [
+    from artifact_1
+    to activity_2_port_2
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_3 : pm:DataFlow [
+    from artifact_2
+    to activity_1_port_3
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_4 : pm:DataFlow [
+    from artifact_3
+    to activity_1_port_2
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_5 : pm:DataFlow [
+    from activity_0_port_5
+    to artifact_2
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_6 : pm:DataFlow [
+    from artifact_4
+    to activity_2_port_3
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_7 : pm:DataFlow [
+    from activity_1_port_4
+    to artifact_4
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_8 : pm:DataFlow [
+    from artifact_5
+    to activity_3_port_2
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_9 : pm:DataFlow [
+    from artifact_6
+    to activity_4_port_3
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_10 : pm:DataFlow [
+    from artifact_7
+    to activity_4_port_4
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_11 : pm:DataFlow [
+    from activity_3_port_3
+    to artifact_6
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_12 : pm:DataFlow [
+    from activity_3_port_4
+    to artifact_7
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_13 : pm:DataFlow [
+    from activity_2_port_4
+    to artifact_5
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_14 : pm:DataFlow [
+    from activity_5_port_2
+    to artifact_0
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_15 : pm:DataFlow [
+    from activity_5_port_3
+    to artifact_1
+    object_diagram:inModel model
+  ]
+
+  ri data_flow_16 : pm:DataFlow [
+    from activity_5_port_4
+    to artifact_3
+    object_diagram:inModel model
+  ]
+
+}

+ 51 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/imabox_drawio.oml

@@ -0,0 +1,51 @@
+// Warning: Generated code! Do not edit!
+// Input: http://localhost:5000/files/drawio/imabox
+// Generator: https://msdl.uantwerpen.be/git/jexelmans/drawio2oml/drawio2oml/oml_generator.py
+// Minimal mode enabled: Page/cell attributes, style, and geometries have been omitted (making the drawio-> OML conversion lossy).
+
+description <http://ua.be/sdo2l/description/artifacts/imabox_drawio#> as imabox_drawio {
+
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+  uses <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+
+  ci model : drawio:Model [
+    drawio:hasDrawioId "zrtIvTJA7dqCUAPr35Tx"
+    object_diagram:hasName "imabox_drawio"
+  ]
+
+  
+  ci cell_0 : drawio:Cell [
+    drawio:hasDrawioId "0"
+    drawio:isRootOf model
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_1 : drawio:Cell [
+    drawio:hasDrawioId "1"
+    drawio:hasParent cell_0
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_9icA3CxboUUVQeyL5Ov7-1 : drawio:Vertex [
+    drawio:hasDrawioId "9icA3CxboUUVQeyL5Ov7-1"
+    drawio:hasValue "Hello, I'm a box!"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+  ci cell_9icA3CxboUUVQeyL5Ov7-2 : drawio:Vertex [
+    drawio:hasDrawioId "9icA3CxboUUVQeyL5Ov7-2"
+    drawio:hasParent cell_1
+    object_diagram:inModel model
+  ]
+  
+
+  
+}

Datei-Diff unterdrückt, da er zu groß ist
+ 43 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/my_xopp.oml


+ 18 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/artifacts/my_xopp_to_drawio.oml

@@ -0,0 +1,18 @@
+// Hardcoded example of a traceability model that relates one XOPP-text-node to one Drawio-cell
+description <http://ua.be/sdo2l/description/artifacts/my_xopp_to_drawio#> as my_xopp_to_drawio {
+	extends <http://ua.be/sdo2l/description/artifacts/MyPM_drawio#> as my_drawio
+	extends <http://ua.be/sdo2l/description/artifacts/my_xopp#> as my_xopp
+	
+	uses <http://ua.be/sdo2l/vocabulary/formalisms/traceability_model#> as traceability_model
+	uses <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+	
+	ci model : traceability_model:TraceabilityModel [
+		object_diagram:hasName "my_xopp_to_drawio"
+	]
+	
+	ri link : traceability_model:TraceabilityLink [
+		from my_xopp:p0l0e1
+		to my_drawio:cell_CvR4PfVCJDiI6bvIUUvl-2
+		object_diagram:inModel model
+	]
+}

+ 28 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/bundle.oml

@@ -0,0 +1,28 @@
+description bundle <http://ua.be/sdo2l/description/bundle#> as ^bundle {
+  uses <http://ua.be/sdo2l/vocabulary/bundle#>
+  includes <http://ua.be/sdo2l/description/artifacts/drivetrain_pm#>
+  includes <http://ua.be/sdo2l/description/artifacts/MinimalPM_pm#>
+  includes <http://ua.be/sdo2l/description/artifacts/MyPM_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/my_xopp#>
+  includes <http://ua.be/sdo2l/description/artifacts/RecPM_corr#>
+  includes <http://ua.be/sdo2l/description/artifacts/MyPM_corr#>
+  includes <http://ua.be/sdo2l/description/artifacts/RecPM_pm#>
+  includes <http://ua.be/sdo2l/description/artifacts/AnotherPM_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/MinimalPM_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/SmallXournalFile_xopp#>
+  includes <http://ua.be/sdo2l/description/artifacts/FTG_ftg#>
+  includes <http://ua.be/sdo2l/description/artifacts/FTG_corr#>
+  includes <http://ua.be/sdo2l/description/artifacts/RecPM_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/TwoHiddenLayers_xopp#>
+  includes <http://ua.be/sdo2l/description/artifacts/FTG_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/drivetrain_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/AnotherPM_corr#>
+  includes <http://ua.be/sdo2l/description/artifacts/MinimalPM_corr#>
+  includes <http://ua.be/sdo2l/description/artifacts/MyPM_pm#>
+  includes <http://ua.be/sdo2l/description/artifacts/imabox_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/my_xopp_to_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/drivetrain_corr#>
+  includes <http://ua.be/sdo2l/description/artifacts/Drawing_drawio#>
+  includes <http://ua.be/sdo2l/description/artifacts/AnotherPM_pm#>
+  includes <http://ua.be/sdo2l/description/traces/my_pt#>
+}

+ 180 - 0
backend/ontology/src/oml/ua.be/sdo2l/description/traces/my_pt.oml

@@ -0,0 +1,180 @@
+// Hardcoded example of a process trace
+description <http://ua.be/sdo2l/description/traces/my_pt#> as my_pt {
+	extends <http://ua.be/sdo2l/description/artifacts/MyPM_pm#> as my_pm
+
+	uses <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces
+	uses <http://ua.be/sdo2l/vocabulary/base/base#> as base
+	uses <http://www.w3.org/2001/XMLSchema#> as xsd
+
+	extends <http://ua.be/sdo2l/description/artifacts/my_xopp#> as my_xopp
+	
+	ci start_trace_event : traces:StartTraceEvent [
+		traces:relatesTo my_pm:model
+		traces:hasTimestamp "2011-06-01T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci start_activity0 : traces:StartActivityEvent [
+		traces:isPrecededBy start_trace_event
+		traces:relatesTo my_pm:activity_0_port_0 // ctrl inport
+		traces:hasTimestamp "2011-06-02T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci sketch-v1.xopp : traces:Artifact [
+		traces:hasLocation "sketch-v1.xopp"
+		base:hasTag "v1"
+		base:hasGUID "sketch.xopp-v1"
+		traces:relatesTo my_pm:artifact_0
+		traces:isModel my_xopp:model // example: an artifact can be a 'model'
+		base:previousVersionOf sketch-v2.xopp
+		traces:addedAt "2011-06-04T19:16:58.869Z"^^xsd:dateTime
+	]
+
+	
+	ci end_activity0 : traces:EndActivityEvent [
+		traces:isPrecededBy start_activity0
+		traces:relatesTo my_pm:activity_0_port_1 // ctrl outport
+				traces:hasTimestamp "2011-06-03T19:16:58.869Z"^^xsd:dateTime
+	]
+
+	ri produced_artifact : traces:Produces [
+		from end_activity0
+		to sketch-v1.xopp
+		traces:relatesTo my_pm:activity_0_port_2 // data outport
+	]
+	
+	ci start_activity1 : traces:StartActivityEvent [
+		traces:isPrecededBy end_activity0
+		traces:relatesTo my_pm:activity_1_port_0 // ctrl inport
+		traces:hasTimestamp "2011-06-04T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ri consumed_artifact : traces:Consumes [
+		from start_activity1
+		to sketch-v1.xopp
+		traces:relatesTo my_pm:activity_1_port_2 // data inport
+	]
+	
+	ci end_activity1 : traces:EndActivityEvent [
+		traces:isPrecededBy start_activity1
+		traces:relatesTo my_pm:activity_1_port_1 // ctrl outport
+				traces:hasTimestamp "2011-06-05T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci start_activity2 : traces:StartActivityEvent [
+		traces:isPrecededBy end_activity1
+		traces:relatesTo my_pm:activity_0_port_0 // ctrl inport
+				traces:hasTimestamp "2011-06-06T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci sketch-v2.xopp : traces:Artifact [
+		traces:hasLocation "sketch-v2.xopp"
+		base:hasTag "v2"
+		base:hasGUID "sketch.xopp-v2"
+		traces:relatesTo my_pm:artifact_0
+		traces:isModel my_xopp:model // example: an artifact can be a 'model'
+		base:nextVersionOf sketch-v1.xopp
+		traces:addedAt "2011-06-05T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ri produced_artifact_v2 : traces:Produces [
+		from end_activity2
+		to sketch-v2.xopp
+		traces:relatesTo my_pm:activity_0_port_2 // data inport
+	]
+	
+	ci end_activity2 : traces:EndActivityEvent [
+		traces:isPrecededBy start_activity2
+		traces:relatesTo my_pm:activity_0_port_1 // ctrl outport
+		traces:hasTimestamp "2011-06-07T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci start_activity3 : traces:StartActivityEvent [
+		traces:isPrecededBy end_activity2
+		traces:relatesTo my_pm:activity_1_port_0 // ctrl inport
+		traces:hasTimestamp "2011-06-08T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ri consumed_artifact_v2 : traces:Consumes [
+		from start_activity3
+		to sketch-v2.xopp
+		traces:relatesTo my_pm:activity_1_port_2 // data inport
+	]
+	
+	ci end_activity3 : traces:EndActivityEvent [
+		traces:isPrecededBy start_activity3
+		traces:relatesTo my_pm:activity_1_port_1 // ctrl outport
+		traces:hasTimestamp "2011-06-09T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci start_activity4 : traces:StartActivityEvent [
+		traces:isPrecededBy end_activity3
+		traces:relatesTo my_pm:activity_0_port_0 // ctrl inport
+		traces:hasTimestamp "2011-06-10T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci sketch-v3.xopp : traces:Artifact [
+		traces:hasLocation "sketch-v3.xopp"
+		base:hasTag "v3"
+		base:hasGUID "sketch.xopp-v3"
+		traces:relatesTo my_pm:artifact_0
+		traces:isModel my_xopp:model // example: an artifact can be a 'model'
+		base:nextVersionOf sketch-v2.xopp
+		traces:addedAt "2011-06-06T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ri produced_artifact_v3 : traces:Produces [
+		from end_activity4
+		to sketch-v3.xopp
+		traces:relatesTo my_pm:activity_0_port_2 // data inport
+	]
+	
+	ci end_activity4 : traces:EndActivityEvent [
+		traces:isPrecededBy start_activity4
+		traces:relatesTo my_pm:activity_0_port_1 // ctrl outport
+		traces:hasTimestamp "2011-06-11T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci start_activity5 : traces:StartActivityEvent [
+		traces:isPrecededBy end_activity4
+		traces:relatesTo my_pm:activity_1_port_0 // ctrl inport
+		traces:hasTimestamp "2011-06-12T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ri consumed_artifact_v3 : traces:Consumes [
+		from start_activity5
+		to sketch-v3.xopp
+		traces:relatesTo my_pm:activity_1_port_2 // data inport
+	]
+	
+	ci end_activity5 : traces:EndActivityEvent [
+		traces:isPrecededBy start_activity5
+		traces:relatesTo my_pm:activity_1_port_1 // ctrl outport
+		traces:hasTimestamp "2011-06-13T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci start_activity6 : traces:StartActivityEvent [
+		traces:isPrecededBy end_activity5
+		traces:relatesTo my_pm:activity_0_port_0 // ctrl inport
+		traces:hasTimestamp "2011-06-14T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci end_activity6 : traces:EndActivityEvent [
+		traces:isPrecededBy start_activity6
+		traces:relatesTo my_pm:activity_0_port_1 // ctrl outport
+		traces:hasTimestamp "2011-06-15T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	ci start_activity7 : traces:StartActivityEvent [
+		traces:isPrecededBy end_activity6
+		traces:relatesTo my_pm:activity_1_port_0 // ctrl inport
+		traces:hasTimestamp "2011-06-16T19:16:58.869Z"^^xsd:dateTime
+	]
+	
+	
+	
+	ci end_trace_event : traces:EndTraceEvent [
+		traces:isPrecededBy start_activity7
+		traces:relatesTo my_pm:model
+		traces:hasTimestamp "2011-06-17T19:16:58.869Z"^^xsd:dateTime
+	]
+}

+ 6 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/csv/addresses.csv

@@ -0,0 +1,6 @@
+John,Doe,120 jefferson st.,Riverside, NJ, 08075
+Jack,McGinnis,220 hobo Av.,Phila, PA,09119
+"John ""Da Man""",Repici,120 Jefferson St.,Riverside, NJ,08075
+Stephen,Tyler,"7452 Terrace ""At the Plaza"" road",SomeTown,SD, 91234
+,Blankman,,SomeTown, SD, 00298
+"Joan ""the bone"", Anne",Jet,"9th, at Terrace plc",Desert City,CO,00123

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/drawio/AnotherPM:pm


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/drawio/FTG:ftg


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/drawio/MinimalPM:pm


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/drawio/MyPM:pm


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/drawio/MyPMRec:pm


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/drawio/drivetrain:pm


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
backend/ontology/src/oml/ua.be/sdo2l/files/drawio/imabox


BIN
backend/ontology/src/oml/ua.be/sdo2l/files/file/api.png


BIN
backend/ontology/src/oml/ua.be/sdo2l/files/file/robot.webp


BIN
backend/ontology/src/oml/ua.be/sdo2l/files/xopp/SmallXournalFile.xopp


BIN
backend/ontology/src/oml/ua.be/sdo2l/files/xopp/TwoHiddenLayers.xopp


+ 34 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/base/acyclic.oml

@@ -0,0 +1,34 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/base/acyclic#> as acyclic {
+	
+	aspect element []
+	
+	// Add this type as a supertype of any relation to make it acyclic.
+	relation entity Acyclic [
+		from element
+		to element
+		forward acyclicForward
+		irreflexive
+		asymmetric
+	]
+	
+	relation entity derivedTransitiveRelation [
+		from element
+		to element
+		forward transitiveForward
+		irreflexive
+		asymmetric
+		
+		// transitive // Currently ignored by reasoner. See workaround below.
+	]
+	
+	
+	rule DeriveTransitiveRelation [
+		acyclicForward(A, B) -> transitiveForward(A, B)
+	]
+	
+	// Workaround:
+	rule MakeTransitive [
+		// Don't know if this creates unnecessary bloat, compared to the 'transitive'-flag, but it works:
+		transitiveForward(A, B) ^ transitiveForward(B, C) -> transitiveForward(A, C)
+	]
+}

+ 131 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/base/base.oml

@@ -0,0 +1,131 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/base/base#> as base {
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+	extends <http://ua.be/sdo2l/vocabulary/base/acyclic#> as acyclic
+
+	aspect ImmutableThing [
+		key hasGUID
+		restricts scalar property hasGUID to exactly 1 
+	]
+	
+	scalar property hasGUID [
+		domain ImmutableThing
+		range xsd:string
+		functional
+	]
+
+	// Elements for Identified Things
+
+	@rdfs:comment "The class of things having an id and a canonical name"
+	aspect IdentifiedThing [
+		restricts scalar property hasIdentifier to exactly 1
+		//restricts scalar property hasCanonicalName to exactly 1
+	]
+
+	@rdfs:comment "The has canonical name property"
+	scalar property hasCanonicalName [
+		domain IdentifiedThing
+		range xsd:string
+	]
+
+	@rdfs:comment "The has identifier property"
+	scalar property hasIdentifier [
+		domain IdentifiedThing
+		range xsd:string
+	]
+
+	@rdfs:comment "The has description property"
+	scalar property hasDescription [
+		domain IdentifiedThing
+		range xsd:string
+	]
+	
+	enumerated scalar BasicType [
+    	"Boolean","Double", "Integer","String", "Char"
+    ]  
+    
+    // OBS: The specialization did not work for enumerated scalars, the only way to work is duplicating the values like this. 
+    enumerated scalar NumericType :> BasicType [
+    	"Double", "Integer"
+    ]
+
+	// Relationships aggreagation and containment
+
+	// Joeri: These appear to be unused at the moment. Can we remove them?
+ 	@rdfs:comment "The class of things that can be aggregated"
+	aspect AggregatedThing
+
+	@rdfs:comment "The aggregates relation between aggregated things"
+	relation entity Aggregates [
+		from AggregatedThing
+		to AggregatedThing
+		forward aggregates
+		reverse isAggregatedIn
+		asymmetric
+		irreflexive
+	]
+
+	@rdfs:comment "A ContainedElement is a thing that can participate in homomeric containment relationships."
+	aspect ContainedElement
+
+	@rdfs:comment "Contains is a many-to-many relation used to represent homomeric relations that form directed rooted trees."
+	relation entity Contains :> acyclic:Acyclic [
+		from ContainedElement
+		to ContainedElement
+		forward contains
+		reverse isContainedIn
+		inverse functional
+		asymmetric
+		irreflexive
+	]
+
+	// Definitions and Usages
+
+	@rdfs:comment "The class of things that specify definitions of elements"
+	aspect DefinitionThing
+
+	@rdfs:comment "The has name property"
+	scalar property hasName [
+		domain DefinitionThing
+		range xsd:string
+	]
+
+
+	@rdfs:comment "The class of things that are used and are defined by DefinitionThings"
+	aspect UsageThing
+
+	@rdfs:comment "The has usage name property"
+	scalar property hasUsageName [
+		domain UsageThing
+		range xsd:string
+	]
+
+	@rdfs:comment "relationship between definitions and concrete elements"
+	relation entity Defines [
+		from DefinitionThing
+		to UsageThing
+		forward defines
+		reverse isDefinedBy
+		asymmetric
+		irreflexive
+	]
+
+	// Version
+
+	aspect Versionable :> ImmutableThing
+
+	@rdfs:comment "The has canonical name property"
+	scalar property hasTag [
+		domain Versionable
+		range xsd:string
+	]
+
+	relation entity Versions :> acyclic:Acyclic [
+		from Versionable
+		to Versionable
+		forward previousVersionOf
+		reverse nextVersionOf
+		asymmetric
+		irreflexive
+	]
+}

+ 27 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/bundle.oml

@@ -0,0 +1,27 @@
+vocabulary bundle <http://ua.be/sdo2l/vocabulary/bundle#> as ^bundle {
+	includes <http://ua.be/sdo2l/vocabulary/base/acyclic#>
+	includes <http://ua.be/sdo2l/vocabulary/base/base#>
+	
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/file#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/ftg#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/shaclproperty#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/system#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/violation#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/code#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/component#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/dict#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/drawio#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/pm#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/requirement#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/richtext#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/script#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/tabular#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/text#>
+	includes <http://ua.be/sdo2l/vocabulary/formalisms/traceability_model#>
+    includes <http://ua.be/sdo2l/vocabulary/formalisms/xopp#>
+    
+   	includes <http://ua.be/sdo2l/vocabulary/federation#>
+}

+ 44 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/federation.oml

@@ -0,0 +1,44 @@
+@dc:description "A vocabulary about federation. Virtual data access (service and storage)."
+vocabulary <http://ua.be/sdo2l/vocabulary/federation#> as federation {
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+    extends <http://purl.org/dc/elements/1.1/> as dc
+    extends <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces
+
+    // TODO Maybe add return values/names/types
+    @rdfs:comment "An Operation specifies one possible call (or operation) that can be made. For example 'translate' for a Point class."
+    concept Operation [ key hasIri ]
+	scalar property hasEndPoint [ domain Operation range xsd:string ]
+    scalar property hasDescription [ domain Operation range xsd:string ]
+    scalar property hasSideEffect [ domain Operation range xsd:boolean ]
+    // TODO Should be IRI not string
+    scalar property hasIri [ domain Operation range xsd:string ]
+    scalar property hasCall [ domain Operation range xsd:string ]
+    relation entity Parameters [
+		from Operation
+		to Parameter
+		forward hasParameter
+		reverse isParameterOf
+	]
+
+    @rdfs:comment "A Parameter is a key value store for passing around values by name."
+    concept Parameter [ key hasIdentifier ]
+	scalar property hasIdentifier [ domain Parameter range xsd:string ]
+    scalar property hasValue [ domain Parameter	range xsd:string ]
+
+    // TODO Maybe make this an aspect and create concept per type of service with restrictions
+    @rdfs:comment "A Service specifies an element which has one or more Operations available."
+    concept Service
+    relation entity Services [
+		from traces:Artifact
+		to Service
+		forward hasService
+		reverse isOperationFor
+	]
+    relation entity Operations [
+		from Service
+		to Operation
+		forward hasOperation
+		reverse isOperationOf
+	]
+}

+ 59 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/code.oml

@@ -0,0 +1,59 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/code#> as code {
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/text#> as text
+
+
+    concept CodeData :> text:TextData
+    concept CodeLanguage
+
+    enumerated scalar CodeLanguageOption [
+        "C",
+        "C++",
+        "Python",
+        "MATLAB"
+    ]
+
+    scalar property hasCodeLanguageOption [
+        domain CodeLanguage
+        range CodeLanguageOption
+    ]
+
+    relation entity UsesCodeLanguage [
+        from CodeData
+        to CodeLanguage
+        forward usesCodeLanguage
+    ]
+
+    concept CCodeLanguage :> CodeLanguage [
+        restricts scalar property hasCodeLanguageOption to "C"
+    ]
+
+    concept CCode :> CodeData [
+        restricts all relation usesCodeLanguage to CCodeLanguage
+    ]
+
+    concept CppCodeLanguage :> CodeLanguage [
+        restricts scalar property hasCodeLanguageOption to "C++"
+    ]
+
+    concept CppCode :> CodeData [
+        restricts all relation usesCodeLanguage to CppCodeLanguage
+    ]
+
+    concept PythonCodeLanguage :> CodeLanguage [
+        restricts scalar property hasCodeLanguageOption to "Python"
+    ]
+
+    concept PythonCode :> CodeData [
+        restricts all relation usesCodeLanguage to PythonCodeLanguage
+    ]
+
+    concept MATLABCodeLanguage :> CodeLanguage [
+        restricts scalar property hasCodeLanguageOption to "MATLAB"
+    ]
+
+    concept MATLABCode :> CodeData [
+        restricts all relation usesCodeLanguage to MATLABCodeLanguage
+    ]
+
+
+}

+ 76 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/component.oml

@@ -0,0 +1,76 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/component#> as component {
+	
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+	extends <http://bipm.org/jcgm/vim4#> as vim4
+
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces
+
+	@rdfs:comment "A Structural Model defines the static view of a system in terms of its components and their relationships."
+	concept StructuralModel :> base:IdentifiedThing, traces:Artifact//, base:WorkflowArtifact
+	
+	@rdfs:comment "A Structural Model is specified by several components."
+	relation entity Specifies [
+		from StructuralModel
+		to Component
+		forward specifies
+		reverse isSpecifiedBy
+		inverse functional
+		asymmetric
+		irreflexive
+	]
+	
+	// Definitions for Components
+	
+	@rdfs:comment "A Component is something that can be designed in a structural model."
+	concept Component :> base:IdentifiedThing, base:ContainedElement, vim4:Object
+	
+	@rdfs:comment "A component may have several attributes."
+	concept Attribute :> base:IdentifiedThing, vim4:InherentUnitaryQuantityValue [
+		restricts all relation vim4:characterizes to Component
+	]
+	
+	@rdfs:comment "An Interface represents a set of features that describe some Component’s interaction with another Component."
+	concept Interface :> base:IdentifiedThing
+	
+	@rdfs:comment "A Component presents zero or more Interfaces."
+	relation entity Presents [
+		from Component
+		to Interface
+		forward presents
+		reverse isPresentedBy
+		inverse functional
+		asymmetric
+		irreflexive
+	]
+	
+	@rdfs:comment "A Junction joins two or more Interfaces."
+	relation entity Junction :> base:IdentifiedThing [
+		from Interface
+		to Interface
+		forward joins
+		symmetric
+		irreflexive
+	]
+	
+	@rdfs:comment "A Component connects to zero or more components."
+	relation entity Connection [
+		from Component
+		to Component
+		forward connectsTo
+		symmetric
+	]
+	
+	@rdfs:comment "When interfaces presented by components are joined, we infer that the components are connected."
+	rule Junction-infers-Connection [
+		presents(c1, i1) ^ joins(i1, i2) ^ isPresentedBy(i2, c2) -> connectsTo(c1, c2)
+	]
+	
+	// Domain-Specific Components
+	
+	concept CarComponent :> Component
+	
+	concept WheelComponent :> Component
+	
+	
+}

+ 19 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/cs_as.oml

@@ -0,0 +1,19 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as {
+	
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/traceability_model#> as traceability_model
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+	
+	relation entity CS_AS_Link :> traceability_model:TraceabilityLink [
+		from object_diagram:Object
+		to object_diagram:Object
+		forward parsedAs
+		reverse renderedAs
+		functional // Assuming that CS contains at least the same amount of the information as AS, there is only one way to parse something
+		asymmetric
+		irreflexive
+	]
+	
+	concept CorrespondenceModel :> traceability_model:TraceabilityModel [
+		restricts all relation object_diagram:hasObject to CS_AS_Link
+	]
+}

+ 25 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/dict.oml

@@ -0,0 +1,25 @@
+// Extension of object_diagram vocabulary
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict {
+	
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+
+	aspect Object []
+	
+	// In many vocabularies, we want to have "dictionaries" (key-value mappings).
+	// We choose to represent every dictionary entry by an 'Object', that has a 'key' and 'value' field
+	aspect DictEntry :> Object [
+		restricts scalar property hasKey to exactly 1
+		restricts scalar property hasValue to exactly 1
+	]
+	scalar property hasKey :> object_diagram:hasField [
+		domain DictEntry
+		range xsd:string
+		functional
+	]
+	scalar property hasValue :> object_diagram:hasField [
+		domain DictEntry
+		range xsd:string
+		functional
+	]
+}

+ 204 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/drawio.oml

@@ -0,0 +1,204 @@
+// Vocabulary for the Draw.io file format
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio {
+
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+	extends <http://ua.be/sdo2l/vocabulary/base/acyclic#> as acyclic
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+
+	aspect element :> object_diagram:Object []
+	
+	// Cells and Pages have a GUID generated by drawio.
+	aspect elementWithDrawioId :> element [
+		restricts scalar property hasDrawioId to exactly 1
+	]
+	scalar property hasDrawioId [
+		domain elementWithDrawioId
+		range xsd:string
+		functional
+	]
+
+	// All cells are vertices or edges, except for:
+	//   (1) The root cell of a page
+	//   (2) The cells that represent layers (direct children of the root cell)
+	concept Cell :> elementWithDrawioId []
+
+	scalar property hasValue [
+		domain Cell
+		range xsd:string
+		functional
+	]
+	
+	relation entity HasParentCell :> acyclic:Acyclic, object_diagram:Link [
+		from Cell
+		to Cell
+		forward hasParent
+		reverse hasChild
+		asymmetric
+		irreflexive
+		functional // all cells have one parent, except for the root cell
+	]
+	
+	relation entity HasProperty :> object_diagram:Link [
+		from Cell
+		to CellProperty
+		forward hasProperty
+		reverse propertyOf
+		asymmetric
+		irreflexive
+		inverse functional
+	]
+	relation entity HasStyleEntry :> object_diagram:Link [
+		from Cell
+		to CellStyleEntry
+		forward hasStyleEntry
+		reverse styleEntryOf
+		asymmetric
+		irreflexive
+		inverse functional
+	]
+	relation entity HasCellAttribute :> object_diagram:Link [
+		from Cell
+		to CellAttribute
+		forward hasCellAttribute
+		reverse attributeOf
+		asymmetric
+		irreflexive
+		inverse functional
+	]
+	
+	concept CellProperty :> dict:DictEntry, element []
+	concept CellStyleEntry :> dict:DictEntry, element []
+	concept CellAttribute :> dict:DictEntry, element []
+	
+	structure Point [
+		restricts scalar property hasX to exactly 1
+		restricts scalar property hasY to exactly 1
+	]
+	scalar property hasX :> object_diagram:hasField [
+		domain Point
+		range xsd:decimal
+		functional
+	]
+	scalar property hasY :> object_diagram:hasField [
+		domain Point
+		range xsd:decimal
+		functional
+	]
+	
+	structure VertexGeometry :> Point [
+		restricts scalar property hasWidth to exactly 1
+		restricts scalar property hasHeight to exactly 1
+	]
+	scalar property hasWidth :> object_diagram:hasField [
+		domain VertexGeometry
+		range xsd:decimal
+		functional
+	]
+	scalar property hasHeight :> object_diagram:hasField [
+		domain VertexGeometry
+		range xsd:decimal
+		functional
+	]
+	
+	// An edge may have an ordered sequence of 'waypoints'
+	// We'll add a 'list index' property to store the order.
+	structure PointListItem :> Point [
+		restricts scalar property hasListIndex to exactly 1
+	]
+	scalar property hasListIndex [
+		domain PointListItem
+		range xsd:nonNegativeInteger
+		functional
+	]
+	
+	structure EdgeGeometry []
+	structured property hasPoint [
+		domain EdgeGeometry
+		range PointListItem
+		// not functional: any number of points allowed
+	]
+	structured property hasSourcePoint [
+		domain EdgeGeometry
+		range Point
+		functional
+	]
+	structured property hasTargetPoint [
+		domain EdgeGeometry
+		range Point
+		functional
+	]
+	
+	concept Vertex :> Cell []
+	concept Edge :> Cell []
+	
+	structured property hasVertexGeometry [
+		domain Vertex
+		range VertexGeometry
+		functional
+	]
+	structured property hasEdgeGeometry [
+		domain Edge
+		range EdgeGeometry
+		functional
+	]
+	
+	relation entity EdgeHasSource [
+		from Edge
+		to Vertex
+		forward hasSource
+		reverse sourceOf
+		functional
+		asymmetric
+		irreflexive
+	]
+	relation entity EdgeHasTarget [
+		from Edge
+		to Vertex
+		forward hasTarget
+		reverse targetOf
+		functional
+		asymmetric
+		irreflexive
+	]
+	
+	// A model here is a page in Drawio
+	concept Model :> elementWithDrawioId, object_diagram:Model [
+		restricts relation hasRootCell to exactly 1
+		restricts all relation object_diagram:hasObject to element
+	]
+	
+	relation entity HasPageAttribute :> object_diagram:Link [
+		from Model
+		to PageAttribute
+		forward hasPageAttribute
+		reverse ofPage
+		asymmetric
+		irreflexive
+		inverse functional
+	]
+	relation entity HasRootCell :> object_diagram:Link [
+		from Model
+		to Cell
+		forward hasRootCell
+		reverse isRootOf
+		asymmetric
+		irreflexive
+		functional // every page has exactly one root cell
+		inverse functional // a cell can be the root of at most one page
+	]
+	
+	concept PageAttribute :> dict:DictEntry, element []
+		
+	scalar property isCompressed [
+		domain Model
+		range xsd:boolean
+		functional
+	]
+	
+	scalar property hasDrawioVersion [
+		domain Model
+		range xsd:string
+		functional
+	]
+}

+ 13 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/file.oml

@@ -0,0 +1,13 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/file#> as file {
+    extends <http://www.w3.org/2001/XMLSchema#> as xsd
+    extends <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces
+
+    aspect Data
+    concept File :> traces:Artifact [key isLocatedAt] 
+
+    scalar property isLocatedAt [
+        domain File
+        range xsd:string
+        functional
+    ]
+}

+ 57 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/ftg.oml

@@ -0,0 +1,57 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/ftg#> as ftg {
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+	// Definitions for Activities
+	@rdfs:comment "The types of activities performed during the system design process. This concept should be used in the FTG."
+	concept Transformation :> base:ImmutableThing, base:DefinitionThing, object_diagram:Object [
+		restricts scalar property hasCtrlInput to min 1
+		restricts scalar property hasCtrlOutput to min 1
+	]
+	
+	// Ctrl inputs/outputs:
+	scalar property hasCtrlInput [
+		domain Transformation
+		range xsd:string
+	]
+	scalar property hasCtrlOutput [
+		domain Transformation
+		range xsd:string
+	]
+
+	// Definitions for Artifacts
+	@rdfs:comment "The types of artifacts generated during the system design process. This concept should be used in the FTG."
+	concept Formalism :> base:ImmutableThing, base:DefinitionThing, object_diagram:Object []
+
+	// Data inputs/outputs are named:
+	aspect InputOrOutput [
+		restricts scalar property hasName to exactly 1
+	]
+	
+	scalar property hasName [
+		domain InputOrOutput
+		range xsd:string
+		functional
+	]
+
+	relation entity HasInput :> InputOrOutput [
+		from Transformation
+		to Formalism
+		forward hasInput
+		reverse isInputOf
+		asymmetric
+		irreflexive
+	]
+
+	relation entity HasOutput :> InputOrOutput [
+		from Transformation
+		to Formalism
+		forward hasOutput
+		reverse isOutputOf
+		asymmetric
+		irreflexive
+	]
+}

+ 48 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/object_diagram.oml

@@ -0,0 +1,48 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram {
+	
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+
+	aspect Object []
+		
+	// Compromise:
+	//  - use attributes only for scalar properties
+	//  - if we want to have a reference to an object as an attribute, use a link instead
+	
+	// Supertype of all scalar properties that we consider to be a 'field' of an object
+	// An object can have any number of fields, hence this property is not functional
+	scalar property hasField [
+		domain Object
+		range rdfs:Literal // e.g., string, float, boolean, ...
+	]
+
+	// A link is also an object, meaning:
+	//   - it can have attributes
+	//   - it can be the source/target of another link
+	relation entity Link :> Object [
+		from Object
+		to Object
+	]
+	
+	concept Model [
+		restricts scalar property hasName to exactly 1
+	]
+	
+	// Every model has a name, that we use to identify it.
+	// E.g., when we query for a list of all the process models, we can get their names.
+	scalar property hasName [
+		domain Model
+		range xsd:string
+		functional
+	]
+	
+	relation entity HasObject [
+		from Model
+		to Object
+		forward hasObject
+		reverse inModel
+		inverse functional // every Object can be part of at most one model
+		asymmetric
+		irreflexive
+	]
+}

+ 120 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/pm.oml

@@ -0,0 +1,120 @@
+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/formalisms/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, object_diagram:Object, Named [
+		// must have at least one of the following port types:
+		restricts some relation hasPort to CtrlInputPort
+		restricts some relation hasPort to CtrlOutputPort
+	]
+	
+	// An activity may (optionally) point to a ftg:Transformation
+	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 dataFrom 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, element [
+		restricts all relation object_diagram:hasObject to element
+	]
+}

+ 124 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/processtraces.oml

@@ -0,0 +1,124 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces {
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+	extends <http://www.w3.org/2002/07/owl#> as owl
+
+	extends <http://ua.be/sdo2l/vocabulary/base/acyclic#> as acyclic
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+
+	// TODO Add time to Event (starting time and ending time of PT events)
+//	@rdfs:comment "The class to represent traces of execution of a given workflow."
+//	concept Trace :> base:IdentifiedThing
+
+	// A process trace element
+	aspect element [
+		restricts relation relatesTo to exactly 1 // every PT element must relate to one PM element
+	]
+	
+	// Supertype for all links from PT to PM
+	relation entity RelatesToPM [
+		from element
+		to pm:element
+		forward relatesTo
+		functional
+	]
+
+	@rdfs:comment "The class to represent an event of a trace."
+	aspect Event :> element, object_diagram:Object
+	
+	scalar property hasTimestamp :> object_diagram:hasField [
+		domain Event
+		range xsd:dateTime
+	]
+	
+	@rdfs:comment "An event signaling the start of a new trace."
+	concept StartTraceEvent :> Event [
+		restricts all relation relatesTo to pm:Model
+	]
+	
+	@rdfs:comment "An event signaling the end of a trace."
+	concept EndTraceEvent :> Event [
+		restricts all relation relatesTo to pm:Model
+	]
+
+	@rdfs:comment "The class to represent a starting event of a trace."
+	concept StartActivityEvent :> Event [
+		restricts all relation relatesTo to pm:CtrlInputPort
+	]
+
+	@rdfs:comment "The class to represent an ending event of a trace."
+	concept EndActivityEvent :> Event [
+		restricts all relation relatesTo to pm:CtrlOutputPort
+	]
+	
+	relation entity Follows :> acyclic:Acyclic, object_diagram:Link [
+		from Event
+		to Event
+		forward isFollowedBy
+		reverse isPrecededBy
+		asymmetric
+		irreflexive
+		functional
+		inverse functional
+	]
+
+	relation entity Produces :> element, object_diagram:Link [
+		from EndActivityEvent
+		to Artifact
+		forward produces
+		reverse isProducedBy
+		asymmetric
+		irreflexive
+		inverse functional // every (version of an) artifact can only be produced by one (ended) activity
+		
+		restricts all relation relatesTo to pm:DataOutputPort
+	]
+	
+	relation entity Consumes :> element, object_diagram:Link [
+		from StartActivityEvent
+		to Artifact
+		forward consumes
+		reverse isConsumedBy
+		asymmetric
+		irreflexive
+		
+		restricts all relation relatesTo to pm:DataInputPort
+	]
+	
+	@rdfs:comment "The class of artifacts generated during the system design process. Here we are referring to the concrete artifacts that are created/used during the enactment of a workflow."
+	concept Artifact :> element, base:Versionable [
+		restricts all relation relatesTo to pm:Artifact
+	]
+	
+	scalar property hasLocation :> object_diagram:hasField [
+		domain Artifact
+		range xsd:string
+	]
+
+	scalar property addedAt :> object_diagram:hasField [
+		domain Artifact
+		range xsd:dateTime
+	]
+			
+	// An artifact may be a "model":
+	relation entity IsModel [
+		from Artifact
+		to object_diagram:Model
+		forward isModel
+		reverse isArtifact
+		asymmetric
+		irreflexive
+		functional
+	]
+
+// Joeri: For fine-grained traceability, we use trace models (e.g., my_xopp_to_drawio.oml and my_corr.oml), which are also just models/artifacts.
+//	@rdfs:comment "This relation is used for fine-grained traceability. It can link two concepts in the PT. This should be a many to many relation."
+//	relation entity Represents [
+//		from owl:Thing
+//		to owl:Thing
+//		forward represents
+//		reverse isRepresentedBy
+//	]
+}

+ 30 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/requirement.oml

@@ -0,0 +1,30 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/requirement#> as requirement {
+	extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/system#> as system
+
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces
+	
+	concept Requirement :> base:IdentifiedThing
+	
+	relation entity Describes [
+		from Requirement 
+		to system:System
+		forward describes
+		reverse isDescribedBy
+		asymmetric
+		irreflexive
+	]
+	
+	concept RequirementList :> base:IdentifiedThing, traces:Artifact
+	
+	relation entity Groups [
+		from RequirementList
+		to Requirement
+		forward groups
+		reverse isGroupedBy
+		asymmetric
+		irreflexive
+		inverse functional
+	] 
+		
+}

+ 51 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/richtext.oml

@@ -0,0 +1,51 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/richtext#> as richtext {
+    extends <http://www.w3.org/2001/XMLSchema#> as xsd
+
+    extends <http://ua.be/sdo2l/vocabulary/formalisms/text#> as text
+
+
+    concept RichTextData :> text:TextData
+    concept RichTextModifer
+    concept TextPosition
+
+    scalar property onLine [
+        domain TextPosition
+        range xsd:int
+    ]
+
+    scalar property atPosition [
+        domain TextPosition
+        range xsd:int
+    ]
+
+    enumerated scalar RichTextModifierOption [
+        "italic",
+        "bold"
+    ]
+
+    scalar property hasRichTextModifierOption [
+        domain RichTextModifer
+        range RichTextModifierOption
+        functional
+    ]
+
+    relation entity StartsAt [
+        from RichTextModifer
+        to TextPosition
+        forward modifierStartsAt
+    ]
+
+    relation entity StopsAt [
+        from RichTextModifer
+        to TextPosition
+        forward modifierStopsAt
+    ]
+
+    concept ItalicRichTextModifier :> RichTextModifer [
+        restricts scalar property hasRichTextModifierOption to "italic"
+    ]
+
+    concept BoldRichTextModifier :> RichTextModifer [
+        restricts scalar property hasRichTextModifierOption to "bold"
+    ]
+}

+ 31 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/script.oml

@@ -0,0 +1,31 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/script#> as script {
+    extends <http://www.w3.org/2001/XMLSchema#> as xsd
+    extends <http://ua.be/sdo2l/vocabulary/formalisms/code#> as code
+    extends <http://ua.be/sdo2l/vocabulary/formalisms/file#> as file
+
+    concept ScriptData :> code:CodeData
+    concept ScriptParameter :> file:Data
+
+    scalar property hasParameterName [
+        domain ScriptParameter
+        range xsd:string
+        functional
+    ]
+
+    scalar property hasParameterValue [
+        domain ScriptParameter
+        // NOTE: Probably need to change this to some bottom value concept
+        range xsd:string
+    ]
+
+    relation entity UsesScriptParameter [
+        from ScriptData
+        to ScriptParameter
+        forward usesScriptParameter
+    ]
+
+    concept CScript      :> ScriptData, code:CCode
+    concept CppScript    :> ScriptData, code:CppCode
+    concept PythonScript :> ScriptData, code:PythonCode
+    concept MATLABScript :> ScriptData, code:MATLABCode
+}

+ 17 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/shaclproperty.oml

@@ -0,0 +1,17 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/shaclproperty#> as shaclproperty {
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces
+
+	concept SHACL-Property :> base:IdentifiedThing, traces:Artifact
+	
+	@rdfs:comment "The has filename property"
+	scalar property hasFilePathname [
+		domain SHACL-Property
+		range xsd:string
+	]
+	
+	
+}

+ 8 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/system.oml

@@ -0,0 +1,8 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/system#> as system {
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+	
+	@rdfs:comment "A system is the element to be designed."
+	concept System :> base:IdentifiedThing 
+	
+}

+ 111 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/tabular.oml

@@ -0,0 +1,111 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/tabular#> as tabular {
+    extends <http://www.w3.org/2001/XMLSchema#> as xsd
+    extends <http://ua.be/sdo2l/vocabulary/formalisms/file#> as file
+    extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+    extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+    extends <http://bipm.org/jcgm/vim4#> as vim4
+
+
+    aspect Collection 
+    
+    concept TabularData :> file:Data, file:File
+    concept Cell        :> file:Data
+    concept Row         :> Collection
+    concept Column      :> Collection 
+    
+        
+    relation entity HasUnit [
+        from Collection
+        to vim4:MeasurementUnit
+        forward hasUnit
+        reverse isUnitOf
+        asymmetric
+        functional
+    ] 
+    
+    scalar property hasBasicType [
+    	domain Column
+    	range base:BasicType
+    	functional
+    ]
+    
+    // TODO This is not a valid rule and will be ignored by the reasoner
+    @rdfs:comment "Infers that when the type of the column is numeric it may have a unit"
+	rule NumericTypeInfersUnit [
+		hasBasicType(c, t) ^ base:BasicType(t) -> hasUnit(c, u)  
+	] 
+    
+
+    scalar property holdsContent [
+        domain Cell
+        range xsd:string
+        functional
+    ]
+
+    scalar property hasRowPosition [
+        domain Cell
+        // Maybe limit to positive integers here already, no need for shacl that way
+        range xsd:int
+    ]
+
+    scalar property hasColumnPosition [
+        domain Cell
+        // Maybe limit to positive integers here already, no need for shacl that way
+        range xsd:int
+    ]
+
+    scalar property hasRowId [
+        domain Row
+        // Maybe limit to positive integers here already, no need for shacl that way
+        range xsd:int
+    ]
+
+    scalar property hasColumnId [
+        domain Column
+        // Maybe limit to positive integers here already, no need for shacl that way
+        range xsd:int
+    ]
+
+    enumerated scalar HeadingModifier [
+        "yes",
+        "no"
+    ]
+
+    scalar property hasHeadingModifier [
+        domain Row
+        range HeadingModifier
+        functional
+    ]
+
+    concept HeaderRow :> Row [
+        restricts scalar property hasHeadingModifier to "yes"
+    ]
+
+    relation entity HasCell [
+        from Collection
+        to Cell
+        forward hasCell
+        reverse isInCollection
+    ]
+
+    relation entity HasCells [
+        from TabularData
+        to Cell
+        forward hasCells
+        reverse isCellOfTabularData
+    ]
+
+    relation entity HasRows [
+        from TabularData
+        to Row
+        forward hasRows
+        reverse isRowOfTabularData
+    ]
+
+    relation entity HasColumns [
+        from TabularData
+        to Column
+        forward hasColumns
+        reverse isColumnOfTabularData
+    ]
+}

+ 27 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/text.oml

@@ -0,0 +1,27 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/text#> as text {
+    extends <http://www.w3.org/2001/XMLSchema#> as xsd
+
+    extends <http://ua.be/sdo2l/vocabulary/formalisms/file#> as file
+
+
+    concept TextData :> file:Data, file:File
+    concept TextLine :> file:Data
+
+    scalar property isOnLine [
+        domain TextLine
+        range xsd:int
+        functional
+    ]
+
+    scalar property holdsTextData [
+        domain TextLine
+        range xsd:string
+    ]
+
+    relation entity HasTextLine [
+        from TextData
+        to TextLine
+        forward hasTextLine
+        reverse isInTextFile
+    ]
+}

+ 17 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/traceability_model.oml

@@ -0,0 +1,17 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/traceability_model#> as traceability_model {
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+		
+	// A traceability link is just a link :)
+	relation entity TraceabilityLink :> object_diagram:Link [
+		from object_diagram:Object
+		to object_diagram:Object
+		forward traceLinkTo
+		reverse traceLinkFrom
+		asymmetric
+		irreflexive
+	]
+	
+	concept TraceabilityModel :> object_diagram:Model [
+		restricts all relation object_diagram:hasObject to TraceabilityLink
+	]
+}

+ 16 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/violation.oml

@@ -0,0 +1,16 @@
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/violation#> as violation {
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
+	extends <http://ua.be/sdo2l/vocabulary/base/base#> as base
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/processtraces#> as traces
+
+	concept ViolationReport :> base:IdentifiedThing, traces:Artifact
+	
+	@rdfs:comment "The has filename property"
+	scalar property hasFilePathname [
+		domain ViolationReport
+		range xsd:string
+	]
+	
+	
+}

+ 137 - 0
backend/ontology/src/oml/ua.be/sdo2l/vocabulary/formalisms/xopp.oml

@@ -0,0 +1,137 @@
+// Vocabulary for the Xournal++ file format
+vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/xopp#> as xopp {
+
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_diagram
+	extends <http://ua.be/sdo2l/vocabulary/formalisms/dict#> as dict
+	extends <http://www.w3.org/2001/XMLSchema#> as xsd
+
+	aspect element :> object_diagram:Object []
+	
+	aspect LayerElement :> element [
+		restricts relation inLayer to exactly 1
+		restricts scalar property hasText to exactly 1
+	]
+	scalar property hasText :> object_diagram:hasField [
+		domain LayerElement
+		range xsd:string
+		functional
+	]
+
+	relation entity HasXMLAttribute :> object_diagram:Link [
+		from LayerElement
+		to XMLAttribute
+		forward hasAttribute
+		reverse ofLayerElement
+		inverse functional
+	]
+	
+	concept XMLAttribute :> element, dict:DictEntry [
+		restricts relation ofLayerElement to exactly 1
+	]
+	
+	concept Text :> LayerElement []
+	concept Stroke :> LayerElement []
+	
+	concept Layer :> element [
+		restricts relation inPage to exactly 1
+	]
+	
+	relation entity HasLayerElement :> object_diagram:Link [
+		from Layer
+		to LayerElement
+		forward hasElement
+		reverse inLayer
+		inverse functional
+		asymmetric
+		irreflexive
+	]
+	
+	concept Page :> element [
+		restricts relation inFile to exactly 1
+		restricts scalar property hasWidth to exactly 1
+		restricts scalar property hasHeight to exactly 1
+		restricts scalar property hasBackgroundType to exactly 1
+		restricts scalar property hasBackgroundColor to exactly 1
+		restricts scalar property hasBackgroundStyle to exactly 1
+	]
+
+	scalar property hasWidth :> object_diagram:hasField [
+		domain Page
+		range xsd:decimal
+		functional
+	]
+	scalar property hasHeight :> object_diagram:hasField [
+		domain Page
+		range xsd:decimal
+		functional
+	]
+	scalar property hasBackgroundType :> object_diagram:hasField [
+		domain Page
+		range xsd:string
+		functional
+	]
+	scalar property hasBackgroundColor :> object_diagram:hasField [
+		domain Page
+		range xsd:string
+		functional
+	]
+	scalar property hasBackgroundStyle :> object_diagram:hasField [
+		domain Page
+		range xsd:string
+		functional
+	]
+	relation entity HasLayer :> object_diagram:Link [
+		from Page
+		to Layer
+		forward hasLayer
+		reverse inPage
+		inverse functional
+		asymmetric
+		irreflexive
+	]
+	
+	concept File :> element [
+		restricts relation hasPage to min 1
+		
+		restricts scalar property hasCreator to exactly 1
+		restricts scalar property hasFileVersion to exactly 1
+		restricts scalar property hasTitle to exactly 1
+	]
+	
+	scalar property hasCreator :> object_diagram:hasField [
+		domain File
+		range xsd:string
+		functional
+	]
+	scalar property hasFileVersion :> object_diagram:hasField [
+		domain File
+		range xsd:integer
+		functional
+	]
+	scalar property hasTitle :> object_diagram:hasField [
+		domain File
+		range xsd:string
+		functional
+	]
+	scalar property hasPreview :> object_diagram:hasField [
+		domain File
+//		range xsd:base64Binary // PNG-encoded // Doesn't seem to be working, workaround below
+		range xsd:string // Workaround
+		functional
+	]	
+	
+	relation entity HasPage :> object_diagram:Link [
+		from File
+		to Page
+		forward hasPage
+		reverse inFile
+		asymmetric
+		irreflexive
+		inverse functional
+	]
+	
+	// A Xournal++ file:
+	concept Model :> object_diagram:Model [
+		restricts all relation object_diagram:hasObject to element
+	]
+}

+ 44 - 0
backend/ontology/src/shacl/pt_time_consistency.ttl

@@ -0,0 +1,44 @@
+@prefix sh:   <http://www.w3.org/ns/shacl#> .
+@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
+@prefix owl:  <http://www.w3.org/2002/07/owl#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix time: <http://www.w3.org/2006/time#> .
+
+@prefix base:          <http://ua.be/sdo2l/vocabulary/base#> .
+@prefix tabular:       <http://ua.be/sdo2l/vocabulary/base/tabular#> .
+@prefix process-trace: <http://ua.be/sdo2l/vocabulary/processtraces#> .
+@prefix ftgpm-shapes:  <http://ua.be/sdo2l/vocabulary/tabular-shapes#> .
+
+ftgpm-shapes:
+  a owl:Ontology ;
+  owl:imports sh: ;
+  sh:declare [ sh:prefix "time" ;    sh:namespace "http://www.w3.org/2006/time#"^^xsd:anyURI ; ] ;
+  sh:declare [ sh:prefix "owl" ;     sh:namespace "http://www.w3.org/2002/07/owl#"^^xsd:anyURI ; ] ;
+  sh:declare [ sh:prefix "rdf" ;     sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; ] ;
+  sh:declare [ sh:prefix "xsd" ;     sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ; ] ;
+  sh:declare [ sh:prefix "afn" ;     sh:namespace "http://jena.apache.org/ARQ/function#"^^xsd:anyURI ; ] ;
+  sh:declare [ sh:prefix "tabular" ; sh:namespace "http://ua.be/sdo2l/vocabulary/base/tabular#"^^xsd:anyURI ; ] .
+
+# TODO Fix this to get the actual times
+# 1. Need to get the 2 corresponding events (now we assume we have both start and end in the same individual)
+ftgpm-shapes:ot_time_consistency
+  a sh:NodeShape ;
+  sh:targetClass process-trace:Event ;
+  sh:sparql [
+    a sh:SPARQLConstraint ;
+    sh:message "Proces trace Event end date must be greater than or equal to the begin Date.";
+    sh:select
+      """
+	  SELECT $this (?beginTime AS ?intervalStart) (?endTime AS ?intervalEnd)
+      WHERE {
+        $this     process-trace:hasTime        ?time .
+        ?time     process-trace:ReferenceBegin ?beginIRI ;
+                  process-trace:ReferenceEnd   ?endIRI .
+        ?beginIRI time:inXSDDate               ?beginDate .
+        ?endIRI   time:inXSDDate               ?endDate .
+        FILTER  (!(?endDate >= ?beginDate))
+      }
+	  """ ;
+  ] ;
+  sh:closed false .

+ 8 - 0
backend/ontology/src/sparql/GetObjects.sparql

@@ -0,0 +1,8 @@
+# Just get all the "objects"
+
+PREFIX object_diagram: <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#>
+
+SELECT ?object
+WHERE {
+	?object a object_diagram:Object .
+} 

+ 12 - 0
backend/ontology/src/sparql/GetTypesWithoutSubType.sparql

@@ -0,0 +1,12 @@
+prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX owl:  <http://www.w3.org/2002/07/owl#>
+
+SELECT ?type
+WHERE {
+	?type rdf:type owl:Class
+	NOT EXISTS {
+		?subtype rdfs:subClassOf ?type
+		FILTER(?subtype != ?type)
+	}
+}

+ 48 - 0
backend/ontology/src/sparql/WhatIsCell.sparql

@@ -0,0 +1,48 @@
+# This query shows how we can ask any incoming/outgoing traceability links of a drawio cell, and what those links point to
+
+PREFIX object_diagram: <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#>
+PREFIX drawio: <http://ua.be/sdo2l/vocabulary/formalisms/drawio#>
+PREFIX cs_as: <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#>
+prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX oml: <http://opencaesar.io/oml#>
+PREFIX purl: <http://purl.org/dc/elements/1.1/>
+PREFIX trac: <http://ua.be/sdo2l/vocabulary/formalisms/traceability_model#>
+PREFIX owl:  <http://www.w3.org/2002/07/owl#>
+
+SELECT DISTINCT ?cell ?rel_type ?as_element ?as_type 
+WHERE {
+	?cell drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-2" .
+	
+	# Get all incoming and outgoing traceability links for "?cell":
+	{
+		?rel a trac:TraceabilityLink .
+		?rel oml:hasSource ?cell .
+		?rel oml:hasTarget ?as_element .
+	} UNION {
+		?rel a trac:TraceabilityLink .
+		?rel oml:hasTarget ?cell .
+		?rel oml:hasSource ?as_element .
+	}
+	
+	?rel a ?rel_type .
+	?rel_type rdfs:subClassOf trac:TraceabilityLink .
+	
+	# Only interested here in the most concrete type of the traceability link:
+	NOT EXISTS {
+		?more_concrete_type rdfs:subClassOf ?rel_type .
+		?rel a ?more_concrete_type .
+		FILTER(?more_concrete_type != ?rel_type) # needed because every type is its own subclass
+	}
+	
+	?as_element a ?as_type .
+	?as_type rdfs:subClassOf object_diagram:Object . # restrict types to objects
+	
+	# Only get concrete types:
+	NOT EXISTS {
+		?another_more_concrete_type rdfs:subClassOf ?as_type .
+		?as_element a ?another_more_concrete_type
+		FILTER(?another_more_concrete_type != ?as_type)
+		#?as_type purl:type oml:Aspect .
+	}
+}

+ 23 - 0
backend/ontology/src/sparql/WhatIsDiagram.sparql

@@ -0,0 +1,23 @@
+# This query shows how we can ask for any drawio cell the different types of AS elements that it represents
+
+PREFIX object_diagram: <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#>
+PREFIX drawio: <http://ua.be/sdo2l/vocabulary/formalisms/drawio#>
+PREFIX cs_as: <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#>
+PREFIX rdf: <http://www.w3.org/2000/01/rdf-schema#>
+PREFIX oml: <http://opencaesar.io/oml#>
+PREFIX purl: <http://purl.org/dc/elements/1.1/>
+
+SELECT DISTINCT ?cell ?as_element ?model ?model_type
+WHERE {
+	?cell drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-6" .
+	?cell cs_as:parsedAs ?as_element .
+	
+	?as_element object_diagram:inModel ?model .
+	?model a ?model_type .
+	?model_type rdf:subClassOf object_diagram:Model . 
+	
+	# only get concrete types:
+	NOT EXISTS {
+		?model_type purl:type oml:Aspect .
+	}
+}