Jelajahi Sumber

Object diagram vocabulary: make Object a concept (rather than an aspect) + add example of traceability query on drawio-cell

Joeri Exelmans 2 tahun lalu
induk
melakukan
df8aa10ff8

+ 2 - 2
examples/oml/SystemDesignOntology2Layers/src/oml/ua.be/sdo2l/vocabulary/formalisms/cs_as.oml

@@ -4,8 +4,8 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/cs_as#> as cs_as {
 	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
+		from object_diagram:element
+		to object_diagram:element
 		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

+ 1 - 1
examples/oml/SystemDesignOntology2Layers/src/oml/ua.be/sdo2l/vocabulary/formalisms/drawio.oml

@@ -6,7 +6,7 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/drawio#> as drawio {
 	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 element :> object_diagram:element []
 	
 	// Cells and Pages have a GUID generated by drawio.
 	aspect elementWithDrawioId :> element [

+ 8 - 6
examples/oml/SystemDesignOntology2Layers/src/oml/ua.be/sdo2l/vocabulary/formalisms/object_diagram.oml

@@ -2,7 +2,9 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_
 	
 	extends <http://www.w3.org/2000/01/rdf-schema#> as rdfs
 
-	aspect Object []
+	aspect element []
+	
+	concept Object :> element []
 	
 	// Compromise:
 	//  - use attributes only for scalar properties
@@ -11,23 +13,23 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/object_diagram#> as object_
 	// 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
+		domain element
 		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
+	relation entity Link :> element [
+		from element
+		to element
 	]
 		
 	aspect Model []
 	
 	relation entity HasObject [
 		from Model
-		to Object
+		to element
 		forward hasObject
 		reverse inModel
 		inverse functional // every Object can be part of at most one model

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

@@ -35,7 +35,7 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/pm#> as pm {
 		functional
 	]
 
-	aspect element :> object_diagram:Object []
+	aspect element :> object_diagram:element []
 	
 	concept Activity :> element, Named [
 		// must have at least one of the following port types:

+ 2 - 2
examples/oml/SystemDesignOntology2Layers/src/oml/ua.be/sdo2l/vocabulary/formalisms/traceability_model.oml

@@ -3,8 +3,8 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/traceability_model#> as tra
 		
 	// A traceability link is just a link :)
 	relation entity TraceabilityLink :> object_diagram:Link [
-		from object_diagram:Object
-		to object_diagram:Object
+		from object_diagram:element
+		to object_diagram:element
 		asymmetric
 		irreflexive
 	]

+ 1 - 1
examples/oml/SystemDesignOntology2Layers/src/oml/ua.be/sdo2l/vocabulary/formalisms/xopp.oml

@@ -5,7 +5,7 @@ vocabulary <http://ua.be/sdo2l/vocabulary/formalisms/xopp#> as xopp {
 	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 element :> object_diagram:element []
 	
 	aspect LayerElement :> element [
 		restricts relation inLayer to exactly 1

+ 22 - 0
examples/oml/SystemDesignOntology2Layers/src/sparql/WhatIsCell.sparql

@@ -0,0 +1,22 @@
+# 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 ?as_type
+WHERE {
+	?cell drawio:hasDrawioId "CvR4PfVCJDiI6bvIUUvl-6" .
+	?cell cs_as:parsedAs ?as_element .
+	
+	?as_element a ?as_type .
+	?as_type rdf:subClassOf object_diagram:element . # restrict types to objects
+	
+	# only get concrete types:
+	NOT EXISTS {
+		?as_type purl:type oml:Aspect .
+	}
+}