diff --git a/examples/crossover_heist/crossover_heist.json b/examples/crossover_heist/crossover_heist.json
index 29e8b2f2..b669c3d3 100644
--- a/examples/crossover_heist/crossover_heist.json
+++ b/examples/crossover_heist/crossover_heist.json
@@ -51,7 +51,7 @@
},
{
"@id": "kb:Relationship-ec126575-d6a4-4590-9690-f2571a48b8ac",
- "@type": "uco-observable:ObservableRelationship",
+ "@type": "uco-core:Relationship",
"uco-core:source": {
"@id": "kb:Identity-cbfbd171-e56c-4f59-a01b-4404a1e5eb28"
},
diff --git a/examples/crossover_heist/index.html b/examples/crossover_heist/index.html
index 64b4f7c8..1fac65a4 100644
--- a/examples/crossover_heist/index.html
+++ b/examples/crossover_heist/index.html
@@ -86,7 +86,7 @@
CASE Representation of Investigation
},
{
"@id": "kb:Relationship-ec126575-d6a4-4590-9690-f2571a48b8ac",
- "@type": "uco-observable:ObservableRelationship",
+ "@type": "uco-core:Relationship",
"uco-core:source": {
"@id": "kb:Identity-cbfbd171-e56c-4f59-a01b-4404a1e5eb28"
},
diff --git a/examples/crossover_wmd/crossover_wmd.json b/examples/crossover_wmd/crossover_wmd.json
index 7b424bfb..1de86ac7 100644
--- a/examples/crossover_wmd/crossover_wmd.json
+++ b/examples/crossover_wmd/crossover_wmd.json
@@ -487,7 +487,7 @@
},
{
"@id": "kb:investigatorrole-e9a01d66-fff4-4fa8-88d4-8e445f3369aa",
- "@type": "uco-observable:ObservableRelationship",
+ "@type": "uco-core:Relationship",
"uco-core:source": {
"@id": "kb:identity-0108480e-1e7a-4341-8b1d-558877c4cc39"
},
diff --git a/examples/crossover_wmd/crossover_wmd_validation-unstable-2.0.0.ttl b/examples/crossover_wmd/crossover_wmd_validation-unstable-2.0.0.ttl
index 20af041e..72c972ae 100644
--- a/examples/crossover_wmd/crossover_wmd_validation-unstable-2.0.0.ttl
+++ b/examples/crossover_wmd/crossover_wmd_validation-unstable-2.0.0.ttl
@@ -1,3 +1,4 @@
+@prefix core: .
@prefix owl: .
@prefix rdf: .
@prefix rdfs: .
@@ -8,7 +9,7 @@
[]
a sh:ValidationReport ;
- sh:conforms "true"^^xsd:boolean ;
+ sh:conforms "false"^^xsd:boolean ;
sh:result
[
a sh:ValidationResult ;
@@ -39,6 +40,32 @@
sh:severity sh:Info ;
] ;
sh:value "Phone" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value does not have class uco-observable:Observable" ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:path core:source ;
+ ] ;
+ sh:value ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value does not have class uco-observable:Observable" ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:path core:source ;
+ ] ;
+ sh:value ;
]
;
.
diff --git a/examples/crossover_wmd/crossover_wmd_validation-unstable.ttl b/examples/crossover_wmd/crossover_wmd_validation-unstable.ttl
index 20af041e..9d8a7f6c 100644
--- a/examples/crossover_wmd/crossover_wmd_validation-unstable.ttl
+++ b/examples/crossover_wmd/crossover_wmd_validation-unstable.ttl
@@ -1,3 +1,4 @@
+@prefix core: .
@prefix owl: .
@prefix rdf: .
@prefix rdfs: .
@@ -8,7 +9,7 @@
[]
a sh:ValidationReport ;
- sh:conforms "true"^^xsd:boolean ;
+ sh:conforms "false"^^xsd:boolean ;
sh:result
[
a sh:ValidationResult ;
@@ -39,6 +40,36 @@
sh:severity sh:Info ;
] ;
sh:value "Phone" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Warning ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:message "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:path core:source ;
+ sh:severity sh:Warning ;
+ ] ;
+ sh:value ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Warning ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:message "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:path core:source ;
+ sh:severity sh:Warning ;
+ ] ;
+ sh:value ;
]
;
.
diff --git a/examples/crossover_wmd/index.html b/examples/crossover_wmd/index.html
index 9a5653a3..026382ca 100644
--- a/examples/crossover_wmd/index.html
+++ b/examples/crossover_wmd/index.html
@@ -368,7 +368,7 @@ CASE Representation of data extraction
},
{
"@id": "kb:investigatorrole-e9a01d66-fff4-4fa8-88d4-8e445f3369aa",
- "@type": "uco-observable:ObservableRelationship",
+ "@type": "uco-core:Relationship",
"uco-core:source": {
"@id": "kb:identity-0108480e-1e7a-4341-8b1d-558877c4cc39"
},
diff --git a/examples/hardware_duplicator/hardware_duplicator.json b/examples/hardware_duplicator/hardware_duplicator.json
index 1efe8cb4..e2e35f01 100644
--- a/examples/hardware_duplicator/hardware_duplicator.json
+++ b/examples/hardware_duplicator/hardware_duplicator.json
@@ -49,7 +49,7 @@
},
{
"@id": "kb:relationship-d5b4a1e1-0e25-4257-81f7-19febc86ded1",
- "@type": "uco-observable:ObservableRelationship",
+ "@type": "uco-core:Relationship",
"uco-core:source": {
"@id": "kb:identity-c5bb09c3-3612-4bf2-b165-6f12d0e3c6af"
},
diff --git a/examples/hardware_duplicator/index.html b/examples/hardware_duplicator/index.html
index b3146265..cba60fa1 100644
--- a/examples/hardware_duplicator/index.html
+++ b/examples/hardware_duplicator/index.html
@@ -68,7 +68,7 @@ CASE INVESTIGATION CONTEXT
},
{
"@id": "kb:relationship-d5b4a1e1-0e25-4257-81f7-19febc86ded1",
- "@type": "uco-observable:ObservableRelationship",
+ "@type": "uco-core:Relationship",
"uco-core:source": {
"@id": "kb:identity-c5bb09c3-3612-4bf2-b165-6f12d0e3c6af"
},
diff --git a/examples/owl_trafficking/owl_trafficking_validation-unstable-2.0.0.ttl b/examples/owl_trafficking/owl_trafficking_validation-unstable-2.0.0.ttl
index 13c0538e..1113ce43 100644
--- a/examples/owl_trafficking/owl_trafficking_validation-unstable-2.0.0.ttl
+++ b/examples/owl_trafficking/owl_trafficking_validation-unstable-2.0.0.ttl
@@ -1,3 +1,4 @@
+@prefix core: .
@prefix owl: .
@prefix rdf: .
@prefix rdfs: .
@@ -8,21 +9,62 @@
[]
a sh:ValidationReport ;
- sh:conforms "true"^^xsd:boolean ;
- sh:result [
- a sh:ValidationResult ;
- sh:focusNode ;
- sh:resultMessage "Value is outside the default vocabulary AccountTypeVocab." ;
- sh:resultPath uco-observable:accountType ;
- sh:resultSeverity sh:Info ;
- sh:sourceConstraintComponent sh:DatatypeConstraintComponent ;
- sh:sourceShape [
- sh:datatype vocabulary:AccountTypeVocab ;
- sh:message "Value is outside the default vocabulary AccountTypeVocab." ;
- sh:path uco-observable:accountType ;
- sh:severity sh:Info ;
- ] ;
- sh:value "phone" ;
- ] ;
+ sh:conforms "false"^^xsd:boolean ;
+ sh:result
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value is outside the default vocabulary AccountTypeVocab." ;
+ sh:resultPath uco-observable:accountType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:DatatypeConstraintComponent ;
+ sh:sourceShape [
+ sh:datatype vocabulary:AccountTypeVocab ;
+ sh:message "Value is outside the default vocabulary AccountTypeVocab." ;
+ sh:path uco-observable:accountType ;
+ sh:severity sh:Info ;
+ ] ;
+ sh:value "phone" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value does not have class uco-observable:Observable" ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:path core:source ;
+ ] ;
+ sh:value ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value does not have class uco-observable:Observable" ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:path core:source ;
+ ] ;
+ sh:value ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value does not have class uco-observable:Observable" ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:path core:source ;
+ ] ;
+ sh:value ;
+ ]
+ ;
.
diff --git a/examples/owl_trafficking/owl_trafficking_validation-unstable.ttl b/examples/owl_trafficking/owl_trafficking_validation-unstable.ttl
index 13c0538e..28976f9a 100644
--- a/examples/owl_trafficking/owl_trafficking_validation-unstable.ttl
+++ b/examples/owl_trafficking/owl_trafficking_validation-unstable.ttl
@@ -1,3 +1,4 @@
+@prefix core: .
@prefix owl: .
@prefix rdf: .
@prefix rdfs: .
@@ -8,21 +9,68 @@
[]
a sh:ValidationReport ;
- sh:conforms "true"^^xsd:boolean ;
- sh:result [
- a sh:ValidationResult ;
- sh:focusNode ;
- sh:resultMessage "Value is outside the default vocabulary AccountTypeVocab." ;
- sh:resultPath uco-observable:accountType ;
- sh:resultSeverity sh:Info ;
- sh:sourceConstraintComponent sh:DatatypeConstraintComponent ;
- sh:sourceShape [
- sh:datatype vocabulary:AccountTypeVocab ;
- sh:message "Value is outside the default vocabulary AccountTypeVocab." ;
- sh:path uco-observable:accountType ;
- sh:severity sh:Info ;
- ] ;
- sh:value "phone" ;
- ] ;
+ sh:conforms "false"^^xsd:boolean ;
+ sh:result
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value is outside the default vocabulary AccountTypeVocab." ;
+ sh:resultPath uco-observable:accountType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:DatatypeConstraintComponent ;
+ sh:sourceShape [
+ sh:datatype vocabulary:AccountTypeVocab ;
+ sh:message "Value is outside the default vocabulary AccountTypeVocab." ;
+ sh:path uco-observable:accountType ;
+ sh:severity sh:Info ;
+ ] ;
+ sh:value "phone" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Warning ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:message "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:path core:source ;
+ sh:severity sh:Warning ;
+ ] ;
+ sh:value ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Warning ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:message "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:path core:source ;
+ sh:severity sh:Warning ;
+ ] ;
+ sh:value ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:resultPath core:source ;
+ sh:resultSeverity sh:Warning ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class uco-observable:Observable ;
+ sh:message "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:path core:source ;
+ sh:severity sh:Warning ;
+ ] ;
+ sh:value ;
+ ]
+ ;
.
diff --git a/ontology/CASE-unstable-2.0.0.ttl b/ontology/CASE-unstable-2.0.0.ttl
index 6236989a..8b004127 100644
--- a/ontology/CASE-unstable-2.0.0.ttl
+++ b/ontology/CASE-unstable-2.0.0.ttl
@@ -8617,6 +8617,16 @@ observable:ObservableRelationship
;
rdfs:label "ObservableRelationship"@en ;
rdfs:comment "An observable relationship is a grouping of characteristics unique to an assertion of an association between two observable objects."@en ;
+ sh:property
+ [
+ sh:class observable:Observable ;
+ sh:path core:source ;
+ ] ,
+ [
+ sh:class observable:Observable ;
+ sh:path core:target ;
+ ]
+ ;
sh:targetClass observable:ObservableRelationship ;
.
diff --git a/ontology/CASE-unstable.ttl b/ontology/CASE-unstable.ttl
index 1947c731..dc251928 100644
--- a/ontology/CASE-unstable.ttl
+++ b/ontology/CASE-unstable.ttl
@@ -8545,6 +8545,20 @@ observable:ObservableRelationship
;
rdfs:label "ObservableRelationship"@en ;
rdfs:comment "An observable relationship is a grouping of characteristics unique to an assertion of an association between two observable objects."@en ;
+ sh:property
+ [
+ sh:class observable:Observable ;
+ sh:message "The source on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:path core:source ;
+ sh:severity sh:Warning ;
+ ] ,
+ [
+ sh:class observable:Observable ;
+ sh:message "The target on an ObservableRelationship is expected to be typed as an Observable, and the noted value node is not. This will be an error in UCO 2.0.0."@en ;
+ sh:path core:target ;
+ sh:severity sh:Warning ;
+ ]
+ ;
sh:targetClass observable:ObservableRelationship ;
.