Skip to content

SAFECOMP 2024 Release

Pre-release
Pre-release
Compare
Choose a tag to compare
@pauls4GE pauls4GE released this 04 Jan 14:30
· 1 commit to safecomp24gsn since this release

This is a release of RITE for SAFECOMP 2024

Release Artifacts

Resources

  • Consult the RITE Wiki for instructions on how to set up RITE
  • Consult the GSN Generator Wiki for instructions on creating project-specific GSN patterns and using the tool

An end-to-end example of the workflow using the OEM example from the paper

image

We assume that the users have access to the RACK core ontology and the GSN core ontology. Both these are standard and remain same across projects and teams.

Step 1: The project ontology and the project GSN patterns are created using SADL. The evidence is generated using project-specific tools and stored as CSV files following the project ontology for ingestion.

image
OEM Ontology Snippet
image
OEM GSN Pattern Snippet
image
A CSV Evidence file

Step 2: Some predefined queries are executed to extract the pattern data from RACK

{
	"version": 3,
	"sparqlConn": {
		"name": "gsn_pattern_queries",
		"domain": "",
		"enableOwlImports": true,
		"model": [
			{
				"type": "fuseki",
				"url": "http://localhost:3030/RACK",
				"graph": "http://rack001/model"
			}
		],
		"data": [
			{
				"type": "fuseki",
				"url": "http://localhost:3030/RACK",
				"graph": "http://rack001/data"
			}
		]
	},
	"sNodeGroup": {
		"version": 19,
		"limit": 0,
		"offset": 0,
		"sNodeList": [
			{
				"propList": [
					{
						"valueTypes": [
							"string"
						],
						"rangeURI": "http://www.w3.org/2001/XMLSchema#string",
						"UriRelationship": "http://sadl.org/GSN-Pattern-core.sadl#classId",
						"Constraints": "",
						"SparqlID": "?classId",
						"isReturned": true,
						"optMinus": 0,
						"isRuntimeConstrained": false,
						"instanceValues": [],
						"isMarkedForDeletion": false
					},
					{
						"valueTypes": [
							"string"
						],
						"rangeURI": "http://www.w3.org/2001/XMLSchema#string",
						"UriRelationship": "http://sadl.org/GSN-Pattern-core.sadl#passValue",
						"Constraints": "",
						"SparqlID": "?passValue",
						"isReturned": true,
						"optMinus": 0,
						"isRuntimeConstrained": false,
						"instanceValues": [],
						"isMarkedForDeletion": false
					},
					{
						"valueTypes": [
							"string"
						],
						"rangeURI": "http://www.w3.org/2001/XMLSchema#string",
						"UriRelationship": "http://sadl.org/GSN-Pattern-core.sadl#statusProperty",
						"Constraints": "",
						"SparqlID": "?statusProperty",
						"isReturned": true,
						"optMinus": 0,
						"isRuntimeConstrained": false,
						"instanceValues": [],
						"isMarkedForDeletion": false
					}
				],
				"nodeList": [],
				"fullURIName": "http://sadl.org/GSN-Pattern-core.sadl#GsnEvidence",
				"SparqlID": "?GsnEvidence",
				"isReturned": false,
				"isRuntimeConstrained": false,
				"valueConstraint": "",
				"instanceValue": null,
				"deletionMode": "NO_DELETE"
			}
		],
		"orderBy": [],
		"groupBy": [],
		"unionHash": {},
		"columnOrder": []
	},
	"importSpec": {
		"version": "1",
		"baseURI": "",
		"columns": [],
		"dataValidator": [],
		"texts": [],
		"transforms": [],
		"nodes": [
			{
				"sparqlID": "?GsnEvidence",
				"type": "http://sadl.org/GSN-Pattern-core.sadl#GsnEvidence",
				"mapping": [],
				"props": []
			}
		]
	},
	"plotSpecs": []
}

A predefined query to get evidence patterns

image
Evidence patterns fetched by query

Step 3: Patterns are generated by the Pattern Interpreter

image
Goal/Strategy/Evidence patterns

Step 4: Patterns are used by the Pattern Integrator to create complex GSN Tree pattern

image
GSN tree pattern

Step 5: The GSN Tree Pattern is used by the Query Synthesizer to synthesize queries to fetch data for each node class in the tree

{
	"version": 3,
	"sparqlConn": {
		"name": "synthesis",
		"domain": "",
		"enableOwlImports": true,
		"model": [
			{
				"type": "fuseki",
				"url": "http://localhost:3030/RACK",
				"graph": "http://rack001/model"
			}
		],
		"data": [
			{
				"type": "fuseki",
				"url": "http://localhost:3030/RACK",
				"graph": "http://rack001/data"
			}
		]
	},
	"sNodeGroup": {
		"version": 19,
		"limit": 0,
		"offset": 0,
		"sNodeList": [
			{
				"propList": [
					{
						"valueTypes": [
							"string"
						],
						"rangeURI": "http://www.w3.org/2001/XMLSchema#string",
													"UriRelationship": "http://arcos.rack/PROV-S#description",	
						"Constraints": "",	
						"SparqlID": "?description_SRS_Req",	
						"isReturned": true,	
						"optMinus": 1,	
						"isRuntimeConstrained": false,	
						"instanceValues": [],	
						"isMarkedForDeletion": false	
					},	
					{	
						"valueTypes": [	
							"string"	
						],	
						"rangeURI": "http://www.w3.org/2001/XMLSchema#string",
						"UriRelationship": "http://arcos.rack/PROV-S#identifier",
						"Constraints": "",
						"SparqlID": "?identifier_SRS_Req",
						"isReturned": true,
						"optMinus": 0,
						"isRuntimeConstrained": false,
						"instanceValues": [],
						"isMarkedForDeletion": false
					}
				],
				"nodeList": [],
				"fullURIName": "http://arcos.rack/OEM#SRS_Req",
				"SparqlID": "?SRS_Req",
				"isReturned": false,
				"isRuntimeConstrained": false,
				"valueConstraint": "",
				"instanceValue": null,
				"deletionMode": "NO_DELETE"
			},
			{
				"propList": [
					{
						"valueTypes": [
							"string"
						],
						"rangeURI": "http://www.w3.org/2001/XMLSchema#string",
						"UriRelationship": "http://arcos.rack/PROV-S#description",	
						"Constraints": "",	
						"SparqlID": "?description_SubDD_Req",	
						"isReturned": true,	
						"optMinus": 1,	
						"isRuntimeConstrained": false,	
						"instanceValues": [],	
						"isMarkedForDeletion": false	
					},	
					{	
						"valueTypes": [	
							"string"	
						],	
						"rangeURI": "http://www.w3.org/2001/XMLSchema#string",
						"UriRelationship": "http://arcos.rack/PROV-S#identifier",
						"Constraints": "",
						"SparqlID": "?identifier_SubDD_Req",
						"isReturned": true,
						"optMinus": 0,
						"isRuntimeConstrained": false,
						"instanceValues": [],
						"isMarkedForDeletion": false
					}
				],
				"nodeList": [
					{
						"SnodeSparqlIDs": [
							"?SRS_Req"
						],
						"OptionalMinus": [
							1
						],
						"Qualifiers": [
							""
						],
						"DeletionMarkers": [
							false
						],
						"range": [
								"http://arcos.rack/OEM#SRS_Req"

						],
						"ConnectBy": "triggers",
						"Connected": true,
						"UriConnectBy": "http://arcos.rack/REQUIREMENTS#satisfies"
					}
				],
				"fullURIName": "http://arcos.rack/OEM#SubDD_Req",
				"SparqlID": "?SubDD_Req",
				"isReturned": false,
				"isRuntimeConstrained": false,
				"valueConstraint": "",
				"instanceValue": null,
				"deletionMode": "NO_DELETE"
			}
		],
		"orderBy": [],
		"groupBy": [],
		"unionHash": {},
		"columnOrder": []
	},
	"importSpec": {
		"version": "1",
		"baseURI": "",
		"columns": [],
		"dataValidator": [],
		"texts": [],
		"transforms": [],
		"nodes": [
			{
				"sparqlID": "?SubDD_Req",
				"type": "http://arcos.rack/OEM#SubDD_Req",
				"mapping": [],
				"props": []
			},
			{
				"sparqlID": "?SRS_Req",
				"type": "http://arcos.rack/OEM#SRS_Req",
				"mapping": [],
				"props": []
			}
		]
	},
	"plotSpecs": []
}

A synthesized query

Step 6: The Queries are executed to fetch the data to instantiate the GSN Tree

image
Result of the query shown above

Step 7: The GSN Synthesizer uses the GSN Tree pattern and the data to instantiate a GSN Tree

image
An example output