SHACL Shapes
https://meta.linked.archi/time-framework/shapes#
SHACL shapes for validating TIME framework model data. Ensures applications have required metadata, fit assessments are complete, and controlled vocabulary values are valid. Includes a SPARQL-based consistency guard that verifies timeDisposition matches the implied quadrant when both functionalFitRating and technicalFitRating are present. This is the SHACL layer of the TIME framework. Use together with: * time-onto.ttl (OWL) — defines classes, properties, and OWL reasoning rules * time-tax.ttl (SKOS) — organizes controlled vocabularies for navigation
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
prefLabel |
minCount | 1 |
Violation | |
businessOwner |
class | Person | Violation | |
businessOwner |
maxCount | 1 |
Violation | |
hasFitAssessment |
minCount | 1 |
Violation | |
itOwner |
class | Person | Violation | |
itOwner |
maxCount | 1 |
Violation | |
lifecycleState |
in | 78a54792be7fe005 |
Violation | |
lifecycleState |
maxCount | 1 |
Violation |
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
prefLabel |
minCount | 1 |
Violation | |
evidenceType |
in | 78a54792be7fe025 |
Violation | |
evidenceType |
maxCount | 1 |
Violation | |
evidenceType |
minCount | 1 |
Violation |
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
assessedApplication |
class | Application | Violation | |
assessedApplication |
maxCount | 1 |
Violation | |
assessedApplication |
minCount | 1 |
Violation | |
assessmentDate |
datatype | date | Violation | |
assessmentDate |
maxCount | 1 |
Violation | |
assessmentDate |
minCount | 1 |
Violation | |
assessmentStatus |
in | 78a54792be7fe01d |
Violation | |
assessmentStatus |
maxCount | 1 |
Violation | |
costFitRating |
in | 78a54792be7fe01a |
Violation | |
costFitRating |
maxCount | 1 |
Violation | |
costFitScore |
datatype | integer | Violation | |
costFitScore |
maxCount | 1 |
Violation | |
functionalFitRating |
in | 78a54792be7fe014 |
Violation | |
functionalFitRating |
maxCount | 1 |
Violation | |
functionalFitScore |
datatype | integer | Violation | |
functionalFitScore |
maxCount | 1 |
Violation | |
rationale |
minCount | 1 |
Violation | |
technicalFitRating |
in | 78a54792be7fe017 |
Violation | |
technicalFitRating |
maxCount | 1 |
Violation | |
technicalFitScore |
datatype | integer | Violation | |
technicalFitScore |
maxCount | 1 |
Violation | |
timeDisposition |
in | 78a54792be7fe00c |
Violation | |
timeDisposition |
maxCount | 1 |
Violation | |
timeDisposition |
minCount | 1 |
Violation |
SELECT $this ?funcRating ?techRating ?disposition
WHERE {
$this timefw:functionalFitRating ?funcRating ;
timefw:technicalFitRating ?techRating ;
timefw:timeDisposition ?disposition .
BIND(
IF(?funcRating = timefw:High && ?techRating = timefw:High, timefw:Invest,
IF(?funcRating = timefw:High && ?techRating = timefw:Low, timefw:Migrate,
IF(?funcRating = timefw:Low && ?techRating = timefw:High, timefw:Tolerate,
IF(?funcRating = timefw:Low && ?techRating = timefw:Low, timefw:Eliminate,
"UNKNOWN"))))
AS ?expected)
FILTER (?disposition != ?expected)
}
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
criterion |
class | FitCriterion | Violation | |
criterion |
maxCount | 1 |
Violation | |
criterion |
minCount | 1 |
Violation | |
criterionScoreValue |
datatype | integer | Violation | |
criterionScoreValue |
maxCount | 1 |
Violation | |
criterionScoreValue |
minCount | 1 |
Violation |
| Property | Constraint | Value | Severity | Message |
|---|---|---|---|---|
prefLabel |
minCount | 1 |
Violation | |
dimension |
in | 78a54792be7fe031 |
Violation | |
dimension |
maxCount | 1 |
Violation | |
dimension |
minCount | 1 |
Violation |