SAFECOMP 2024 Release
Pre-releaseThis is a release of RITE for SAFECOMP 2024
Release Artifacts
RITE-win32.win32.x86_64-safecomp24_v3.zip
: RITE stable release for WindowsOEM_safecomp24_v2.zip
: The ingestion package with examples from the paperOntologies.zip
: All SADL ontologies described in the paper
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
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.
OEM Ontology Snippet |
OEM GSN Pattern Snippet |
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
Evidence patterns fetched by query |
Step 3: Patterns are generated by the Pattern Interpreter
Goal/Strategy/Evidence patterns |
Step 4: Patterns are used by the Pattern Integrator to create complex GSN Tree pattern
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
Result of the query shown above |
Step 7: The GSN Synthesizer uses the GSN Tree pattern and the data to instantiate a GSN Tree
An example output |