From 3f305f112beb21d43974619b516d71811af30447 Mon Sep 17 00:00:00 2001
From: Nicola Stoira <nicola.stoira@accenture.com>
Date: Mon, 22 Jan 2024 10:33:28 +0100
Subject: [PATCH] Regenerate shacl file

---
 shacl_2024-1.ttl | 4702 +++++++++++++++++++++++-----------------------
 1 file changed, 2351 insertions(+), 2351 deletions(-)

diff --git a/shacl_2024-1.ttl b/shacl_2024-1.ttl
index dcd58cb..a60c0ca 100644
--- a/shacl_2024-1.ttl
+++ b/shacl_2024-1.ttl
@@ -96,14 +96,14 @@ constraints:sphnAccessDevice a sh:NodeShape ;
     sh:property [ sh:class sphn:Software ;
             sh:minCount 0 ;
             sh:path sphn:hasSoftware ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasProductCode ],
         [ sh:class snomed:105789008 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasTypeCode ] ;
+            sh:path sphn:hasTypeCode ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasProductCode ] ;
     sh:targetClass sphn:AccessDevice .
 
 constraints:sphnAccessDevicePresence a sh:NodeShape ;
@@ -113,10 +113,6 @@ constraints:sphnAccessDevicePresence a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:AccessDevice ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -125,22 +121,26 @@ constraints:sphnAccessDevicePresence a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasEndDateTime ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRestingPoint ],
+            sh:path sphn:hasInsertionPoint ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasInsertionPoint ],
+            sh:path sphn:hasRestingPoint ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ] ;
@@ -234,22 +234,29 @@ constraints:sphnAccessDevice_Warning_Naming a sh:NodeShape ;
 constraints:sphnAdministrativeCase a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:CareHandling ;
+    sh:property [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCareHandling ],
+            sh:path sphn:hasIdentifier ],
         [ sh:class sphn:Location ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasOriginLocation ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:string ;
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasIdentifier ],
+            sh:path sphn:hasDischargeDateTime ],
         [ sh:class sphn:Location ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -258,17 +265,10 @@ constraints:sphnAdministrativeCase a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasAdmissionDateTime ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:CareHandling ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDischargeDateTime ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasCareHandling ] ;
     sh:targetClass sphn:AdministrativeCase .
 
 constraints:sphnAdministrativeCase_Warning_Naming a sh:NodeShape ;
@@ -287,31 +287,31 @@ constraints:sphnAdministrativeCase_Warning_Naming a sh:NodeShape ;
 constraints:sphnAdministrativeSex a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
+    sh:property [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRecordDateTime ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:maxCount 1 ;
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:248153007 ] [ sh:class snomed:32570681000036106 ] [ sh:class snomed:248152002 ] ) ;
-            sh:path sphn:hasCode ],
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
+        [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:or ( [ sh:class snomed:248152002 ] [ sh:class snomed:32570681000036106 ] [ sh:class snomed:248153007 ] ) ;
+            sh:path sphn:hasCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/248153007>, <http://snomed.info/id/32570681000036106>, <http://snomed.info/id/248152002> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/248152002>, <http://snomed.info/id/32570681000036106>, <http://snomed.info/id/248153007> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -320,14 +320,6 @@ constraints:sphnAdministrativeSex a sh:NodeShape ;
 constraints:sphnAdministrativeSex_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-AdministrativeSex-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -335,51 +327,59 @@ constraints:sphnAdministrativeSex_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-AdministrativeSex-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:AdministrativeSex .
 
 constraints:sphnAdverseEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
+    sh:property [ sh:class sphn:AdverseEvent_consequences ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasSeverityCode ],
+            sh:path sphn:hasConsequences ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasIntervention ],
-        [ sh:class sphn:AdverseEvent_outcome ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasOutcome ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:AdverseEvent_consequences ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasConsequences ],
+            sh:path sphn:hasOnsetDateTime ],
         [ sh:class sphn:Code ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasCode ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:AdverseEvent_outcome ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasOnsetDateTime ] ;
+            sh:path sphn:hasOutcome ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasSeverityCode ] ;
     sh:targetClass sphn:AdverseEvent .
 
 constraints:sphnAdverseEvent_Warning_Codes a sh:NodeShape ;
@@ -441,39 +441,39 @@ constraints:sphnAdverseEvent_Warning_Naming a sh:NodeShape ;
 constraints:sphnAdverseEvent_consequences a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:Death sphn-individual:LifeThreatening sphn-individual:PermanentDamageOrDisability sphn-individual:HospitalisationOrProlongation sphn-individual:CongenitalAbnormality sphn-individual:TemporarilySeriousImpactMedicallyImportant sphn-individual:NoneOfTheConsequencesMentioned ) ;
+    sh:property [ sh:in ( sphn-individual:CongenitalAbnormality sphn-individual:NoneOfTheConsequencesMentioned sphn-individual:Death sphn-individual:PermanentDamageOrDisability sphn-individual:TemporarilySeriousImpactMedicallyImportant sphn-individual:LifeThreatening sphn-individual:HospitalisationOrProlongation ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:AdverseEvent_consequences .
 
 constraints:sphnAdverseEvent_outcome a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:Fatal sphn-individual:NotRecovered sphn-individual:Recovering sphn-individual:RecoveringWithSequelae sphn-individual:Recovered ) ;
+    sh:property [ sh:in ( sphn-individual:RecoveringWithSequelae sphn-individual:Recovered sphn-individual:Recovering sphn-individual:NotRecovered sphn-individual:Fatal ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:AdverseEvent_outcome .
 
 constraints:sphnAge a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasQuantity rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
+    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class ucum:a ] [ sh:class ucum:d ] [ sh:class ucum:mo ] [ sh:class ucum:wk ] [ sh:class ucum:h ] [ sh:class ucum:min ] ) ;
-            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDeterminationDateTime ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasSourceSystem ],
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class ucum:min ] [ sh:class ucum:wk ] [ sh:class ucum:mo ] [ sh:class ucum:h ] [ sh:class ucum:d ] [ sh:class ucum:a ] ) ;
+            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasQuantity ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasQuantity ] ;
     sh:targetClass sphn:Age .
 
 constraints:sphnAge_Warning_Naming a sh:NodeShape ;
@@ -493,7 +493,7 @@ constraints:sphnAllergen a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:138875005 ] [ sh:class sphn-atc:ATC ] ) ;
+            sh:or ( [ sh:class snomed:138875005 ] [ sh:class sphn-atc:ATC ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ] ;
     sh:targetClass sphn:Allergen .
 
@@ -513,65 +513,65 @@ constraints:sphnAllergen_Warning_Naming a sh:NodeShape ;
 constraints:sphnAllergy a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
+    sh:property [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:782197009 ] [ sh:class snomed:609328004 ] ) ;
-            sh:path sphn:hasReactionTypeCode ],
+            sh:path sphn:hasLastReactionDateTime ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:723509005 ] [ sh:class snomed:723505004 ] [ sh:class snomed:723507007 ] ) ;
+            sh:path sphn:hasSeverityCode ],
         [ sh:class sphn:Allergen ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAllergen ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
+        [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasFirstRecordDateTime ],
+            sh:or ( [ sh:class snomed:782197009 ] [ sh:class snomed:609328004 ] ) ;
+            sh:path sphn:hasReactionTypeCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:723509005 ] [ sh:class snomed:723507007 ] [ sh:class snomed:723505004 ] ) ;
-            sh:path sphn:hasSeverityCode ],
+            sh:or ( [ sh:class snomed:415684004 ] [ sh:class snomed:723510000 ] [ sh:class snomed:410605003 ] [ sh:class snomed:723511001 ] ) ;
+            sh:path sphn:hasVerificationStatusCode ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:415684004 ] [ sh:class snomed:723510000 ] [ sh:class snomed:410605003 ] [ sh:class snomed:723511001 ] ) ;
-            sh:path sphn:hasVerificationStatusCode ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasLastReactionDateTime ] ;
+            sh:path sphn:hasFirstRecordDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/415684004>, <http://snomed.info/id/723510000>, <http://snomed.info/id/410605003>, <http://snomed.info/id/723511001> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/782197009>, <http://snomed.info/id/609328004> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/782197009>, <http://snomed.info/id/609328004> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/723509005>, <http://snomed.info/id/723505004>, <http://snomed.info/id/723507007> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/723509005>, <http://snomed.info/id/723507007>, <http://snomed.info/id/723505004> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/415684004>, <http://snomed.info/id/723510000>, <http://snomed.info/id/410605003>, <http://snomed.info/id/723511001> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -580,54 +580,63 @@ constraints:sphnAllergy a sh:NodeShape ;
 constraints:sphnAllergyEpisode a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:AdministrativeCase ;
+    sh:property [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasBodySite ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDateTime ],
-        [ sh:class sphn:Allergen ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasAllergen ],
-        [ sh:class sphn:Exposure ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasExposure ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:24484000 ] [ sh:class snomed:6736007 ] [ sh:class snomed:255604002 ] ) ;
+            sh:or ( [ sh:class snomed:6736007 ] [ sh:class snomed:255604002 ] [ sh:class snomed:24484000 ] ) ;
             sh:path sphn:hasSeverityCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:or ( [ sh:class snomed:415684004 ] [ sh:class snomed:410592001 ] [ sh:class snomed:410605003 ] ) ;
             sh:path sphn:hasCertaintyCode ],
+        [ sh:class sphn:Allergen ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasAllergen ],
         [ sh:class snomed:404684003 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasManifestationCode ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDuration ],
-        [ sh:class sphn:BodySite ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:Exposure ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasExposure ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?class as ?value)
+                                                WHERE {
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/6736007>, <http://snomed.info/id/255604002>, <http://snomed.info/id/24484000> )) .
+                                                    FILTER (?class NOT IN ( ?values ) ) .
+                                                    FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
+                                                }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCertaintyCode> as ?path) (?class as ?value)
                                                 WHERE {
@@ -643,16 +652,7 @@ constraints:sphnAllergyEpisode a sh:NodeShape ;
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasExposure>/rdf:type ?class.
                              FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#TobaccoExposure>))
-                         }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?class as ?value)
-                                                WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/24484000>, <http://snomed.info/id/6736007>, <http://snomed.info/id/255604002> )) .
-                                                    FILTER (?class NOT IN ( ?values ) ) .
-                                                    FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
-                                                }""" ] ;
+                         }""" ] ;
     sh:targetClass sphn:AllergyEpisode .
 
 constraints:sphnAllergyEpisode_Warning_Naming a sh:NodeShape ;
@@ -660,17 +660,17 @@ constraints:sphnAllergyEpisode_Warning_Naming a sh:NodeShape ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCertaintyCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasManifestationCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCertaintyCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasManifestationCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasManifestationCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasManifestationCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
@@ -685,9 +685,9 @@ constraints:sphnAllergyEpisode_Warning_Naming a sh:NodeShape ;
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCertaintyCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCertaintyCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:AllergyEpisode .
@@ -695,6 +695,14 @@ constraints:sphnAllergyEpisode_Warning_Naming a sh:NodeShape ;
 constraints:sphnAllergy_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Allergy-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -706,25 +714,17 @@ constraints:sphnAllergy_Warning_Naming a sh:NodeShape ;
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasVerificationStatusCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSeverityCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasReactionTypeCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:Allergy .
@@ -732,17 +732,10 @@ constraints:sphnAllergy_Warning_Naming a sh:NodeShape ;
 constraints:sphnAntimicrobialSusceptibilityLabTest a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:AntimicrobialSusceptibilityResult ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
-        [ sh:class sphn:LabAnalyzer ;
+    sh:property [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasTestKit ],
-        [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Substance ] [ sh:class sphn:Drug ] ) ;
-            sh:path sphn:hasChemicalAgent ],
         [ sh:class snomed:14788002 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -750,42 +743,49 @@ constraints:sphnAntimicrobialSusceptibilityLabTest a sh:NodeShape ;
         [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasInstrument ] ;
+            sh:path sphn:hasInstrument ],
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Drug ] [ sh:class sphn:Substance ] ) ;
+            sh:path sphn:hasChemicalAgent ],
+        [ sh:class sphn:AntimicrobialSusceptibilityResult ;
+            sh:minCount 1 ;
+            sh:path sphn:hasResult ] ;
     sh:targetClass sphn:AntimicrobialSusceptibilityLabTest .
 
 constraints:sphnAntimicrobialSusceptibilityLabTestEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
+    sh:property [ sh:class sphn:AntimicrobialSusceptibilityLabTest ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasLabTest ],
         [ sh:class sphn:Isolate ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSample ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasReportDateTime ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDateTime ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:AntimicrobialSusceptibilityLabTest ;
-            sh:minCount 1 ;
-            sh:path sphn:hasLabTest ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasReportDateTime ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:targetClass sphn:AntimicrobialSusceptibilityLabTestEvent .
 
 constraints:sphnAntimicrobialSusceptibilityLabTestEvent_Warning_Naming a sh:NodeShape ;
@@ -837,20 +837,20 @@ constraints:sphnAntimicrobialSusceptibilityResult a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasQuantity ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:30714006 ] [ sh:class snomed:131196009 ] [ sh:class snomed:1255965005 ] ) ;
-            sh:path sphn:hasCode ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStandardGuideline ] ;
+            sh:path sphn:hasStandardGuideline ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:1255965005 ] [ sh:class snomed:30714006 ] [ sh:class snomed:131196009 ] ) ;
+            sh:path sphn:hasCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/30714006>, <http://snomed.info/id/131196009>, <http://snomed.info/id/1255965005> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/1255965005>, <http://snomed.info/id/30714006>, <http://snomed.info/id/131196009> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -859,6 +859,14 @@ constraints:sphnAntimicrobialSusceptibilityResult a sh:NodeShape ;
 constraints:sphnAntimicrobialSusceptibilityResult_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-AntimicrobialSusceptibilityResult-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -866,14 +874,6 @@ constraints:sphnAntimicrobialSusceptibilityResult_Warning_Naming a sh:NodeShape
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-AntimicrobialSusceptibilityResult-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:AntimicrobialSusceptibilityResult .
 
@@ -884,13 +884,28 @@ constraints:sphnAssay a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasStartDateTime ],
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:DataFile ] [ sh:class sphn:TimeSeriesDataFile ] ) ;
+            sh:path sphn:hasDataFile ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:minCount 0 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:TumorSpecimen ] [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasSample ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class obi:0000070 ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:SampleProcessing ] [ sh:class sphn:LibraryPreparation ] ) ;
+            sh:path sphn:hasPredecessor ],
         [ sh:class sphn:StandardOperatingProcedure ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -899,25 +914,10 @@ constraints:sphnAssay a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasIdentifier ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] [ sh:class sphn:TumorSpecimen ] ) ;
-            sh:path sphn:hasSample ],
-        [ sh:maxCount 1 ;
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class obi:0000070 ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:TimeSeriesDataFile ] [ sh:class sphn:DataFile ] ) ;
-            sh:path sphn:hasDataFile ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:SampleProcessing ] [ sh:class sphn:LibraryPreparation ] ) ;
-            sh:path sphn:hasPredecessor ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -1009,14 +1009,10 @@ constraints:sphnAssay_Warning_Naming a sh:NodeShape ;
 constraints:sphnAssessment a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:string ;
+    sh:property [ sh:class snomed:254291000 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasName ],
+            sh:path sphn:hasCode ],
         [ sh:class sphn:AssessmentResult ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -1024,6 +1020,10 @@ constraints:sphnAssessment a sh:NodeShape ;
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -1031,14 +1031,14 @@ constraints:sphnAssessment a sh:NodeShape ;
         [ sh:class sphn:AssessmentComponent ;
             sh:minCount 0 ;
             sh:path sphn:hasComponent ],
-        [ sh:class snomed:254291000 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasCode ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasName ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -1054,18 +1054,18 @@ constraints:sphnAssessment a sh:NodeShape ;
 constraints:sphnAssessmentComponent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasName ],
-        [ sh:class sphn:AssessmentResult ;
+    sh:property [ sh:class sphn:AssessmentResult ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasResult ],
         [ sh:class snomed:363787002 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCode ] ;
+            sh:path sphn:hasCode ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasName ] ;
     sh:targetClass sphn:AssessmentComponent .
 
 constraints:sphnAssessmentComponent_Warning_Naming a sh:NodeShape ;
@@ -1092,33 +1092,33 @@ constraints:sphnAssessmentComponent_Warning_Naming a sh:NodeShape ;
 constraints:sphnAssessmentEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
+    sh:property [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:Performer ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
-        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDateTime ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasAdministrativeCase ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:TumorStageAssessment ] [ sh:class sphn:Assessment ] [ sh:class sphn:TumorGradeAssessment ] ) ;
+            sh:or ( [ sh:class sphn:TumorGradeAssessment ] [ sh:class sphn:Assessment ] [ sh:class sphn:TumorStageAssessment ] ) ;
             sh:path sphn:hasAssessment ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:Performer ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasPerformer ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -1157,14 +1157,14 @@ constraints:sphnAssessmentEvent_Warning_Naming a sh:NodeShape ;
 constraints:sphnAssessmentResult a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Quantity ;
+    sh:property [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasQuantity ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -1261,37 +1261,37 @@ constraints:sphnAssessment_Warning_Naming a sh:NodeShape ;
 constraints:sphnBilledDiagnosis a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
+    sh:property [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:Code ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasCode ],
-        [ sh:class sphn:BilledDiagnosis_rank ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRank ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:Age ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasSubjectAge ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ] ;
+            sh:path sphn:hasRecordDateTime ],
+        [ sh:class sphn:BilledDiagnosis_rank ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRank ] ;
     sh:targetClass sphn:BilledDiagnosis .
 
 constraints:sphnBilledDiagnosis_Warning_Naming a sh:NodeShape ;
@@ -1310,52 +1310,52 @@ constraints:sphnBilledDiagnosis_Warning_Naming a sh:NodeShape ;
 constraints:sphnBilledDiagnosis_rank a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:Principal sphn-individual:Secondary sphn-individual:Complementary ) ;
+    sh:property [ sh:in ( sphn-individual:Complementary sphn-individual:Principal sphn-individual:Secondary ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:BilledDiagnosis_rank .
 
 constraints:sphnBilledProcedure a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class chop:CHOP ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasCode ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
-        [ sh:class chop:CHOP ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasCode ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
-        [ sh:class sphn:BodySite ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:class sphn:AdministrativeCase ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:BilledProcedure_rank ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasRank ],
         [ sh:class sphn:Intent ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasIntent ],
-        [ sh:class sphn:BilledProcedure_rank ;
+        [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRank ] ;
+            sh:path sphn:hasBodySite ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasEndDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -1397,33 +1397,33 @@ constraints:sphnBilledProcedure_rank a sh:NodeShape ;
 constraints:sphnBiobanksample a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:string ;
+    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasIdentifier ],
-        [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasBiobankName ],
+            sh:or ( [ sh:class sphn:TumorSpecimen ] [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasSample ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:maxCount 1 ;
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] [ sh:class sphn:TumorSpecimen ] ) ;
-            sh:path sphn:hasSample ],
+            sh:path sphn:hasIdentifier ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasBiobankName ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:targetClass sphn:Biobanksample .
 
 constraints:sphnBiobanksample_Warning_Naming a sh:NodeShape ;
@@ -1442,10 +1442,14 @@ constraints:sphnBiobanksample_Warning_Naming a sh:NodeShape ;
 constraints:sphnBirth a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:Country ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasCountry ],
         [ sh:class sphn:MedicalDevice ;
             sh:minCount 0 ;
             sh:path sphn:hasMedicalDevice ],
@@ -1453,29 +1457,25 @@ constraints:sphnBirth a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasGestationalAge ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:BirthDate ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDate ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:Country ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasCountry ],
         [ sh:class snomed:118215003 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDeliveryModeCode ],
-        [ sh:class sphn:BirthDate ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDate ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer, sphn:Implant are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -1489,37 +1489,37 @@ constraints:sphnBirth a sh:NodeShape ;
 constraints:sphnBirthDate a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
+    sh:property [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:gYear ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasYear ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasDataProvider ],
         [ sh:datatype xsd:gDay ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDay ],
-        [ sh:class sphn:Comparator ;
+        [ sh:datatype xsd:gYear ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasYear ],
+        [ sh:datatype xsd:time ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasComparator ],
+            sh:path sphn:hasTime ],
         [ sh:datatype xsd:gMonth ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasMonth ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:time ;
+        [ sh:class sphn:Comparator ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasTime ] ;
+            sh:path sphn:hasComparator ] ;
     sh:targetClass sphn:BirthDate .
 
 constraints:sphnBirthDate_Warning_Naming a sh:NodeShape ;
@@ -1558,90 +1558,90 @@ constraints:sphnBirth_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnBloodPressure a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasSystolicPressure sphn:hasMeanPressure rdf:type sphn:hasDiastolicPressure ) ;
-    sh:property [ sh:class ucum:mmsblHgsbr ;
+    sh:ignoredProperties ( sphn:hasDiastolicPressure rdf:type sphn:hasMeanPressure sphn:hasSystolicPressure ) ;
+    sh:property [ sh:class sphn:TimeSeriesDataFile ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path ( sphn:hasMeanPressure sphn:hasUnit sphn:hasCode ) ],
+            sh:path sphn:hasDataFile ],
         [ sh:class ucum:mmsblHgsbr ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path ( sphn:hasSystolicPressure sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:Quantity ;
+            sh:path ( sphn:hasDiastolicPressure sphn:hasUnit sphn:hasCode ) ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSystolicPressure ],
-        [ sh:class ucum:mmsblHgsbr ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path ( sphn:hasDiastolicPressure sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:Quantity ;
+            sh:path sphn:hasDiastolicPressure ],
+        [ sh:class ucum:mmsblHgsbr ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasMeanPressure ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path ( sphn:hasMeanPressure sphn:hasUnit sphn:hasCode ) ],
+        [ sh:class ucum:mmsblHgsbr ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
+            sh:path ( sphn:hasSystolicPressure sphn:hasUnit sphn:hasCode ) ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDiastolicPressure ],
-        [ sh:class sphn:TimeSeriesDataFile ;
+            sh:path sphn:hasSystolicPressure ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDataFile ] ;
+            sh:path sphn:hasMeanPressure ] ;
     sh:targetClass sphn:BloodPressure .
 
 constraints:sphnBloodPressureMeasurement a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasBodySite rdf:type ) ;
-    sh:property [ sh:class sphn:Performer ;
-            sh:maxCount 1 ;
+    sh:ignoredProperties ( rdf:type sphn:hasBodySite ) ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
+            sh:or ( [ sh:class snomed:46973005 ] [ sh:class snomed:716777001 ] ) ;
+            sh:path sphn:hasMethodCode ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:SourceSystem ;
+        [ sh:class sphn:BloodPressure ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:BodySite ;
+            sh:path sphn:hasResult ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
+            sh:path sphn:hasEndDateTime ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasStartDateTime ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Implant ] ) ;
+            sh:or ( [ sh:class sphn:Implant ] [ sh:class sphn:MedicalDevice ] ) ;
             sh:path sphn:hasMedicalDevice ],
-        [ sh:maxCount 1 ;
+        [ sh:class sphn:Performer ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:46973005 ] [ sh:class snomed:716777001 ] ) ;
-            sh:path sphn:hasMethodCode ],
+            sh:path sphn:hasPerformer ],
+        [ sh:class sphn:BodySite ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasBodySite ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:8205005 ] [ sh:class snomed:113257007 ] [ sh:class snomed:344001 ] [ sh:class snomed:40983000 ] [ sh:class snomed:68367000 ] [ sh:class snomed:7569003 ] ) ;
+            sh:or ( [ sh:class snomed:344001 ] [ sh:class snomed:113257007 ] [ sh:class snomed:40983000 ] [ sh:class snomed:8205005 ] [ sh:class snomed:68367000 ] [ sh:class snomed:7569003 ] ) ;
             sh:path ( sphn:hasBodySite sphn:hasCode ) ],
-        [ sh:class sphn:BloodPressure ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -1663,6 +1663,14 @@ constraints:sphnBloodPressureMeasurement a sh:NodeShape ;
 constraints:sphnBloodPressureMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-BloodPressureMeasurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -1678,14 +1686,6 @@ constraints:sphnBloodPressureMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:BloodPressureMeasurement .
 
@@ -1705,91 +1705,83 @@ constraints:sphnBloodPressure_Warning_Naming a sh:NodeShape ;
 constraints:sphnBodyHeight a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Quantity ;
+    sh:property [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasQuantity ],
         [ sh:class sphn:DataDetermination ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDataDetermination ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDateTime ] ;
+            sh:path sphn:hasDataDetermination ] ;
     sh:targetClass sphn:BodyHeight .
 
 constraints:sphnBodyHeightMeasurement a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:class sphn:MedicalDevice ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
-        [ sh:class sphn:AdministrativeCase ;
+            sh:path sphn:hasMedicalDevice ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:BodyHeight ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasResult ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasPerformer ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class snomed:128927009 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasMethodCode ],
-        [ sh:class sphn:MedicalDevice ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasMedicalDevice ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ] ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
-                    WHERE {
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
-                        FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer, sphn:Implant are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
                              FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>, <https://biomedit.ch/rdf/sphn-schema/sphn#Implant>))
-                         }""" ] ;
+                         }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
+                    WHERE {
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
+                        FILTER (?hasStartDateTime > ?hasEndDateTime)
+                    }""" ] ;
     sh:targetClass sphn:BodyHeightMeasurement .
 
 constraints:sphnBodyHeightMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-BodyHeightMeasurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -1797,6 +1789,14 @@ constraints:sphnBodyHeightMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-BodyHeightMeasurement-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:BodyHeightMeasurement .
 
@@ -1816,21 +1816,25 @@ constraints:sphnBodyHeight_Warning_Naming a sh:NodeShape ;
 constraints:sphnBodyMassIndex a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasQuantity rdf:type ) ;
-    sh:property [ sh:class sphn:AdministrativeCase ;
+    sh:property [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasQuantity ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:Quantity ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasQuantity ],
+            sh:minCount 0 ;
+            sh:path sphn:hasDeterminationDateTime ],
         [ sh:class ucum:kgperm2 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -1838,11 +1842,7 @@ constraints:sphnBodyMassIndex a sh:NodeShape ;
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDeterminationDateTime ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:targetClass sphn:BodyMassIndex .
 
 constraints:sphnBodyMassIndex_Warning_Naming a sh:NodeShape ;
@@ -1861,13 +1861,10 @@ constraints:sphnBodyMassIndex_Warning_Naming a sh:NodeShape ;
 constraints:sphnBodyPosition a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class snomed:9851009 ;
+    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasCode ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -1875,19 +1872,22 @@ constraints:sphnBodyPosition a sh:NodeShape ;
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class snomed:9851009 ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasCode ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -1922,27 +1922,19 @@ constraints:sphnBodyPosition_Warning_Naming a sh:NodeShape ;
 constraints:sphnBodySite a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Laterality ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasLaterality ],
-        [ sh:class snomed:123037004 ;
+    sh:property [ sh:class snomed:123037004 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasCode ] ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:Laterality ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasLaterality ] ;
     sh:targetClass sphn:BodySite .
 
 constraints:sphnBodySite_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-BodySite-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -1950,43 +1942,51 @@ constraints:sphnBodySite_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-BodySite-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:BodySite .
 
 constraints:sphnBodySurfaceArea a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasQuantity rdf:type ) ;
-    sh:property [ sh:class sphn:AdministrativeCase ;
+    sh:property [ sh:class ucum:m2 ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:BodySurfaceArea_calculationMethod ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCalculationMethod ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasDeterminationDateTime ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class ucum:m2 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:BodySurfaceArea_calculationMethod ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
+            sh:minCount 0 ;
+            sh:path sphn:hasCalculationMethod ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasQuantity ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDeterminationDateTime ] ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:targetClass sphn:BodySurfaceArea .
 
 constraints:sphnBodySurfaceArea_Warning_Naming a sh:NodeShape ;
@@ -2005,93 +2005,101 @@ constraints:sphnBodySurfaceArea_Warning_Naming a sh:NodeShape ;
 constraints:sphnBodySurfaceArea_calculationMethod a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:Other sphn-individual:DuBois sphn-individual:Mosteller ) ;
+    sh:property [ sh:in ( sphn-individual:DuBois sphn-individual:Other sphn-individual:Mosteller ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:BodySurfaceArea_calculationMethod .
 
 constraints:sphnBodyTemperature a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
+            sh:path sphn:hasQuantity ],
         [ sh:class sphn:TimeSeriesDataFile ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDataFile ],
-        [ sh:class sphn:Quantity ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ] ;
+            sh:path sphn:hasDateTime ] ;
     sh:targetClass sphn:BodyTemperature .
 
 constraints:sphnBodyTemperatureMeasurement a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:or ( [ sh:class sphn:Implant ] [ sh:class sphn:MedicalDevice ] ) ;
+            sh:path sphn:hasMedicalDevice ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class snomed:128927009 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasMethodCode ],
-        [ sh:class sphn:Performer ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Implant ] ) ;
-            sh:path sphn:hasMedicalDevice ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasBodySite ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasPerformer ],
+        [ sh:class sphn:BodyTemperature ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:path sphn:hasResult ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:BodyTemperature ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ] ;
+            sh:path sphn:hasEndDateTime ],
+        [ sh:class snomed:128927009 ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasMethodCode ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
-                    WHERE {
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
-                        FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
                              FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>))
-                         }""" ] ;
+                         }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
+                    WHERE {
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
+                        FILTER (?hasStartDateTime > ?hasEndDateTime)
+                    }""" ] ;
     sh:targetClass sphn:BodyTemperatureMeasurement .
 
 constraints:sphnBodyTemperatureMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-BodyTemperatureMeasurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -2099,14 +2107,6 @@ constraints:sphnBodyTemperatureMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-BodyTemperatureMeasurement-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:BodyTemperatureMeasurement .
 
@@ -2126,62 +2126,62 @@ constraints:sphnBodyTemperature_Warning_Naming a sh:NodeShape ;
 constraints:sphnBodyWeight a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataDetermination ;
+    sh:property [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDataDetermination ],
+            sh:minCount 1 ;
+            sh:path sphn:hasQuantity ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDateTime ],
-        [ sh:class sphn:Quantity ;
+        [ sh:class sphn:DataDetermination ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasQuantity ] ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDataDetermination ] ;
     sh:targetClass sphn:BodyWeight .
 
 constraints:sphnBodyWeightMeasurement a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:MedicalDevice ;
+    sh:property [ sh:class sphn:MedicalDevice ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasMedicalDevice ],
         [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
+            sh:path sphn:hasPerformer ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:BodyWeight ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasResult ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:class sphn:Performer ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
+            sh:path sphn:hasDataProvider ],
         [ sh:class snomed:128927009 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasMethodCode ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer, sphn:Implant are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -2203,6 +2203,14 @@ constraints:sphnBodyWeightMeasurement a sh:NodeShape ;
 constraints:sphnBodyWeightMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-BodyWeightMeasurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -2210,14 +2218,6 @@ constraints:sphnBodyWeightMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-BodyWeightMeasurement-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:BodyWeightMeasurement .
 
@@ -2237,14 +2237,29 @@ constraints:sphnBodyWeight_Warning_Naming a sh:NodeShape ;
 constraints:sphnCardiacIndex a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasQuantity rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDeterminationDateTime ],
+        [ sh:class snomed:63075001 ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasMethodCode ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasQuantity ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -2252,35 +2267,12 @@ constraints:sphnCardiacIndex a sh:NodeShape ;
         [ sh:class ucum:Lperminperm2 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class snomed:63075001 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasMethodCode ],
-        [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasQuantity ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ] ;
+            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ] ;
     sh:targetClass sphn:CardiacIndex .
 
 constraints:sphnCardiacIndex_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-CardiacIndex-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -2288,20 +2280,28 @@ constraints:sphnCardiacIndex_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-CardiacIndex-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:CardiacIndex .
 
 constraints:sphnCardiacOutput a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:TimeSeriesDataFile ;
+    sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDataFile ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class sphn:TimeSeriesDataFile ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
+            sh:path sphn:hasDataFile ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -2311,28 +2311,32 @@ constraints:sphnCardiacOutput a sh:NodeShape ;
 constraints:sphnCardiacOutputMeasurement a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class snomed:128927009 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasMethodCode ],
-        [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:CardiacOutput ;
             sh:minCount 1 ;
             sh:path sphn:hasResult ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:Performer ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasPerformer ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasEndDateTime ],
-        [ sh:class sphn:Performer ;
+        [ sh:class snomed:128927009 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasMethodCode ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Implant ] [ sh:class sphn:MedicalDevice ] ) ;
+            sh:path sphn:hasMedicalDevice ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -2341,30 +2345,26 @@ constraints:sphnCardiacOutputMeasurement a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Implant ] ) ;
-            sh:path sphn:hasMedicalDevice ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
-                    WHERE {
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
-                        FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
                              FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>))
-                         }""" ] ;
+                         }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
+                    WHERE {
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
+                        FILTER (?hasStartDateTime > ?hasEndDateTime)
+                    }""" ] ;
     sh:targetClass sphn:CardiacOutputMeasurement .
 
 constraints:sphnCardiacOutputMeasurement_Warning_Naming a sh:NodeShape ;
@@ -2404,19 +2404,19 @@ constraints:sphnCardiacOutput_Warning_Naming a sh:NodeShape ;
 constraints:sphnCareHandling a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:maxCount 1 ;
+            sh:or ( [ sh:class snomed:304903009 ] [ sh:class snomed:371883000 ] [ sh:class snomed:394656005 ] ) ;
+            sh:path sphn:hasTypeCode ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:371883000 ] [ sh:class snomed:394656005 ] [ sh:class snomed:304903009 ] ) ;
-            sh:path sphn:hasTypeCode ] ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/371883000>, <http://snomed.info/id/394656005>, <http://snomed.info/id/304903009> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/304903009>, <http://snomed.info/id/371883000>, <http://snomed.info/id/394656005> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -2425,6 +2425,14 @@ constraints:sphnCareHandling a sh:NodeShape ;
 constraints:sphnCareHandling_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-CareHandling-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -2432,14 +2440,6 @@ constraints:sphnCareHandling_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-CareHandling-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:CareHandling .
 
@@ -2453,11 +2453,11 @@ constraints:sphnChromosomalLocation a sh:NodeShape ;
         [ sh:class sphn:Code ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasEndCytobandCode ],
+            sh:path sphn:hasStartCytobandCode ],
         [ sh:class sphn:Code ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartCytobandCode ] ;
+            sh:path sphn:hasEndCytobandCode ] ;
     sh:targetClass sphn:ChromosomalLocation .
 
 constraints:sphnChromosomalLocation_Warning_Naming a sh:NodeShape ;
@@ -2518,54 +2518,54 @@ constraints:sphnCircumference a sh:NodeShape ;
 
 constraints:sphnCircumferenceMeasurement a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasBodySite rdf:type ) ;
+    sh:ignoredProperties ( rdf:type sphn:hasBodySite ) ;
     sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
-        [ sh:class sphn:BodySite ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:MedicalDevice ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasMedicalDevice ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:Circumference ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class snomed:128927009 ;
+            sh:path sphn:hasResult ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasMethodCode ],
-        [ sh:class sphn:Circumference ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:MedicalDevice ;
             sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasMedicalDevice ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:33673004 ] [ sh:class snomed:29836001 ] [ sh:class snomed:69536005 ] [ sh:class snomed:45048000 ] ) ;
+            sh:path ( sphn:hasBodySite sphn:hasCode ) ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasResult ],
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasPerformer ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:maxCount 1 ;
+            sh:path sphn:hasBodySite ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasEndDateTime ],
+        [ sh:class snomed:128927009 ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:33673004 ] [ sh:class snomed:29836001 ] [ sh:class snomed:45048000 ] [ sh:class snomed:69536005 ] ) ;
-            sh:path ( sphn:hasBodySite sphn:hasCode ) ] ;
+            sh:path sphn:hasMethodCode ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -2576,19 +2576,19 @@ constraints:sphnCircumferenceMeasurement a sh:NodeShape ;
                     }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/33673004>, <http://snomed.info/id/29836001>, <http://snomed.info/id/45048000>, <http://snomed.info/id/69536005> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <https://biomedit.ch/rdf/sphn-schema/sphn#BodySite> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <https://biomedit.ch/rdf/sphn-schema/sphn#BodySite> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/33673004>, <http://snomed.info/id/29836001>, <http://snomed.info/id/69536005>, <http://snomed.info/id/45048000> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
@@ -2616,17 +2616,17 @@ constraints:sphnCircumferenceMeasurement_Warning_Naming a sh:NodeShape ;
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:CircumferenceMeasurement .
@@ -2651,23 +2651,23 @@ constraints:sphnCivilStatus a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasEventDateTime ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasSourceSystem ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:266945001 ] [ sh:class snomed:14012001 ] [ sh:class snomed:20295000 ] [ sh:class snomed:87915002 ] [ sh:class snomed:33553000 ] [ sh:class snomed:125681006 ] ) ;
+            sh:or ( [ sh:class snomed:14012001 ] [ sh:class snomed:125681006 ] [ sh:class snomed:33553000 ] [ sh:class snomed:20295000 ] [ sh:class snomed:266945001 ] [ sh:class snomed:87915002 ] ) ;
             sh:path sphn:hasCode ],
-        [ sh:class sphn:SourceSystem ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/266945001>, <http://snomed.info/id/14012001>, <http://snomed.info/id/20295000>, <http://snomed.info/id/87915002>, <http://snomed.info/id/33553000>, <http://snomed.info/id/125681006> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/14012001>, <http://snomed.info/id/125681006>, <http://snomed.info/id/33553000>, <http://snomed.info/id/20295000>, <http://snomed.info/id/266945001>, <http://snomed.info/id/87915002> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -2700,11 +2700,11 @@ constraints:sphnCode a sh:NodeShape ;
     sh:property [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasCodingSystemAndVersion ],
+            sh:path sphn:hasIdentifier ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasIdentifier ],
+            sh:path sphn:hasCodingSystemAndVersion ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -2727,7 +2727,7 @@ constraints:sphnCode_Warning_Naming a sh:NodeShape ;
 constraints:sphnComparator a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:LessThan sphn-individual:LessThanOrEqual sphn-individual:GreaterThanOrEqual sphn-individual:GreaterThan ) ;
+    sh:property [ sh:in ( sphn-individual:LessThanOrEqual sphn-individual:GreaterThanOrEqual sphn-individual:LessThan sphn-individual:GreaterThan ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:Comparator .
 
@@ -2738,44 +2738,44 @@ constraints:sphnConsent a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasTemplateIdentifier ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:385645004 ] [ sh:class snomed:443390004 ] [ sh:class snomed:225795001 ] ) ;
+            sh:path sphn:hasStatusCode ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:60132005 ] [ sh:class snomed:410529002 ] [ sh:class snomed:69658003 ] ) ;
-            sh:path sphn:hasTypeCode ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDateTime ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:385645004 ] [ sh:class snomed:225795001 ] [ sh:class snomed:443390004 ] ) ;
-            sh:path sphn:hasStatusCode ],
-        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:or ( [ sh:class snomed:69658003 ] [ sh:class snomed:60132005 ] [ sh:class snomed:410529002 ] ) ;
+            sh:path sphn:hasTypeCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/385645004>, <http://snomed.info/id/225795001>, <http://snomed.info/id/443390004> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/69658003>, <http://snomed.info/id/60132005>, <http://snomed.info/id/410529002> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/60132005>, <http://snomed.info/id/410529002>, <http://snomed.info/id/69658003> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/385645004>, <http://snomed.info/id/443390004>, <http://snomed.info/id/225795001> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -2791,6 +2791,14 @@ constraints:sphnConsent_Warning_Naming a sh:NodeShape ;
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Consent-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -2799,31 +2807,20 @@ constraints:sphnConsent_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Consent-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStatusCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:Consent .
 
 constraints:sphnCopyNumberVariation a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type sphn:hasTotalCopyNumber ) ;
-    sh:property [ sh:class sphn:GenomicPosition ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasGenomicPosition ],
-        [ sh:class ucum:cblcopycbr ;
+    sh:property [ sh:class ucum:cblcopycbr ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path ( sphn:hasTotalCopyNumber sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:Gene ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAffectedGenomicFeature ],
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class so:0001742 ] [ sh:class so:0001743 ] ) ;
+            sh:path sphn:hasTypeCode ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -2832,10 +2829,13 @@ constraints:sphnCopyNumberVariation a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasChromosomalLocation ],
-        [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class so:0001742 ] [ sh:class so:0001743 ] ) ;
-            sh:path sphn:hasTypeCode ] ;
+        [ sh:class sphn:Gene ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAffectedGenomicFeature ],
+        [ sh:class sphn:GenomicPosition ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasGenomicPosition ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?class as ?value)
@@ -2946,14 +2946,14 @@ constraints:sphnDataDetermination a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:258104002 ] [ sh:class snomed:258090004 ] [ sh:class snomed:263760002 ] [ sh:class snomed:414135002 ] [ sh:class snomed:87982008 ] ) ;
+            sh:or ( [ sh:class snomed:258090004 ] [ sh:class snomed:263760002 ] [ sh:class snomed:258104002 ] [ sh:class snomed:87982008 ] [ sh:class snomed:414135002 ] ) ;
             sh:path sphn:hasMethodCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/258104002>, <http://snomed.info/id/258090004>, <http://snomed.info/id/263760002>, <http://snomed.info/id/414135002>, <http://snomed.info/id/87982008> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/258090004>, <http://snomed.info/id/263760002>, <http://snomed.info/id/258104002>, <http://snomed.info/id/87982008>, <http://snomed.info/id/414135002> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -2983,40 +2983,40 @@ constraints:sphnDataDetermination_Warning_Naming a sh:NodeShape ;
 constraints:sphnDataFile a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
+    sh:property [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasCreationDateTime ],
         [ sh:class sphn:Hash ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasHash ],
-        [ sh:class sphn:DataFile_encoding ;
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEncoding ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasUniformResourceIdentifier ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCreationDateTime ],
-        [ sh:class edam:format_1915 ;
+            sh:path sphn:hasName ],
+        [ sh:class sphn:DataFile_encoding ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasFormatCode ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
+            sh:path sphn:hasEncoding ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:string ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class edam:format_1915 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasName ],
+            sh:path sphn:hasFormatCode ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:minCount 0 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasUniformResourceIdentifier ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -3055,54 +3055,54 @@ constraints:sphnDataFile_Warning_Naming a sh:NodeShape ;
 constraints:sphnDataFile_encoding a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:UTF16 sphn-individual:ASCII sphn-individual:UTF8 sphn-individual:ISO88591 ) ;
+    sh:property [ sh:in ( sphn-individual:UTF8 sphn-individual:UTF16 sphn-individual:ASCII sphn-individual:ISO88591 ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:DataFile_encoding .
 
 constraints:sphnDataProcessing a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:class sphn:StandardOperatingProcedure ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:path sphn:hasStandardOperatingProcedure ],
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:DataFile ] [ sh:class sphn:TimeSeriesDataFile ] ) ;
+            sh:path sphn:hasInput ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:minCount 0 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:TimeSeriesDataFile ] [ sh:class sphn:DataFile ] ) ;
-            sh:path sphn:hasOutput ],
-        [ sh:class sphn:QualityControlMetric ;
+        [ sh:class sphn:Software ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQualityControlMetric ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:TimeSeriesDataFile ] [ sh:class sphn:DataFile ] ) ;
-            sh:path sphn:hasInput ],
+            sh:path sphn:hasSoftware ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class edam:operation_0004 ] [ sh:class sphn:Code ] [ sh:class obi:0200000 ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class obi:0200000 ] [ sh:class edam:operation_0004 ] [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ],
         [ sh:minCount 0 ;
             sh:or ( [ sh:class sphn:Assay ] [ sh:class sphn:DataProcessing ] ) ;
             sh:path sphn:hasPredecessor ],
-        [ sh:class sphn:Software ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasSoftware ],
-        [ sh:class sphn:StandardOperatingProcedure ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStandardOperatingProcedure ],
         [ sh:class sphn:AdministrativeCase ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:DataFile ] [ sh:class sphn:TimeSeriesDataFile ] ) ;
+            sh:path sphn:hasOutput ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:QualityControlMetric ;
+            sh:minCount 0 ;
+            sh:path sphn:hasQualityControlMetric ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -3223,22 +3223,22 @@ constraints:sphnDataProvider_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnDataProvider_category a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:ServiceProvider sphn-individual:ExternalLaboratory sphn-individual:Hospital sphn-individual:Company sphn-individual:University sphn-individual:ResearchOrganization sphn-individual:PrivatePractice sphn-individual:Pharmacy sphn-individual:HealthInsurance sphn-individual:FederalOffice ) ;
+    sh:ignoredProperties ( rdfs:label rdf:type ) ;
+    sh:property [ sh:in ( sphn-individual:ServiceProvider sphn-individual:PrivatePractice sphn-individual:HealthInsurance sphn-individual:ResearchOrganization sphn-individual:University sphn-individual:Pharmacy sphn-individual:Company sphn-individual:Hospital sphn-individual:FederalOffice sphn-individual:ExternalLaboratory ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:DataProvider_category .
 
 constraints:sphnDataRelease a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
+    sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasExtractionDateTime ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasExtractionDateTime ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:targetClass sphn:DataRelease .
 
 constraints:sphnDataRelease_Warning_Naming a sh:NodeShape ;
@@ -3257,69 +3257,69 @@ constraints:sphnDataRelease_Warning_Naming a sh:NodeShape ;
 constraints:sphnDeath a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:64572001 ] ) ;
+            sh:path sphn:hasConditionCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:419620001 ] ) ;
             sh:path sphn:hasCircumstanceCode ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:64572001 ] ) ;
-            sh:path sphn:hasConditionCode ],
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:DeathDate ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDate ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasReportDateTime ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:DeathDate ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDate ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:targetClass sphn:Death .
 
 constraints:sphnDeathDate a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:gMonth ;
+    sh:property [ sh:datatype xsd:time ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasMonth ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasTime ],
         [ sh:datatype xsd:gYear ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasYear ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:datatype xsd:gDay ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDay ],
+        [ sh:datatype xsd:gMonth ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasMonth ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:time ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasTime ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:targetClass sphn:DeathDate .
 
 constraints:sphnDeathDate_Warning_Naming a sh:NodeShape ;
@@ -3373,32 +3373,32 @@ constraints:sphnDepartment_Warning_Naming a sh:NodeShape ;
 constraints:sphnDiagnosis a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Age ;
+    sh:property [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSubjectAge ],
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasRecordDateTime ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+        [ sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ] ;
+        [ sh:class sphn:Age ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasSubjectAge ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -3490,23 +3490,23 @@ constraints:sphnDiagnosis_Warning_Naming a sh:NodeShape ;
 constraints:sphnDrug a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
+    sh:property [ sh:class sphn:Substance ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
+            sh:path sphn:hasInactiveIngredient ],
+        [ sh:class sphn:Substance ;
+            sh:minCount 0 ;
+            sh:path sphn:hasActiveIngredient ],
         [ sh:class sphn:DrugArticle ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasArticle ],
-        [ sh:class sphn:Substance ;
-            sh:minCount 0 ;
-            sh:path sphn:hasActiveIngredient ],
-        [ sh:class sphn:Substance ;
+        [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasInactiveIngredient ] ;
+            sh:path sphn:hasQuantity ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:targetClass sphn:Drug .
 
 constraints:sphnDrugAdministrationEvent a sh:NodeShape ;
@@ -3520,58 +3520,58 @@ constraints:sphnDrugAdministrationEvent a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDuration ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
+            sh:path sphn:hasDataProvider ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:441308009 ] [ sh:class snomed:182844005 ] [ sh:class snomed:182845006 ] [ sh:class snomed:395007004 ] [ sh:class snomed:182872003 ] [ sh:class snomed:74964007 ] [ sh:class snomed:31438003 ] [ sh:class snomed:395009001 ] [ sh:class snomed:419620001 ] [ sh:class snomed:182846007 ] [ sh:class snomed:399307001 ] ) ;
+            sh:or ( [ sh:class snomed:441308009 ] [ sh:class snomed:31438003 ] [ sh:class snomed:182844005 ] [ sh:class snomed:74964007 ] [ sh:class snomed:395009001 ] [ sh:class snomed:399307001 ] [ sh:class snomed:182872003 ] [ sh:class snomed:419620001 ] [ sh:class snomed:395007004 ] [ sh:class snomed:182845006 ] [ sh:class snomed:182846007 ] ) ;
             sh:path sphn:hasReasonToStopCode ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class snomed:284009009 ;
+        [ sh:class sphn:TimePattern ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrationRouteCode ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasTimePattern ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:TimePattern ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasTimePattern ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class snomed:284009009 ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrationRouteCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
-                    WHERE {
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
-                        FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasReasonToStopCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasReasonToStopCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/441308009>, <http://snomed.info/id/182844005>, <http://snomed.info/id/182845006>, <http://snomed.info/id/395007004>, <http://snomed.info/id/182872003>, <http://snomed.info/id/74964007>, <http://snomed.info/id/31438003>, <http://snomed.info/id/395009001>, <http://snomed.info/id/419620001>, <http://snomed.info/id/182846007>, <http://snomed.info/id/399307001> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/441308009>, <http://snomed.info/id/31438003>, <http://snomed.info/id/182844005>, <http://snomed.info/id/74964007>, <http://snomed.info/id/395009001>, <http://snomed.info/id/399307001>, <http://snomed.info/id/182872003>, <http://snomed.info/id/419620001>, <http://snomed.info/id/395007004>, <http://snomed.info/id/182845006>, <http://snomed.info/id/182846007> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
-                                                }""" ] ;
+                                                }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
+                    WHERE {
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
+                        FILTER (?hasStartDateTime > ?hasEndDateTime)
+                    }""" ] ;
     sh:targetClass sphn:DrugAdministrationEvent .
 
 constraints:sphnDrugAdministrationEvent_Warning_Naming a sh:NodeShape ;
@@ -3579,9 +3579,9 @@ constraints:sphnDrugAdministrationEvent_Warning_Naming a sh:NodeShape ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAdministrationRouteCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasReasonToStopCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAdministrationRouteCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasReasonToStopCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
@@ -3596,9 +3596,9 @@ constraints:sphnDrugAdministrationEvent_Warning_Naming a sh:NodeShape ;
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasReasonToStopCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAdministrationRouteCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasReasonToStopCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAdministrationRouteCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:DrugAdministrationEvent .
@@ -3606,21 +3606,21 @@ constraints:sphnDrugAdministrationEvent_Warning_Naming a sh:NodeShape ;
 constraints:sphnDrugArticle a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
+    sh:property [ sh:class sphn:PharmaceuticalDoseForm ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasName ],
+            sh:path sphn:hasManufacturedDoseForm ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:PharmaceuticalDoseForm ;
+        [ sh:class sphn:Code ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasManufacturedDoseForm ],
-        [ sh:class sphn:Code ;
+            sh:path sphn:hasCode ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCode ] ;
+            sh:path sphn:hasName ] ;
     sh:targetClass sphn:DrugArticle .
 
 constraints:sphnDrugArticle_Warning_Naming a sh:NodeShape ;
@@ -3639,43 +3639,47 @@ constraints:sphnDrugArticle_Warning_Naming a sh:NodeShape ;
 constraints:sphnDrugPrescription a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Quantity ;
+    sh:property [ sh:class sphn:Intent ;
+            sh:minCount 0 ;
+            sh:path sphn:hasIntent ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasFrequency ],
+            sh:path sphn:hasRecordDateTime ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:Drug ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDrug ],
-        [ sh:class snomed:284009009 ;
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrationRouteCode ],
+            sh:path sphn:hasFrequency ],
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:OncologyDiagnosis ] [ sh:class sphn:Diagnosis ] [ sh:class sphn:BilledDiagnosis ] [ sh:class sphn:NursingDiagnosis ] ) ;
+            sh:path sphn:hasIndicationToStart ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:Intent ;
+        [ sh:class snomed:284009009 ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasIntent ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasAdministrationRouteCode ],
+        [ sh:class sphn:TimePattern ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:NursingDiagnosis ] [ sh:class sphn:OncologyDiagnosis ] [ sh:class sphn:BilledDiagnosis ] [ sh:class sphn:Diagnosis ] ) ;
-            sh:path sphn:hasIndicationToStart ],
+            sh:minCount 0 ;
+            sh:path sphn:hasTimePattern ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -3683,11 +3687,7 @@ constraints:sphnDrugPrescription a sh:NodeShape ;
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasLastAdministrationDateTime ],
-        [ sh:class sphn:TimePattern ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasTimePattern ] ;
+            sh:path sphn:hasLastAdministrationDateTime ] ;
     sh:targetClass sphn:DrugPrescription .
 
 constraints:sphnDrugPrescription_Warning_Naming a sh:NodeShape ;
@@ -3755,45 +3755,26 @@ constraints:sphnElectrocardiogram_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnElectrocardiographicProcedure a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( rdf:type sphn:hasSubjectPhysiologicState sphn:hasIntent ) ;
+    sh:ignoredProperties ( rdf:type sphn:hasIntent sphn:hasSubjectPhysiologicState ) ;
     sh:property [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:360156006 ] [ sh:class snomed:261004008 ] ) ;
-            sh:path ( sphn:hasIntent sphn:hasCode ) ],
-        [ sh:class sphn:PhysiologicState ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasSubjectPhysiologicState ],
-        [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasNumberOfLeads ],
-        [ sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:or ( [ sh:class snomed:128976003 ] [ sh:class snomed:128975004 ] ) ;
             sh:path ( sphn:hasSubjectPhysiologicState sphn:hasCode ) ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
         [ sh:class snomed:29303009 ;
             sh:minCount 1 ;
             sh:path sphn:hasCode ],
-        [ sh:class sphn:Electrocardiogram ;
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:360156006 ] [ sh:class snomed:261004008 ] ) ;
+            sh:path ( sphn:hasIntent sphn:hasCode ) ],
+        [ sh:class sphn:PhysiologicState ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasOutput ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasSubjectPhysiologicState ],
         [ sh:class sphn:BodySite ;
             sh:minCount 0 ;
             sh:path sphn:hasBodySite ],
@@ -3801,24 +3782,34 @@ constraints:sphnElectrocardiographicProcedure a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:Intent ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasIntent ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:Electrocardiogram ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasOutput ],
+        [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasNumberOfLeads ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasEndDateTime ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
-                                                WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/360156006>, <http://snomed.info/id/261004008> )) .
-                                                    FILTER (?class NOT IN ( ?values ) ) .
-                                                    FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
-                                                }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent> as ?path) (?class as ?value)
                                                 WHERE {
@@ -3844,6 +3835,15 @@ constraints:sphnElectrocardiographicProcedure a sh:NodeShape ;
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
+                                                WHERE {
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/360156006>, <http://snomed.info/id/261004008> )) .
+                                                    FILTER (?class NOT IN ( ?values ) ) .
+                                                    FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
+                                                }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSubjectPhysiologicState>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
@@ -3865,6 +3865,14 @@ constraints:sphnElectrocardiographicProcedure_Warning_Naming a sh:NodeShape ;
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasSubjectPhysiologicState>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSubjectPhysiologicState>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-ElectrocardiographicProcedure-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -3881,34 +3889,19 @@ constraints:sphnElectrocardiographicProcedure_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasSubjectPhysiologicState>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSubjectPhysiologicState>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:ElectrocardiographicProcedure .
 
 constraints:sphnExcludedDisorder a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:SourceSystem ;
+    sh:property [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasRecordDateTime ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -3916,7 +3909,14 @@ constraints:sphnExcludedDisorder a sh:NodeShape ;
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ] ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ] ;
     sh:targetClass sphn:ExcludedDisorder .
 
 constraints:sphnExcludedDisorder_Warning_Codes a sh:NodeShape ;
@@ -3981,33 +3981,41 @@ constraints:sphnExposure a sh:NodeShape ;
     sh:property [ sh:class snomed:138875005 ;
             sh:minCount 0 ;
             sh:path sphn:hasRouteCode ],
-        [ sh:class snomed:138875005 ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAgentCode ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
+            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRecordDateTime ],
+        [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasQuantity ],
         [ sh:class snomed:138875005 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDegreeCode ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasAgentCode ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:Quantity ;
+        [ sh:class snomed:138875005 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
+            sh:path sphn:hasDegreeCode ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -4015,15 +4023,7 @@ constraints:sphnExposure a sh:NodeShape ;
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -4047,36 +4047,36 @@ constraints:sphnExposure a sh:NodeShape ;
 constraints:sphnExposure_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Exposure-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> as ?path) (?code as ?value)
+                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+                         SELECT ?this (?class as ?path) (?this as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             ?this rdf:type ?class .
+                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Exposure-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAgentCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAgentCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Exposure-.*$'" ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-                         SELECT ?this (?class as ?path) (?this as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasRouteCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this rdf:type ?class .
-                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Exposure-.*$"))
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasRouteCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasRouteCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAgentCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasRouteCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAgentCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:target [ a sh:SPARQLTarget ;
@@ -4094,11 +4094,7 @@ constraints:sphnExposure_Warning_Naming a sh:NodeShape ;
 constraints:sphnFluidBalance a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasQuantity ],
-        [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
@@ -4106,6 +4102,13 @@ constraints:sphnFluidBalance a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasQuantity ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -4114,16 +4117,13 @@ constraints:sphnFluidBalance a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:FluidInputOutput ;
-            sh:minCount 0 ;
-            sh:path sphn:hasFluidInputOutput ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:FluidInputOutput ;
+            sh:minCount 0 ;
+            sh:path sphn:hasFluidInputOutput ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -4150,10 +4150,18 @@ constraints:sphnFluidBalance_Warning_Naming a sh:NodeShape ;
 constraints:sphnFluidInputOutput a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasSubstance rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasEndDateTime ],
+            sh:path sphn:hasDataProvider ],
+        [ sh:class snomed:33463005 ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path ( sphn:hasSubstance sphn:hasCode ) ],
+        [ sh:class sphn:Substance ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubstance ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -4161,26 +4169,18 @@ constraints:sphnFluidInputOutput a sh:NodeShape ;
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class snomed:33463005 ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path ( sphn:hasSubstance sphn:hasCode ) ],
-        [ sh:class sphn:Substance ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubstance ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:path sphn:hasEndDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -4215,29 +4215,29 @@ constraints:sphnFluidInputOutput_Warning_Naming a sh:NodeShape ;
 constraints:sphnFollowUp a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:VitalStatus ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasResult ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:281036007 ] [ sh:class snomed:386473003 ] ) ;
-            sh:path sphn:hasCode ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:VitalStatus ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:281036007 ] [ sh:class snomed:386473003 ] ) ;
+            sh:path sphn:hasCode ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
@@ -4278,7 +4278,7 @@ constraints:sphnGene a sh:NodeShape ;
             sh:path sphn:hasTranscript ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ],
         [ sh:class sphn:Organism ;
             sh:maxCount 1 ;
@@ -4295,13 +4295,13 @@ constraints:sphnGenePanel a sh:NodeShape ;
     sh:property [ sh:class sphn:DataFile ;
             sh:minCount 0 ;
             sh:path sphn:hasDataFile ],
+        [ sh:class sphn:Gene ;
+            sh:minCount 1 ;
+            sh:path sphn:hasFocusGene ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:Gene ;
-            sh:minCount 1 ;
-            sh:path sphn:hasFocusGene ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasDataFile, instances of sphn:TimeSeriesDataFile are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -4429,27 +4429,27 @@ constraints:sphnGeneticVariation_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnGenomicDeletion a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasSequenceLength rdf:type ) ;
-    sh:property [ sh:class ucum:cblbase_paircbr ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path ( sphn:hasSequenceLength sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:Quantity ;
+    sh:ignoredProperties ( rdf:type sphn:hasSequenceLength ) ;
+    sh:property [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSequenceLength ],
-        [ sh:datatype xsd:string ;
+            sh:path sphn:hasGenomicSequence ],
+        [ sh:class sphn:ChromosomalLocation ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasGenomicSequence ],
+            sh:path sphn:hasChromosomalLocation ],
         [ sh:class sphn:GenomicPosition ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasGenomicPosition ],
-        [ sh:class sphn:ChromosomalLocation ;
+        [ sh:class ucum:cblbase_paircbr ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path ( sphn:hasSequenceLength sphn:hasUnit sphn:hasCode ) ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasChromosomalLocation ] ;
+            sh:path sphn:hasSequenceLength ] ;
     sh:targetClass sphn:GenomicDeletion .
 
 constraints:sphnGenomicDeletion_Warning_Naming a sh:NodeShape ;
@@ -4467,27 +4467,27 @@ constraints:sphnGenomicDeletion_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnGenomicInsertion a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasSequenceLength rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
+    sh:ignoredProperties ( rdf:type sphn:hasSequenceLength ) ;
+    sh:property [ sh:class sphn:GenomicPosition ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasGenomicSequence ],
-        [ sh:class ucum:cblbase_paircbr ;
+            sh:path sphn:hasGenomicPosition ],
+        [ sh:class sphn:ChromosomalLocation ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path ( sphn:hasSequenceLength sphn:hasUnit sphn:hasCode ) ],
+            sh:path sphn:hasChromosomalLocation ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasSequenceLength ],
-        [ sh:class sphn:GenomicPosition ;
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasGenomicPosition ],
-        [ sh:class sphn:ChromosomalLocation ;
+            sh:path sphn:hasGenomicSequence ],
+        [ sh:class ucum:cblbase_paircbr ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasChromosomalLocation ] ;
+            sh:path ( sphn:hasSequenceLength sphn:hasUnit sphn:hasCode ) ] ;
     sh:targetClass sphn:GenomicInsertion .
 
 constraints:sphnGenomicInsertion_Warning_Naming a sh:NodeShape ;
@@ -4510,14 +4510,14 @@ constraints:sphnGenomicPosition a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasEnd ],
-        [ sh:class sphn:GenomicPosition_coordinateConvention ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasCoordinateConvention ],
         [ sh:class sphn:ReferenceSequence ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasReference ],
+        [ sh:class sphn:GenomicPosition_coordinateConvention ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasCoordinateConvention ],
         [ sh:datatype xsd:double ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -4540,36 +4540,36 @@ constraints:sphnGenomicPosition_Warning_Naming a sh:NodeShape ;
 constraints:sphnGenomicPosition_coordinateConvention a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:InterResidueCoordinates sphn-individual:ResidueCoordinates ) ;
+    sh:property [ sh:in ( sphn-individual:ResidueCoordinates sphn-individual:InterResidueCoordinates ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:GenomicPosition_coordinateConvention .
 
 constraints:sphnGestationalAgeAtBirth a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasQuantity rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:AdministrativeCase ;
+    sh:property [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasQuantity ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class ucum:d ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:targetClass sphn:GestationalAgeAtBirth .
 
 constraints:sphnGestationalAgeAtBirth_Warning_Naming a sh:NodeShape ;
@@ -4588,14 +4588,14 @@ constraints:sphnGestationalAgeAtBirth_Warning_Naming a sh:NodeShape ;
 constraints:sphnHash a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
+    sh:property [ sh:class sphn:Hash_algorithm ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStringValue ],
-        [ sh:class sphn:Hash_algorithm ;
+            sh:path sphn:hasAlgorithm ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasAlgorithm ] ;
+            sh:path sphn:hasStringValue ] ;
     sh:targetClass sphn:Hash .
 
 constraints:sphnHash_Warning_Naming a sh:NodeShape ;
@@ -4614,29 +4614,17 @@ constraints:sphnHash_Warning_Naming a sh:NodeShape ;
 constraints:sphnHash_algorithm a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:MD5 sphn-individual:SHA256 sphn-individual:SHA512 ) ;
+    sh:property [ sh:in ( sphn-individual:SHA256 sphn-individual:SHA512 sphn-individual:MD5 ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:Hash_algorithm .
 
 constraints:sphnHealthcareEncounter a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasIdentifier ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:Location ;
+    sh:property [ sh:class sphn:Location ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasTargetLocation ],
+            sh:path sphn:hasOriginLocation ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
@@ -4648,10 +4636,14 @@ constraints:sphnHealthcareEncounter a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasCurrentLocation ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -4659,11 +4651,19 @@ constraints:sphnHealthcareEncounter a sh:NodeShape ;
         [ sh:class sphn:Location ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasOriginLocation ],
+            sh:path sphn:hasTargetLocation ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasIdentifier ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ] ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasEndDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -4690,18 +4690,18 @@ constraints:sphnHealthcareEncounter_Warning_Naming a sh:NodeShape ;
 constraints:sphnHealthcarePrimaryInformationSystem a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasName ],
-        [ sh:class snomed:706593004 ;
+    sh:property [ sh:class snomed:706593004 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasCode ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasName ] ;
     sh:targetClass sphn:HealthcarePrimaryInformationSystem .
 
 constraints:sphnHealthcarePrimaryInformationSystem_Warning_Naming a sh:NodeShape ;
@@ -4728,82 +4728,82 @@ constraints:sphnHealthcarePrimaryInformationSystem_Warning_Naming a sh:NodeShape
 constraints:sphnHeartRate a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
+    sh:property [ sh:class sphn:TimeSeriesDataFile ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:271636001 ] [ sh:class snomed:61086009 ] ) ;
-            sh:path sphn:hasRegularityCode ],
+            sh:path sphn:hasDataFile ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasQuantity ],
-        [ sh:class sphn:TimeSeriesDataFile ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDataFile ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ] ;
+            sh:path sphn:hasDateTime ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:61086009 ] [ sh:class snomed:271636001 ] ) ;
+            sh:path sphn:hasRegularityCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasRegularityCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasRegularityCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/271636001>, <http://snomed.info/id/61086009> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/61086009>, <http://snomed.info/id/271636001> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
     sh:targetClass sphn:HeartRate .
 
-constraints:sphnHeartRateMeasurement a sh:NodeShape ;
-    sh:closed false ;
-    sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Performer ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
+constraints:sphnHeartRateMeasurement a sh:NodeShape ;
+    sh:closed false ;
+    sh:ignoredProperties ( rdf:type ) ;
+    sh:property [ sh:class sphn:HeartRate ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasResult ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:PhysiologicState ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasSubjectPhysiologicState ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Implant ] [ sh:class sphn:MedicalDevice ] ) ;
+            sh:path sphn:hasMedicalDevice ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasEndDateTime ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasBodySite ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Implant ] ) ;
-            sh:path sphn:hasMedicalDevice ],
-        [ sh:class sphn:PhysiologicState ;
+        [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSubjectPhysiologicState ],
+            sh:path sphn:hasPerformer ],
         [ sh:class snomed:128927009 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasMethodCode ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:class sphn:HeartRate ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -4825,14 +4825,6 @@ constraints:sphnHeartRateMeasurement a sh:NodeShape ;
 constraints:sphnHeartRateMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-HeartRateMeasurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -4840,12 +4832,28 @@ constraints:sphnHeartRateMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-HeartRateMeasurement-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:HeartRateMeasurement .
 
 constraints:sphnHeartRate_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasRegularityCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasRegularityCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-HeartRate-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -4853,14 +4861,6 @@ constraints:sphnHeartRate_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-HeartRate-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasRegularityCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasRegularityCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:HeartRate .
 
@@ -4871,28 +4871,28 @@ constraints:sphnHomeAddress a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:Country ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasCountry ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:SwissSocioEconomicPosition ;
             sh:minCount 0 ;
             sh:path sphn:hasSwissSocioEconomicPosition ],
-        [ sh:class sphn:Country ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCountry ] ;
+            sh:path sphn:hasEndDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -4919,39 +4919,39 @@ constraints:sphnHomeAddress_Warning_Naming a sh:NodeShape ;
 constraints:sphnImagingProcedure a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:BodySite ;
+    sh:property [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:class snomed:363679005 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasEndDateTime ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:Intent ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasIntent ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
+        [ sh:class sphn:BodySite ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ] ;
+            sh:path sphn:hasBodySite ],
+        [ sh:class snomed:363679005 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -4965,14 +4965,6 @@ constraints:sphnImagingProcedure a sh:NodeShape ;
 constraints:sphnImagingProcedure_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-ImagingProcedure-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -4980,63 +4972,71 @@ constraints:sphnImagingProcedure_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-ImagingProcedure-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:ImagingProcedure .
 
 constraints:sphnImplant a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
+    sh:property [ sh:class sphn:Software ;
+            sh:minCount 0 ;
+            sh:path sphn:hasSoftware ],
+        [ sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:or ( [ sh:class snomed:14106009 ] [ sh:class snomed:40388003 ] ) ;
             sh:path sphn:hasTypeCode ],
-        [ sh:class sphn:Software ;
-            sh:minCount 0 ;
-            sh:path sphn:hasSoftware ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasProductCode ] ;
     sh:targetClass sphn:Implant .
 
 constraints:sphnImplantPresence a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
+    sh:property [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRecordDateTime ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:Implant ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasMedicalDevice ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
         [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasBodySite ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasEndDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -5106,6 +5106,14 @@ constraints:sphnImplant_Warning_Codes a sh:NodeShape ;
 constraints:sphnImplant_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Implant-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -5113,36 +5121,24 @@ constraints:sphnImplant_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Implant-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:Implant .
 
 constraints:sphnInhaledOxygenConcentration a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasQuantity rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class ucum:percent ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class ucum:percent ;
+            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:DrugAdministrationEvent ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasOxygenFlowRate ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
@@ -5150,22 +5146,26 @@ constraints:sphnInhaledOxygenConcentration a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasQuantity ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDateTime ],
         [ sh:class sphn:DataDetermination ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDataDetermination ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:MedicalDevice ] [ sh:class sphn:AccessDevice ] ) ;
-            sh:path sphn:hasOxygenEquipment ] ;
+            sh:or ( [ sh:class sphn:AccessDevice ] [ sh:class sphn:MedicalDevice ] ) ;
+            sh:path sphn:hasOxygenEquipment ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:DrugAdministrationEvent ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasOxygenFlowRate ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasOxygenEquipment, instances of sphn:LabAnalyzer, sphn:Implant are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -5196,29 +5196,29 @@ constraints:sphnInsuranceStatus a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasEndDateTime ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:InsuranceStatus_coverageType ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasCoverageType ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStartDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -5245,7 +5245,7 @@ constraints:sphnInsuranceStatus_Warning_Naming a sh:NodeShape ;
 constraints:sphnInsuranceStatus_coverageType a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:Foreign sphn-individual:Other sphn-individual:Private sphn-individual:General sphn-individual:SemiPrivate sphn-individual:None ) ;
+    sh:property [ sh:in ( sphn-individual:SemiPrivate sphn-individual:None sphn-individual:Private sphn-individual:Foreign sphn-individual:Other sphn-individual:General ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:InsuranceStatus_coverageType .
 
@@ -5261,14 +5261,6 @@ constraints:sphnIntent a sh:NodeShape ;
 constraints:sphnIntent_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Intent-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -5276,6 +5268,14 @@ constraints:sphnIntent_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Intent-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:Intent .
 
@@ -5286,22 +5286,22 @@ constraints:sphnInterpretation a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDateTime ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+        [ sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Result ] [ sh:class sphn:SemanticMapping ] [ sh:class sphn:AllergyEpisode ] [ sh:class sphn:BodyMassIndex ] [ sh:class sphn:TherapeuticArea ] [ sh:class sphn:ReferenceSequence ] [ sh:class sphn:Diagnosis ] [ sh:class sphn:CivilStatus ] [ sh:class sphn:DataFile ] [ sh:class sphn:Laterality ] [ sh:class sphn:PhysiologicState ] [ sh:class sphn:DrugAdministrationEvent ] [ sh:class sphn:Intent ] [ sh:class sphn:NutritionIntake ] [ sh:class sphn:GestationalAgeAtBirth ] [ sh:class sphn:VariantDescriptor ] [ sh:class sphn:FluidBalance ] [ sh:class sphn:BodySurfaceArea ] [ sh:class sphn:Birth ] [ sh:class sphn:DataDetermination ] [ sh:class sphn:Electrocardiogram ] [ sh:class sphn:FollowUp ] [ sh:class sphn:ExcludedDisorder ] [ sh:class sphn:ImplantPresence ] [ sh:class sphn:InsuranceStatus ] [ sh:class sphn:GenePanel ] [ sh:class sphn:Biobanksample ] [ sh:class sphn:Terminology ] [ sh:class sphn:Transplant ] [ sh:class sphn:SubjectPseudoIdentifier ] [ sh:class sphn:Organism ] [ sh:class sphn:HealthcareEncounter ] [ sh:class sphn:AssessmentEvent ] [ sh:class sphn:BodyPosition ] [ sh:class sphn:PharmaceuticalDoseForm ] [ sh:class sphn:DataRelease ] [ sh:class sphn:Consent ] [ sh:class sphn:Performer ] [ sh:class sphn:HealthcarePrimaryInformationSystem ] [ sh:class sphn:SequencingRun ] [ sh:class sphn:Protein ] [ sh:class sphn:DataProvider ] [ sh:class sphn:DeathDate ] [ sh:class sphn:AdministrativeCase ] [ sh:class sphn:DrugPrescription ] [ sh:class sphn:FluidInputOutput ] [ sh:class sphn:Nationality ] [ sh:class sphn:BirthDate ] [ sh:class sphn:GenomicPosition ] [ sh:class sphn:LabTest ] [ sh:class sphn:DrugArticle ] [ sh:class sphn:Chromosome ] [ sh:class sphn:Transcript ] [ sh:class sphn:TimePattern ] [ sh:class sphn:Location ] [ sh:class sphn:QualityControlMetric ] [ sh:class sphn:AssessmentComponent ] [ sh:class sphn:Substance ] [ sh:class sphn:ReferenceRange ] [ sh:class sphn:Age ] [ sh:class sphn:DataProcessing ] [ sh:class sphn:Assessment ] [ sh:class sphn:SourceData ] [ sh:class sphn:Department ] [ sh:class sphn:HomeAddress ] [ sh:class sphn:Drug ] [ sh:class sphn:AdministrativeSex ] [ sh:class sphn:SampleProcessing ] [ sh:class sphn:Death ] [ sh:class sphn:Software ] [ sh:class sphn:Hash ] [ sh:class sphn:StandardOperatingProcedure ] [ sh:class sphn:Sample ] [ sh:class sphn:Code ] [ sh:class sphn:GeneticVariation ] [ sh:class sphn:Quantity ] [ sh:class sphn:Exposure ] [ sh:class sphn:MedicalDevice ] [ sh:class sphn:VariantNotation ] [ sh:class sphn:MedicalProcedure ] [ sh:class sphn:BodySite ] [ sh:class sphn:Gene ] [ sh:class sphn:TransplantPresence ] [ sh:class sphn:InhaledOxygenConcentration ] [ sh:class sphn:CardiacIndex ] [ sh:class sphn:Unit ] [ sh:class sphn:Allergen ] [ sh:class sphn:LabTestEvent ] [ sh:class sphn:Measurement ] [ sh:class sphn:SwissSocioEconomicPosition ] [ sh:class sphn:Allergy ] [ sh:class sphn:AccessDevicePresence ] [ sh:class sphn:ProblemCondition ] [ sh:class sphn:ChromosomalLocation ] [ sh:class sphn:CareHandling ] [ sh:class sphn:Interpretation ] [ sh:class sphn:Country ] [ sh:class sphn:SequencingInstrument ] [ sh:class sphn:ValueSet ] [ sh:class sphn:Assay ] [ sh:class sphn:ReferenceValue ] [ sh:class sphn:AdverseEvent ] [ sh:class sphn:ResuscitationDirective ] [ sh:class sphn:SourceSystem ] ) ;
+            sh:path sphn:hasOutput ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:SubjectPseudoIdentifier ] [ sh:class sphn:VariantNotation ] [ sh:class sphn:ExcludedDisorder ] [ sh:class sphn:ReferenceValue ] [ sh:class sphn:Age ] [ sh:class sphn:DataDetermination ] [ sh:class sphn:Assay ] [ sh:class sphn:SourceData ] [ sh:class sphn:StandardOperatingProcedure ] [ sh:class sphn:DeathDate ] [ sh:class sphn:FluidInputOutput ] [ sh:class sphn:ProblemCondition ] [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Performer ] [ sh:class sphn:QualityControlMetric ] [ sh:class sphn:Hash ] [ sh:class sphn:DataFile ] [ sh:class sphn:CardiacIndex ] [ sh:class sphn:PhysiologicState ] [ sh:class sphn:Department ] [ sh:class sphn:GeneticVariation ] [ sh:class sphn:BodyPosition ] [ sh:class sphn:Assessment ] [ sh:class sphn:Diagnosis ] [ sh:class sphn:FollowUp ] [ sh:class sphn:Chromosome ] [ sh:class sphn:Unit ] [ sh:class sphn:SampleProcessing ] [ sh:class sphn:Software ] [ sh:class sphn:AdverseEvent ] [ sh:class sphn:Gene ] [ sh:class sphn:NutritionIntake ] [ sh:class sphn:TherapeuticArea ] [ sh:class sphn:Allergen ] [ sh:class sphn:AllergyEpisode ] [ sh:class sphn:BodySite ] [ sh:class sphn:AssessmentComponent ] [ sh:class sphn:SequencingRun ] [ sh:class sphn:PharmaceuticalDoseForm ] [ sh:class sphn:Protein ] [ sh:class sphn:Country ] [ sh:class sphn:Result ] [ sh:class sphn:TransplantPresence ] [ sh:class sphn:LabTest ] [ sh:class sphn:AssessmentEvent ] [ sh:class sphn:InhaledOxygenConcentration ] [ sh:class sphn:SourceSystem ] [ sh:class sphn:Location ] [ sh:class sphn:BodyMassIndex ] [ sh:class sphn:DataProvider ] [ sh:class sphn:HealthcareEncounter ] [ sh:class sphn:Electrocardiogram ] [ sh:class sphn:Quantity ] [ sh:class sphn:Allergy ] [ sh:class sphn:ReferenceRange ] [ sh:class sphn:ImplantPresence ] [ sh:class sphn:GenePanel ] [ sh:class sphn:HomeAddress ] [ sh:class sphn:Substance ] [ sh:class sphn:Interpretation ] [ sh:class sphn:AdministrativeCase ] [ sh:class sphn:AccessDevicePresence ] [ sh:class sphn:Sample ] [ sh:class sphn:CivilStatus ] [ sh:class sphn:Code ] [ sh:class sphn:MedicalProcedure ] [ sh:class sphn:Drug ] [ sh:class sphn:DataRelease ] [ sh:class sphn:SemanticMapping ] [ sh:class sphn:TimePattern ] [ sh:class sphn:Laterality ] [ sh:class sphn:ChromosomalLocation ] [ sh:class sphn:Transplant ] [ sh:class sphn:DrugArticle ] [ sh:class sphn:VariantDescriptor ] [ sh:class sphn:SequencingInstrument ] [ sh:class sphn:HealthcarePrimaryInformationSystem ] [ sh:class sphn:Exposure ] [ sh:class sphn:CareHandling ] [ sh:class sphn:DataProcessing ] [ sh:class sphn:DrugAdministrationEvent ] [ sh:class sphn:Transcript ] [ sh:class sphn:InsuranceStatus ] [ sh:class sphn:Intent ] [ sh:class sphn:GenomicPosition ] [ sh:class sphn:Nationality ] [ sh:class sphn:Biobanksample ] [ sh:class sphn:Death ] [ sh:class sphn:AdministrativeSex ] [ sh:class sphn:Consent ] [ sh:class sphn:ResuscitationDirective ] [ sh:class sphn:SwissSocioEconomicPosition ] [ sh:class sphn:Terminology ] [ sh:class sphn:BirthDate ] [ sh:class sphn:BodySurfaceArea ] [ sh:class sphn:DrugPrescription ] [ sh:class sphn:LabTestEvent ] [ sh:class sphn:FluidBalance ] [ sh:class sphn:Measurement ] [ sh:class sphn:ReferenceSequence ] [ sh:class sphn:Organism ] [ sh:class sphn:ValueSet ] [ sh:class sphn:Birth ] [ sh:class sphn:GestationalAgeAtBirth ] ) ;
+            sh:or ( [ sh:class sphn:Result ] [ sh:class sphn:SemanticMapping ] [ sh:class sphn:AllergyEpisode ] [ sh:class sphn:BodyMassIndex ] [ sh:class sphn:TherapeuticArea ] [ sh:class sphn:ReferenceSequence ] [ sh:class sphn:Diagnosis ] [ sh:class sphn:CivilStatus ] [ sh:class sphn:DataFile ] [ sh:class sphn:Laterality ] [ sh:class sphn:PhysiologicState ] [ sh:class sphn:DrugAdministrationEvent ] [ sh:class sphn:Intent ] [ sh:class sphn:NutritionIntake ] [ sh:class sphn:GestationalAgeAtBirth ] [ sh:class sphn:VariantDescriptor ] [ sh:class sphn:FluidBalance ] [ sh:class sphn:BodySurfaceArea ] [ sh:class sphn:Birth ] [ sh:class sphn:DataDetermination ] [ sh:class sphn:Electrocardiogram ] [ sh:class sphn:FollowUp ] [ sh:class sphn:ExcludedDisorder ] [ sh:class sphn:ImplantPresence ] [ sh:class sphn:InsuranceStatus ] [ sh:class sphn:GenePanel ] [ sh:class sphn:Biobanksample ] [ sh:class sphn:Terminology ] [ sh:class sphn:Transplant ] [ sh:class sphn:SubjectPseudoIdentifier ] [ sh:class sphn:Organism ] [ sh:class sphn:HealthcareEncounter ] [ sh:class sphn:AssessmentEvent ] [ sh:class sphn:BodyPosition ] [ sh:class sphn:PharmaceuticalDoseForm ] [ sh:class sphn:DataRelease ] [ sh:class sphn:Consent ] [ sh:class sphn:Performer ] [ sh:class sphn:HealthcarePrimaryInformationSystem ] [ sh:class sphn:SequencingRun ] [ sh:class sphn:Protein ] [ sh:class sphn:DataProvider ] [ sh:class sphn:DeathDate ] [ sh:class sphn:AdministrativeCase ] [ sh:class sphn:DrugPrescription ] [ sh:class sphn:FluidInputOutput ] [ sh:class sphn:Nationality ] [ sh:class sphn:BirthDate ] [ sh:class sphn:GenomicPosition ] [ sh:class sphn:LabTest ] [ sh:class sphn:DrugArticle ] [ sh:class sphn:Chromosome ] [ sh:class sphn:Transcript ] [ sh:class sphn:TimePattern ] [ sh:class sphn:Location ] [ sh:class sphn:QualityControlMetric ] [ sh:class sphn:AssessmentComponent ] [ sh:class sphn:Substance ] [ sh:class sphn:ReferenceRange ] [ sh:class sphn:Age ] [ sh:class sphn:DataProcessing ] [ sh:class sphn:Assessment ] [ sh:class sphn:SourceData ] [ sh:class sphn:Department ] [ sh:class sphn:HomeAddress ] [ sh:class sphn:Drug ] [ sh:class sphn:AdministrativeSex ] [ sh:class sphn:SampleProcessing ] [ sh:class sphn:Death ] [ sh:class sphn:Software ] [ sh:class sphn:Hash ] [ sh:class sphn:StandardOperatingProcedure ] [ sh:class sphn:Sample ] [ sh:class sphn:Code ] [ sh:class sphn:GeneticVariation ] [ sh:class sphn:Quantity ] [ sh:class sphn:Exposure ] [ sh:class sphn:MedicalDevice ] [ sh:class sphn:VariantNotation ] [ sh:class sphn:MedicalProcedure ] [ sh:class sphn:BodySite ] [ sh:class sphn:Gene ] [ sh:class sphn:TransplantPresence ] [ sh:class sphn:InhaledOxygenConcentration ] [ sh:class sphn:CardiacIndex ] [ sh:class sphn:Unit ] [ sh:class sphn:Allergen ] [ sh:class sphn:LabTestEvent ] [ sh:class sphn:Measurement ] [ sh:class sphn:SwissSocioEconomicPosition ] [ sh:class sphn:Allergy ] [ sh:class sphn:AccessDevicePresence ] [ sh:class sphn:ProblemCondition ] [ sh:class sphn:ChromosomalLocation ] [ sh:class sphn:CareHandling ] [ sh:class sphn:Interpretation ] [ sh:class sphn:Country ] [ sh:class sphn:SequencingInstrument ] [ sh:class sphn:ValueSet ] [ sh:class sphn:Assay ] [ sh:class sphn:ReferenceValue ] [ sh:class sphn:AdverseEvent ] [ sh:class sphn:ResuscitationDirective ] [ sh:class sphn:SourceSystem ] ) ;
             sh:path sphn:hasInput ],
         [ sh:datatype xsd:string ;
             sh:minCount 0 ;
-            sh:path sphn:hasStandardGuideline ],
-        [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:SubjectPseudoIdentifier ] [ sh:class sphn:VariantNotation ] [ sh:class sphn:ExcludedDisorder ] [ sh:class sphn:ReferenceValue ] [ sh:class sphn:Age ] [ sh:class sphn:DataDetermination ] [ sh:class sphn:Assay ] [ sh:class sphn:SourceData ] [ sh:class sphn:StandardOperatingProcedure ] [ sh:class sphn:DeathDate ] [ sh:class sphn:FluidInputOutput ] [ sh:class sphn:ProblemCondition ] [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Performer ] [ sh:class sphn:QualityControlMetric ] [ sh:class sphn:Hash ] [ sh:class sphn:DataFile ] [ sh:class sphn:CardiacIndex ] [ sh:class sphn:PhysiologicState ] [ sh:class sphn:Department ] [ sh:class sphn:GeneticVariation ] [ sh:class sphn:BodyPosition ] [ sh:class sphn:Assessment ] [ sh:class sphn:Diagnosis ] [ sh:class sphn:FollowUp ] [ sh:class sphn:Chromosome ] [ sh:class sphn:Unit ] [ sh:class sphn:SampleProcessing ] [ sh:class sphn:Software ] [ sh:class sphn:AdverseEvent ] [ sh:class sphn:Gene ] [ sh:class sphn:NutritionIntake ] [ sh:class sphn:TherapeuticArea ] [ sh:class sphn:Allergen ] [ sh:class sphn:AllergyEpisode ] [ sh:class sphn:BodySite ] [ sh:class sphn:AssessmentComponent ] [ sh:class sphn:SequencingRun ] [ sh:class sphn:PharmaceuticalDoseForm ] [ sh:class sphn:Protein ] [ sh:class sphn:Country ] [ sh:class sphn:Result ] [ sh:class sphn:TransplantPresence ] [ sh:class sphn:LabTest ] [ sh:class sphn:AssessmentEvent ] [ sh:class sphn:InhaledOxygenConcentration ] [ sh:class sphn:SourceSystem ] [ sh:class sphn:Location ] [ sh:class sphn:BodyMassIndex ] [ sh:class sphn:DataProvider ] [ sh:class sphn:HealthcareEncounter ] [ sh:class sphn:Electrocardiogram ] [ sh:class sphn:Quantity ] [ sh:class sphn:Allergy ] [ sh:class sphn:ReferenceRange ] [ sh:class sphn:ImplantPresence ] [ sh:class sphn:GenePanel ] [ sh:class sphn:HomeAddress ] [ sh:class sphn:Substance ] [ sh:class sphn:Interpretation ] [ sh:class sphn:AdministrativeCase ] [ sh:class sphn:AccessDevicePresence ] [ sh:class sphn:Sample ] [ sh:class sphn:CivilStatus ] [ sh:class sphn:Code ] [ sh:class sphn:MedicalProcedure ] [ sh:class sphn:Drug ] [ sh:class sphn:DataRelease ] [ sh:class sphn:SemanticMapping ] [ sh:class sphn:TimePattern ] [ sh:class sphn:Laterality ] [ sh:class sphn:ChromosomalLocation ] [ sh:class sphn:Transplant ] [ sh:class sphn:DrugArticle ] [ sh:class sphn:VariantDescriptor ] [ sh:class sphn:SequencingInstrument ] [ sh:class sphn:HealthcarePrimaryInformationSystem ] [ sh:class sphn:Exposure ] [ sh:class sphn:CareHandling ] [ sh:class sphn:DataProcessing ] [ sh:class sphn:DrugAdministrationEvent ] [ sh:class sphn:Transcript ] [ sh:class sphn:InsuranceStatus ] [ sh:class sphn:Intent ] [ sh:class sphn:GenomicPosition ] [ sh:class sphn:Nationality ] [ sh:class sphn:Biobanksample ] [ sh:class sphn:Death ] [ sh:class sphn:AdministrativeSex ] [ sh:class sphn:Consent ] [ sh:class sphn:ResuscitationDirective ] [ sh:class sphn:SwissSocioEconomicPosition ] [ sh:class sphn:Terminology ] [ sh:class sphn:BirthDate ] [ sh:class sphn:BodySurfaceArea ] [ sh:class sphn:DrugPrescription ] [ sh:class sphn:LabTestEvent ] [ sh:class sphn:FluidBalance ] [ sh:class sphn:Measurement ] [ sh:class sphn:ReferenceSequence ] [ sh:class sphn:Organism ] [ sh:class sphn:ValueSet ] [ sh:class sphn:Birth ] [ sh:class sphn:GestationalAgeAtBirth ] ) ;
-            sh:path sphn:hasOutput ] ;
+            sh:path sphn:hasStandardGuideline ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -5323,10 +5323,10 @@ constraints:sphnInterpretation_Warning_Codes a sh:NodeShape ;
             PREFIX owl: <http://www.w3.org/2002/07/owl#>
             PREFIX sphn-loinc: <https://biomedit.ch/rdf/sphn-resource/loinc/>
             PREFIX sphn-hgnc: <https://biomedit.ch/rdf/sphn-resource/hgnc/>
-            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> as ?path) (?typeCode as ?value)
+            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> as ?path) (?typeCode as ?value)
             WHERE {
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-loinc:LOINC .
                 ?typeCode rdfs:label ?label .
@@ -5334,7 +5334,7 @@ constraints:sphnInterpretation_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 {
                     SELECT ?typeCode
@@ -5348,7 +5348,7 @@ constraints:sphnInterpretation_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-hgnc:HGNC .
                 ?typeCode rdfs:comment ?comment .
@@ -5362,10 +5362,10 @@ constraints:sphnInterpretation_Warning_Codes a sh:NodeShape ;
             PREFIX owl: <http://www.w3.org/2002/07/owl#>
             PREFIX sphn-loinc: <https://biomedit.ch/rdf/sphn-resource/loinc/>
             PREFIX sphn-hgnc: <https://biomedit.ch/rdf/sphn-resource/hgnc/>
-            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> as ?path) (?typeCode as ?value)
+            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> as ?path) (?typeCode as ?value)
             WHERE {
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-loinc:LOINC .
                 ?typeCode rdfs:label ?label .
@@ -5373,7 +5373,7 @@ constraints:sphnInterpretation_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 {
                     SELECT ?typeCode
@@ -5387,7 +5387,7 @@ constraints:sphnInterpretation_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasOutput> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasInput> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-hgnc:HGNC .
                 ?typeCode rdfs:comment ?comment .
@@ -5432,49 +5432,49 @@ constraints:sphnInterpretation_Warning_Naming a sh:NodeShape ;
 constraints:sphnIsolate a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Sample_primaryContainer ;
+    sh:property [ sh:class sphn:Organism ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPrimaryContainer ],
+            sh:path sphn:hasOrganism ],
         [ sh:class snomed:123038009 ;
             sh:minCount 0 ;
             sh:path sphn:hasMaterialTypeCode ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:Sample_fixationType ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasFixationType ],
+            sh:path sphn:hasBodySite ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasCollectionDateTime ],
-        [ sh:datatype xsd:string ;
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasIdentifier ],
-        [ sh:class sphn:Organism ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:Sample_primaryContainer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasOrganism ],
+            sh:path sphn:hasPrimaryContainer ],
         [ sh:datatype xsd:anyURI ;
             sh:path sphn:hasSharedIdentifier ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:datatype xsd:string ;
+            sh:minCount 0 ;
+            sh:path sphn:hasIdentifier ],
+        [ sh:class sphn:Sample_fixationType ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:path sphn:hasFixationType ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:BodySite ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasBodySite ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:targetClass sphn:Isolate .
 
 constraints:sphnIsolate_Warning_Naming a sh:NodeShape ;
@@ -5503,15 +5503,15 @@ constraints:sphnLabAnalyzer a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Code ] [ sh:class emdn:EMDN ] ) ;
+            sh:path sphn:hasTypeCode ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasProductCode ],
         [ sh:class sphn:Software ;
             sh:minCount 0 ;
-            sh:path sphn:hasSoftware ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class emdn:EMDN ] ) ;
-            sh:path sphn:hasTypeCode ] ;
+            sh:path sphn:hasSoftware ] ;
     sh:targetClass sphn:LabAnalyzer .
 
 constraints:sphnLabAnalyzer_Warning_Codes a sh:NodeShape ;
@@ -5573,17 +5573,17 @@ constraints:sphnLabAnalyzer_Warning_Naming a sh:NodeShape ;
 constraints:sphnLabResult a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:ReferenceValue ] [ sh:class sphn:ReferenceRange ] ) ;
-            sh:path sphn:hasNumericalReference ],
-        [ sh:class sphn:Quantity ;
+    sh:property [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasQuantity ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:ReferenceValue ] [ sh:class sphn:ReferenceRange ] ) ;
+            sh:path sphn:hasNumericalReference ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
@@ -5680,17 +5680,17 @@ constraints:sphnLabResult_Warning_Naming a sh:NodeShape ;
 constraints:sphnLabTest a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class sphn-loinc:LOINC ] [ sh:class snomed:138875005 ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:LabAnalyzer ;
+    sh:property [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasTestKit ],
         [ sh:class sphn:LabResult ;
             sh:minCount 1 ;
             sh:path sphn:hasResult ],
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class sphn-loinc:LOINC ] [ sh:class snomed:138875005 ] ) ;
+            sh:path sphn:hasCode ],
         [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -5718,17 +5718,17 @@ constraints:sphnLabTest a sh:NodeShape ;
 constraints:sphnLabTestEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:AdministrativeCase ;
+    sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasDateTime ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:TumorSpecimen ] [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasSample ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -5737,17 +5737,17 @@ constraints:sphnLabTestEvent a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasReportDateTime ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] [ sh:class sphn:TumorSpecimen ] ) ;
-            sh:path sphn:hasSample ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:LabTest ;
             sh:minCount 1 ;
-            sh:path sphn:hasLabTest ] ;
+            sh:path sphn:hasLabTest ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasReportDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasLabTest, instances of sphn:AntimicrobialSusceptibilityLabTest, sphn:MicrobiologyBiomoleculePresenceLabTest, sphn:MicrobiologyMicroscopyLabTest, sphn:MicroorganismIdentificationLabTest are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -5880,14 +5880,14 @@ constraints:sphnLaterality a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:24028007 ] [ sh:class snomed:7771000 ] [ sh:class snomed:66459002 ] [ sh:class snomed:51440002 ] ) ;
+            sh:or ( [ sh:class snomed:66459002 ] [ sh:class snomed:51440002 ] [ sh:class snomed:7771000 ] [ sh:class snomed:24028007 ] ) ;
             sh:path sphn:hasCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/24028007>, <http://snomed.info/id/7771000>, <http://snomed.info/id/66459002>, <http://snomed.info/id/51440002> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/66459002>, <http://snomed.info/id/51440002>, <http://snomed.info/id/7771000>, <http://snomed.info/id/24028007> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -5917,60 +5917,60 @@ constraints:sphnLaterality_Warning_Naming a sh:NodeShape ;
 constraints:sphnLibraryPreparation a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
-            sh:path sphn:hasOutput ],
-        [ sh:class sphn:QualityControlMetric ;
+    sh:property [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:minCount 0 ;
-            sh:path sphn:hasQualityControlMetric ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:GenePanel ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasGenePanel ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
+            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasOutput ],
+        [ sh:class sphn:QualityControlMetric ;
             sh:minCount 0 ;
-            sh:path sphn:hasIntendedInsertSize ],
+            sh:path sphn:hasQualityControlMetric ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class obi:0000711 ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
         [ sh:class sphn:StandardOperatingProcedure ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasStandardOperatingProcedure ],
-        [ sh:maxCount 1 ;
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasKitCode ],
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:AdministrativeCase ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasTargetEnrichmentKitCode ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:minCount 0 ;
+            sh:path sphn:hasIntendedInsertSize ],
         [ sh:minCount 0 ;
             sh:or ( [ sh:class sphn:SampleProcessing ] [ sh:class sphn:LibraryPreparation ] ) ;
             sh:path sphn:hasPredecessor ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:TumorSpecimen ] [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasInput ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class obi:0000711 ] [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] [ sh:class sphn:TumorSpecimen ] ) ;
-            sh:path sphn:hasInput ] ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasKitCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasOutput, instances of sphn:TumorSpecimen are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -6118,14 +6118,14 @@ constraints:sphnLibraryPreparation_Warning_Naming a sh:NodeShape ;
 constraints:sphnLocation a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasExact ],
-        [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasExact ],
         [ sh:class snomed:276339004 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -6135,14 +6135,6 @@ constraints:sphnLocation a sh:NodeShape ;
 constraints:sphnLocation_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Location-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -6150,13 +6142,25 @@ constraints:sphnLocation_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Location-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:Location .
 
 constraints:sphnMeasurement a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class snomed:128927009 ;
+    sh:property [ sh:class sphn:Performer ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasPerformer ],
+        [ sh:class snomed:128927009 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasMethodCode ],
@@ -6164,32 +6168,28 @@ constraints:sphnMeasurement a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Implant ] ) ;
-            sh:path sphn:hasMedicalDevice ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:Performer ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Implant ] [ sh:class sphn:MedicalDevice ] ) ;
+            sh:path sphn:hasMedicalDevice ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
+        [ sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Result ] [ sh:class sphn:Circumference ] [ sh:class sphn:AssessmentResult ] [ sh:class sphn:RespiratoryRate ] [ sh:class sphn:OxygenSaturation ] [ sh:class sphn:HeartRate ] [ sh:class sphn:BloodPressure ] [ sh:class sphn:CardiacOutput ] [ sh:class sphn:TumorStageAssessmentResult ] [ sh:class sphn:ReferenceInterpretationResult ] [ sh:class sphn:TumorGradeAssessmentResult ] [ sh:class sphn:BodyTemperature ] [ sh:class sphn:BodyHeight ] [ sh:class sphn:BodyWeight ] ) ;
+            sh:path sphn:hasResult ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Circumference ] [ sh:class sphn:AssessmentResult ] [ sh:class sphn:CardiacOutput ] [ sh:class sphn:ReferenceInterpretationResult ] [ sh:class sphn:BodyWeight ] [ sh:class sphn:BodyTemperature ] [ sh:class sphn:HeartRate ] [ sh:class sphn:BodyHeight ] [ sh:class sphn:TumorStageAssessmentResult ] [ sh:class sphn:Result ] [ sh:class sphn:TumorGradeAssessmentResult ] [ sh:class sphn:RespiratoryRate ] [ sh:class sphn:BloodPressure ] [ sh:class sphn:OxygenSaturation ] ) ;
-            sh:path sphn:hasResult ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -6202,6 +6202,14 @@ constraints:sphnMeasurement a sh:NodeShape ;
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasResult>/rdf:type ?class.
                              FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#LabResult>, <https://biomedit.ch/rdf/sphn-schema/sphn#VitalStatus>, <https://biomedit.ch/rdf/sphn-schema/sphn#AntimicrobialSusceptibilityResult>, <https://biomedit.ch/rdf/sphn-schema/sphn#MicrobiologyBiomoleculePresenceResult>, <https://biomedit.ch/rdf/sphn-schema/sphn#MicrobiologyMicroscopyResult>, <https://biomedit.ch/rdf/sphn-schema/sphn#MicroorganismIdentificationResult>))
                          }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer are not allowed" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
+                             FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>))
+                         }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -6209,15 +6217,7 @@ constraints:sphnMeasurement a sh:NodeShape ;
                         ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
                         ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
                         FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer are not allowed" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
-                             FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>))
-                         }""" ] ;
+                    }""" ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -6233,14 +6233,6 @@ constraints:sphnMeasurement a sh:NodeShape ;
 constraints:sphnMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Measurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -6248,6 +6240,14 @@ constraints:sphnMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Measurement-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
@@ -6266,12 +6266,12 @@ constraints:sphnMedicalDevice a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasProductCode ],
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class snomed:272181003 ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasTypeCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:272181003 ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasTypeCode ],
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasProductCode ],
         [ sh:class sphn:Software ;
             sh:minCount 0 ;
             sh:path sphn:hasSoftware ] ;
@@ -6405,39 +6405,39 @@ constraints:sphnMedicalDevice_Warning_Naming a sh:NodeShape ;
 constraints:sphnMedicalProcedure a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasStartDateTime ],
         [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ],
-        [ sh:class sphn:BodySite ;
-            sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:Intent ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasIntent ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:Intent ;
-            sh:maxCount 1 ;
+            sh:path sphn:hasEndDateTime ],
+        [ sh:class sphn:BodySite ;
             sh:minCount 0 ;
-            sh:path sphn:hasIntent ] ;
+            sh:path sphn:hasBodySite ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -6538,13 +6538,6 @@ constraints:sphnMicrobiologyBiomoleculePresenceLabTest a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Gene ] [ sh:class sphn:Protein ] ) ;
-            sh:path sphn:hasTargetMolecule ],
-        [ sh:class sphn:MicrobiologyBiomoleculePresenceResult ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
-        [ sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:or ( [ sh:class sphn-loinc:LOINC ] [ sh:class snomed:138875005 ] ) ;
             sh:path sphn:hasCode ],
@@ -6552,6 +6545,13 @@ constraints:sphnMicrobiologyBiomoleculePresenceLabTest a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasInstrument ],
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Gene ] [ sh:class sphn:Protein ] ) ;
+            sh:path sphn:hasTargetMolecule ],
+        [ sh:class sphn:MicrobiologyBiomoleculePresenceResult ;
+            sh:minCount 1 ;
+            sh:path sphn:hasResult ],
         [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -6561,25 +6561,24 @@ constraints:sphnMicrobiologyBiomoleculePresenceLabTest a sh:NodeShape ;
 constraints:sphnMicrobiologyBiomoleculePresenceLabTestEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasReportDateTime ],
+    sh:property [ sh:class sphn:MicrobiologyBiomoleculePresenceLabTest ;
+            sh:minCount 1 ;
+            sh:path sphn:hasLabTest ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
-        [ sh:class sphn:Isolate ;
+            sh:path sphn:hasReportDateTime ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSample ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:minCount 0 ;
+            sh:path sphn:hasDateTime ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -6588,9 +6587,10 @@ constraints:sphnMicrobiologyBiomoleculePresenceLabTestEvent a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:MicrobiologyBiomoleculePresenceLabTest ;
+        [ sh:class sphn:Isolate ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasLabTest ] ;
+            sh:path sphn:hasSample ] ;
     sh:targetClass sphn:MicrobiologyBiomoleculePresenceLabTestEvent .
 
 constraints:sphnMicrobiologyBiomoleculePresenceLabTestEvent_Warning_Naming a sh:NodeShape ;
@@ -6673,28 +6673,28 @@ constraints:sphnMicrobiologyBiomoleculePresenceLabTest_Warning_Naming a sh:NodeS
 constraints:sphnMicrobiologyBiomoleculePresenceResult a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
+    sh:property [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStringValue ],
-        [ sh:class sphn:Quantity ;
+            sh:path sphn:hasQuantity ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
+            sh:path sphn:hasStringValue ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:260385009 ] [ sh:class snomed:10828004 ] [ sh:class snomed:373068000 ] ) ;
-            sh:path sphn:hasCode ],
+            sh:or ( [ sh:class sphn:ReferenceValue ] [ sh:class sphn:ReferenceRange ] ) ;
+            sh:path sphn:hasNumericalReference ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:ReferenceValue ] [ sh:class sphn:ReferenceRange ] ) ;
-            sh:path sphn:hasNumericalReference ] ;
+            sh:or ( [ sh:class snomed:10828004 ] [ sh:class snomed:260385009 ] [ sh:class snomed:373068000 ] ) ;
+            sh:path sphn:hasCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/260385009>, <http://snomed.info/id/10828004>, <http://snomed.info/id/373068000> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/10828004>, <http://snomed.info/id/260385009>, <http://snomed.info/id/373068000> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -6724,7 +6724,14 @@ constraints:sphnMicrobiologyBiomoleculePresenceResult_Warning_Naming a sh:NodeSh
 constraints:sphnMicrobiologyMicroscopyLabTest a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:LabAnalyzer ;
+    sh:property [ sh:class sphn:MicrobiologyMicroscopyResult ;
+            sh:minCount 1 ;
+            sh:path sphn:hasResult ],
+        [ sh:class snomed:37926009 ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStainingMethodCode ],
+        [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasTestKit ],
@@ -6735,49 +6742,42 @@ constraints:sphnMicrobiologyMicroscopyLabTest a sh:NodeShape ;
         [ sh:class snomed:117259009 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasCode ],
-        [ sh:class snomed:37926009 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStainingMethodCode ],
-        [ sh:class sphn:MicrobiologyMicroscopyResult ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ] ;
+            sh:path sphn:hasCode ] ;
     sh:targetClass sphn:MicrobiologyMicroscopyLabTest .
 
 constraints:sphnMicrobiologyMicroscopyLabTestEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:MicrobiologyMicroscopyLabTest ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasLabTest ],
+            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasSample ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:MicrobiologyMicroscopyLabTest ;
+            sh:minCount 1 ;
+            sh:path sphn:hasLabTest ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDateTime ],
-        [ sh:class sphn:SourceSystem ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasReportDateTime ],
-        [ sh:maxCount 1 ;
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
-            sh:path sphn:hasSample ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ] ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasSample, instances of sphn:TumorSpecimen are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -6804,12 +6804,13 @@ constraints:sphnMicrobiologyMicroscopyLabTestEvent_Warning_Naming a sh:NodeShape
 constraints:sphnMicrobiologyMicroscopyLabTest_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-MicrobiologyMicroscopyLabTest-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+                         SELECT ?this (?class as ?path) (?this as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             ?this rdf:type ?class .
+                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-MicrobiologyMicroscopyLabTest-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
@@ -6820,53 +6821,52 @@ constraints:sphnMicrobiologyMicroscopyLabTest_Warning_Naming a sh:NodeShape ;
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-MicrobiologyMicroscopyLabTest-.*$'" ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-                         SELECT ?this (?class as ?path) (?this as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this rdf:type ?class .
-                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-MicrobiologyMicroscopyLabTest-.*$"))
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:MicrobiologyMicroscopyLabTest .
 
 constraints:sphnMicrobiologyMicroscopyResult a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
+    sh:property [ sh:class sphn:MicrobiologyMicroscopyResult_cellMorphology ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:57176003 ] [ sh:class snomed:260413007 ] [ sh:class snomed:46998006 ] [ sh:class snomed:260396001 ] ) ;
+            sh:path sphn:hasCellMorphology ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:260413007 ] [ sh:class snomed:46998006 ] [ sh:class snomed:57176003 ] [ sh:class snomed:260396001 ] ) ;
             sh:path sphn:hasCellCountEstimateCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:or ( [ sh:class sphn:ReferenceValue ] [ sh:class sphn:ReferenceRange ] ) ;
             sh:path sphn:hasNumericalReference ],
-        [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:260385009 ] [ sh:class snomed:10828004 ] [ sh:class snomed:373068000 ] ) ;
-            sh:path sphn:hasStainingResultCode ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasStringValue ],
-        [ sh:class sphn:MicrobiologyMicroscopyResult_cellMorphology ;
+        [ sh:class sphn:MicrobiologyMicroscopyResult_cellOrganization ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCellMorphology ],
-        [ sh:class sphn:MicrobiologyMicroscopyResult_cellOrganization ;
+            sh:path sphn:hasCellOrganization ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:10828004 ] [ sh:class snomed:373068000 ] [ sh:class snomed:260385009 ] ) ;
+            sh:path sphn:hasStainingResultCode ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCellOrganization ] ;
+            sh:path sphn:hasQuantity ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCellCountEstimateCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCellCountEstimateCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/57176003>, <http://snomed.info/id/260413007>, <http://snomed.info/id/46998006>, <http://snomed.info/id/260396001> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/260413007>, <http://snomed.info/id/46998006>, <http://snomed.info/id/57176003>, <http://snomed.info/id/260396001> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
@@ -6875,7 +6875,7 @@ constraints:sphnMicrobiologyMicroscopyResult a sh:NodeShape ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStainingResultCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStainingResultCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/260385009>, <http://snomed.info/id/10828004>, <http://snomed.info/id/373068000> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/10828004>, <http://snomed.info/id/373068000>, <http://snomed.info/id/260385009> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -6891,14 +6891,6 @@ constraints:sphnMicrobiologyMicroscopyResult_Warning_Naming a sh:NodeShape ;
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStainingResultCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCellCountEstimateCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCellCountEstimateCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-MicrobiologyMicroscopyResult-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -6907,76 +6899,84 @@ constraints:sphnMicrobiologyMicroscopyResult_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-MicrobiologyMicroscopyResult-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCellCountEstimateCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCellCountEstimateCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:MicrobiologyMicroscopyResult .
 
 constraints:sphnMicrobiologyMicroscopyResult_cellMorphology a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:RodShaped sphn-individual:Other sphn-individual:Filamentous sphn-individual:Round sphn-individual:Ovoid sphn-individual:CurvedRodShaped sphn-individual:Elongated sphn-individual:Spiral ) ;
+    sh:property [ sh:in ( sphn-individual:Ovoid sphn-individual:Round sphn-individual:RodShaped sphn-individual:Other sphn-individual:Elongated sphn-individual:Filamentous sphn-individual:Spiral sphn-individual:CurvedRodShaped ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:MicrobiologyMicroscopyResult_cellMorphology .
 
 constraints:sphnMicrobiologyMicroscopyResult_cellOrganization a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:Multicellular sphn-individual:Unicellular sphn-individual:EntireCell ) ;
+    sh:property [ sh:in ( sphn-individual:Multicellular sphn-individual:EntireCell sphn-individual:Unicellular ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:MicrobiologyMicroscopyResult_cellOrganization .
 
 constraints:sphnMicroorganismIdentificationLabTest a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:MicroorganismIdentificationResult ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
-        [ sh:class snomed:19851009 ;
+    sh:property [ sh:class snomed:19851009 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasCode ],
         [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasTestKit ],
+            sh:path sphn:hasInstrument ],
         [ sh:class sphn:LabAnalyzer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasInstrument ] ;
+            sh:path sphn:hasTestKit ],
+        [ sh:class sphn:MicroorganismIdentificationResult ;
+            sh:minCount 1 ;
+            sh:path sphn:hasResult ] ;
     sh:targetClass sphn:MicroorganismIdentificationLabTest .
 
 constraints:sphnMicroorganismIdentificationLabTestEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+    sh:property [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDateTime ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
-        [ sh:class sphn:MicroorganismIdentificationLabTest ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasLabTest ],
+            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasSample ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:MicroorganismIdentificationLabTest ;
+            sh:minCount 1 ;
+            sh:path sphn:hasLabTest ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasReportDateTime ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
-            sh:path sphn:hasSample ] ;
+            sh:path sphn:hasReportDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasSample, instances of sphn:TumorSpecimen are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -7024,32 +7024,32 @@ constraints:sphnMicroorganismIdentificationLabTest_Warning_Naming a sh:NodeShape
 constraints:sphnMicroorganismIdentificationResult a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Quantity ;
+    sh:property [ sh:class sphn:Organism ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasTimeToPositivity ],
+            sh:path sphn:hasOrganism ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:2667000 ] [ sh:class snomed:373068000 ] [ sh:class snomed:52101004 ] ) ;
+            sh:path sphn:hasCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:or ( [ sh:class sphn:ReferenceValue ] [ sh:class sphn:ReferenceRange ] ) ;
             sh:path sphn:hasNumericalReference ],
-        [ sh:datatype xsd:string ;
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStringValue ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:2667000 ] [ sh:class snomed:52101004 ] [ sh:class snomed:373068000 ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:Organism ;
+            sh:path sphn:hasTimeToPositivity ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasOrganism ] ;
+            sh:path sphn:hasStringValue ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/2667000>, <http://snomed.info/id/52101004>, <http://snomed.info/id/373068000> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/2667000>, <http://snomed.info/id/373068000>, <http://snomed.info/id/52101004> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -7079,29 +7079,29 @@ constraints:sphnMicroorganismIdentificationResult_Warning_Naming a sh:NodeShape
 constraints:sphnNationality a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
-        [ sh:class sphn:Country ;
+    sh:property [ sh:class sphn:Country ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasAssociatedCountry ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasDataProvider ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:or ( [ sh:class snomed:19535007 ] [ sh:class snomed:255396000 ] ) ;
             sh:path sphn:hasAcquistionCode ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRecordDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAcquistionCode> as ?path) (?class as ?value)
@@ -7137,33 +7137,33 @@ constraints:sphnNationality_Warning_Naming a sh:NodeShape ;
 constraints:sphnNursingDiagnosis a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
-        [ sh:class sphn:SourceSystem ;
+    sh:property [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:Code ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:Age ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasSubjectAge ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:Code ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRecordDateTime ] ;
     sh:targetClass sphn:NursingDiagnosis .
 
 constraints:sphnNursingDiagnosis_Warning_Naming a sh:NodeShape ;
@@ -7182,18 +7182,26 @@ constraints:sphnNursingDiagnosis_Warning_Naming a sh:NodeShape ;
 constraints:sphnNutritionIntake a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:268472006 ] [ sh:class snomed:926364008 ] [ sh:class snomed:169741004 ] [ sh:class snomed:289002003 ] [ sh:class snomed:926365009 ] ) ;
-            sh:path sphn:hasModeCode ],
-        [ sh:class sphn:Quantity ;
+    sh:property [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEnergyQuantity ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:169741004 ] [ sh:class snomed:289002003 ] [ sh:class snomed:926365009 ] [ sh:class snomed:926364008 ] [ sh:class snomed:268472006 ] ) ;
+            sh:path sphn:hasModeCode ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
@@ -7201,43 +7209,43 @@ constraints:sphnNutritionIntake a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasEndDateTime ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasEnergyQuantity ],
         [ sh:class sphn:Substance ;
             sh:minCount 0 ;
             sh:path sphn:hasSubstance ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode> as ?path) (?class as ?value)
-                                                WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/268472006>, <http://snomed.info/id/926364008>, <http://snomed.info/id/169741004>, <http://snomed.info/id/289002003>, <http://snomed.info/id/926365009> )) .
-                                                    FILTER (?class NOT IN ( ?values ) ) .
-                                                    FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
-                                                }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
                     WHERE {
                         ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
                         ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
                         FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ] ;
+                    }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode> as ?path) (?class as ?value)
+                                                WHERE {
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/169741004>, <http://snomed.info/id/289002003>, <http://snomed.info/id/926365009>, <http://snomed.info/id/926364008>, <http://snomed.info/id/268472006> )) .
+                                                    FILTER (?class NOT IN ( ?values ) ) .
+                                                    FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
+                                                }""" ] ;
     sh:targetClass sphn:NutritionIntake .
 
 constraints:sphnNutritionIntake_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-NutritionIntake-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -7245,54 +7253,46 @@ constraints:sphnNutritionIntake_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-NutritionIntake-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasModeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:NutritionIntake .
 
 constraints:sphnOncologyDiagnosis a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasIncidenceDateTime ],
-        [ sh:class sphn:BodySite ;
+    sh:property [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasBodySite ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:Age ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasSubjectAge ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasIncidenceDateTime ],
         [ sh:class sphn:Code ;
             sh:minCount 1 ;
             sh:path sphn:hasCode ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRecordDateTime ] ;
     sh:targetClass sphn:OncologyDiagnosis .
 
 constraints:sphnOncologyDiagnosis_Warning_Naming a sh:NodeShape ;
@@ -7311,39 +7311,39 @@ constraints:sphnOncologyDiagnosis_Warning_Naming a sh:NodeShape ;
 constraints:sphnOncologySurgery a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
+    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
-        [ sh:class sphn:AdministrativeCase ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ],
         [ sh:class sphn:BodySite ;
             sh:minCount 0 ;
             sh:path sphn:hasBodySite ],
+        [ sh:class sphn:Intent ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasIntent ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasEndDateTime ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:Intent ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasIntent ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasAdministrativeCase ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -7412,10 +7412,11 @@ constraints:sphnOncologySurgery_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnOrganSupport a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasBodySite rdf:type sphn:hasIntent ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+    sh:ignoredProperties ( rdf:type sphn:hasIntent sphn:hasBodySite ) ;
+    sh:property [ sh:class sphn:Intent ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasIntent ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -7426,49 +7427,48 @@ constraints:sphnOrganSupport a sh:NodeShape ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:108241001 ] [ sh:class snomed:1222606000 ] [ sh:class snomed:1149092001 ] [ sh:class snomed:232957001 ] [ sh:class snomed:233573008 ] ) ;
+            sh:or ( [ sh:class snomed:1222606000 ] [ sh:class snomed:1149092001 ] [ sh:class snomed:233573008 ] [ sh:class snomed:232957001 ] [ sh:class snomed:108241001 ] ) ;
             sh:path sphn:hasCode ],
-        [ sh:class sphn:BodySite ;
-            sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:class snomed:399707004 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path ( sphn:hasIntent sphn:hasCode ) ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:64033007 ] [ sh:class snomed:10200004 ] [ sh:class snomed:80891009 ] [ sh:class snomed:39607008 ] ) ;
+            sh:or ( [ sh:class snomed:10200004 ] [ sh:class snomed:39607008 ] [ sh:class snomed:80891009 ] [ sh:class snomed:64033007 ] ) ;
             sh:path ( sphn:hasBodySite sphn:hasCode ) ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class snomed:399707004 ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:minCount 0 ;
+            sh:path ( sphn:hasIntent sphn:hasCode ) ],
+        [ sh:class sphn:BodySite ;
+            sh:minCount 0 ;
+            sh:path sphn:hasBodySite ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:Intent ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasIntent ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <https://biomedit.ch/rdf/sphn-schema/sphn#Intent> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/399707004> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/399707004> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <https://biomedit.ch/rdf/sphn-schema/sphn#Intent> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
@@ -7485,6 +7485,15 @@ constraints:sphnOrganSupport a sh:NodeShape ;
 constraints:sphnOrganSupport_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-OrganSupport-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+                         SELECT ?this (?class as ?path) (?this as ?value)
+                         WHERE {
+                             ?this rdf:type ?class .
+                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-OrganSupport-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasBodySite>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
@@ -7507,15 +7516,6 @@ constraints:sphnOrganSupport_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasIntent>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-OrganSupport-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-                         SELECT ?this (?class as ?path) (?this as ?value)
-                         WHERE {
-                             ?this rdf:type ?class .
-                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-OrganSupport-.*$"))
                              }""" ] ;
     sh:targetClass sphn:OrganSupport .
 
@@ -7524,7 +7524,7 @@ constraints:sphnOrganism a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:410607006 ] ) ;
+            sh:or ( [ sh:class snomed:410607006 ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ] ;
     sh:targetClass sphn:Organism .
 
@@ -7544,90 +7544,98 @@ constraints:sphnOrganism_Warning_Naming a sh:NodeShape ;
 constraints:sphnOxygenSaturation a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasQuantity rdf:type ) ;
-    sh:property [ sh:class sphn:TimeSeriesDataFile ;
+    sh:property [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class ucum:percent ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDataFile ],
+            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasQuantity ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
-        [ sh:class ucum:percent ;
+        [ sh:class sphn:TimeSeriesDataFile ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ] ;
+            sh:path sphn:hasDataFile ] ;
     sh:targetClass sphn:OxygenSaturation .
 
 constraints:sphnOxygenSaturationMeasurement a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Performer ;
+    sh:property [ sh:class sphn:OxygenSaturation ;
+            sh:minCount 1 ;
+            sh:path sphn:hasResult ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class snomed:128927009 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasMethodCode ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:BodySite ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasBodySite ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:OxygenSaturation ;
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasResult ],
-        [ sh:class snomed:128927009 ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasMethodCode ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:MedicalDevice ] [ sh:class sphn:Implant ] ) ;
+            sh:or ( [ sh:class sphn:Implant ] [ sh:class sphn:MedicalDevice ] ) ;
             sh:path sphn:hasMedicalDevice ],
-        [ sh:class sphn:BodySite ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ] ;
+            sh:path sphn:hasPerformer ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer are not allowed" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
-                             FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>))
-                         }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
                     WHERE {
                         ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
                         ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
                         FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ] ;
+                    }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer are not allowed" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
+                             FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>))
+                         }""" ] ;
     sh:targetClass sphn:OxygenSaturationMeasurement .
 
 constraints:sphnOxygenSaturationMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-OxygenSaturationMeasurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -7635,14 +7643,6 @@ constraints:sphnOxygenSaturationMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-OxygenSaturationMeasurement-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:OxygenSaturationMeasurement .
 
@@ -7671,14 +7671,6 @@ constraints:sphnPerformer a sh:NodeShape ;
 constraints:sphnPerformer_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Performer-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -7686,6 +7678,14 @@ constraints:sphnPerformer_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Performer-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:Performer .
 
@@ -7694,7 +7694,7 @@ constraints:sphnPharmaceuticalDoseForm a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:736542009 ] ) ;
+            sh:or ( [ sh:class snomed:736542009 ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ] ;
     sh:targetClass sphn:PharmaceuticalDoseForm .
 
@@ -7744,41 +7744,41 @@ constraints:sphnPhysiologicState_Warning_Naming a sh:NodeShape ;
 constraints:sphnProblemCondition a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
+    sh:property [ sh:class snomed:307152002 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStringValue ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:AdministrativeCase ;
+            sh:path sphn:hasRelativeTemporalityCode ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasStringValue ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class snomed:307152002 ;
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRelativeTemporalityCode ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
+            sh:path sphn:hasOnsetDateTime ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasOnsetDateTime ] ;
+            sh:path sphn:hasRecordDateTime ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:targetClass sphn:ProblemCondition .
 
 constraints:sphnProblemCondition_Warning_Codes a sh:NodeShape ;
@@ -7827,6 +7827,14 @@ constraints:sphnProblemCondition_Warning_Codes a sh:NodeShape ;
 constraints:sphnProblemCondition_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasRelativeTemporalityCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasRelativeTemporalityCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-ProblemCondition-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -7834,14 +7842,6 @@ constraints:sphnProblemCondition_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-ProblemCondition-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasRelativeTemporalityCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasRelativeTemporalityCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:ProblemCondition .
 
@@ -7854,7 +7854,7 @@ constraints:sphnProtein a sh:NodeShape ;
             sh:path sphn:hasOrganism ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ] ;
     sh:targetClass sphn:Protein .
 
@@ -7927,7 +7927,7 @@ constraints:sphnQualityControlMetric a sh:NodeShape ;
             sh:path sphn:hasQuantity ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ] ;
     sh:targetClass sphn:QualityControlMetric .
 
@@ -7990,14 +7990,14 @@ constraints:sphnQualityControlMetric_Warning_Naming a sh:NodeShape ;
 constraints:sphnQuantity a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:datatype xsd:double ] [ sh:datatype xsd:string ] ) ;
-            sh:path sphn:hasValue ],
-        [ sh:class sphn:Comparator ;
+    sh:property [ sh:class sphn:Comparator ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasComparator ],
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:datatype xsd:double ] [ sh:datatype xsd:string ] ) ;
+            sh:path sphn:hasValue ],
         [ sh:class sphn:Unit ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -8020,81 +8020,73 @@ constraints:sphnQuantity_Warning_Naming a sh:NodeShape ;
 constraints:sphnRadiotherapyProcedure a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasRadiationQuantity rdf:type ) ;
-    sh:property [ sh:class sphn:AdministrativeCase ;
+    sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasEndDateTime ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:minCount 0 ;
+            sh:path sphn:hasRadiationQuantity ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class ucum:mCi ] [ sh:class ucum:MBq ] [ sh:class ucum:cGy ] [ sh:class ucum:Gy ] ) ;
-            sh:path ( sphn:hasRadiationQuantity sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:Quantity ;
+        [ sh:minCount 1 ;
+            sh:or ( [ sh:class snomed:33195004 ] [ sh:class snomed:152198000 ] [ sh:class snomed:74964007 ] [ sh:class snomed:78080008 ] [ sh:class snomed:395096001 ] [ sh:class snomed:168524008 ] [ sh:class snomed:399315003 ] [ sh:class snomed:115959002 ] ) ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:Intent ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasFractionsNumber ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasIntent ],
         [ sh:class sphn:BodySite ;
             sh:minCount 0 ;
             sh:path sphn:hasBodySite ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
-        [ sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:168524008 ] [ sh:class snomed:399315003 ] [ sh:class snomed:115959002 ] [ sh:class snomed:152198000 ] [ sh:class snomed:74964007 ] [ sh:class snomed:78080008 ] [ sh:class snomed:33195004 ] [ sh:class snomed:395096001 ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:Intent ;
+            sh:minCount 1 ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasIntent ],
-        [ sh:class sphn:Quantity ;
+            sh:path sphn:hasFractionsNumber ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRadiationQuantity ] ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class ucum:cGy ] [ sh:class ucum:MBq ] [ sh:class ucum:mCi ] [ sh:class ucum:Gy ] ) ;
+            sh:path ( sphn:hasRadiationQuantity sphn:hasUnit sphn:hasCode ) ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
-                    WHERE {
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
-                        FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/168524008>, <http://snomed.info/id/399315003>, <http://snomed.info/id/115959002>, <http://snomed.info/id/152198000>, <http://snomed.info/id/74964007>, <http://snomed.info/id/78080008>, <http://snomed.info/id/33195004>, <http://snomed.info/id/395096001> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/33195004>, <http://snomed.info/id/152198000>, <http://snomed.info/id/74964007>, <http://snomed.info/id/78080008>, <http://snomed.info/id/395096001>, <http://snomed.info/id/168524008>, <http://snomed.info/id/399315003>, <http://snomed.info/id/115959002> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
-                                                }""" ] ;
+                                                }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
+                    WHERE {
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
+                        FILTER (?hasStartDateTime > ?hasEndDateTime)
+                    }""" ] ;
     sh:targetClass sphn:RadiotherapyProcedure .
 
 constraints:sphnRadiotherapyProcedure_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-RadiotherapyProcedure-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -8102,34 +8094,42 @@ constraints:sphnRadiotherapyProcedure_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-RadiotherapyProcedure-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:RadiotherapyProcedure .
 
 constraints:sphnReferenceInterpretation a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStandardGuideline ],
-        [ sh:class sphn:ReferenceInterpretationResult ;
+    sh:property [ sh:class sphn:ReferenceInterpretationResult ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasOutput ],
+        [ sh:datatype xsd:string ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStandardGuideline ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDateTime ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Circumference ] [ sh:class sphn:AssessmentResult ] [ sh:class sphn:CardiacOutput ] [ sh:class sphn:ReferenceInterpretationResult ] [ sh:class sphn:LabResult ] [ sh:class sphn:BodyWeight ] [ sh:class sphn:BodyTemperature ] [ sh:class sphn:HeartRate ] [ sh:class sphn:BodyHeight ] [ sh:class sphn:TumorStageAssessmentResult ] [ sh:class sphn:Result ] [ sh:class sphn:RespiratoryRate ] [ sh:class sphn:BloodPressure ] [ sh:class sphn:OxygenSaturation ] ) ;
+            sh:or ( [ sh:class sphn:Result ] [ sh:class sphn:Circumference ] [ sh:class sphn:AssessmentResult ] [ sh:class sphn:RespiratoryRate ] [ sh:class sphn:OxygenSaturation ] [ sh:class sphn:HeartRate ] [ sh:class sphn:BloodPressure ] [ sh:class sphn:LabResult ] [ sh:class sphn:CardiacOutput ] [ sh:class sphn:TumorStageAssessmentResult ] [ sh:class sphn:ReferenceInterpretationResult ] [ sh:class sphn:BodyTemperature ] [ sh:class sphn:BodyHeight ] [ sh:class sphn:BodyWeight ] ) ;
             sh:path sphn:hasInput ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasInput, instances of sphn:TumorGradeAssessmentResult, sphn:⁠TumorStageAssessmentResult, sphn:VitalStatus are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -8152,6 +8152,14 @@ constraints:sphnReferenceInterpretationResult a sh:NodeShape ;
 constraints:sphnReferenceInterpretationResult_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-ReferenceInterpretationResult-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -8159,14 +8167,6 @@ constraints:sphnReferenceInterpretationResult_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-ReferenceInterpretationResult-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:ReferenceInterpretationResult .
 
@@ -8214,7 +8214,7 @@ constraints:sphnReferenceSequence a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ] ;
     sh:targetClass sphn:ReferenceSequence .
 
@@ -8299,26 +8299,26 @@ constraints:sphnReferenceValue_Warning_Naming a sh:NodeShape ;
 constraints:sphnRespiratoryRate a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type sphn:hasDataDetermination ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
-        [ sh:maxCount 1 ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:263760002 ] [ sh:class snomed:258104002 ] [ sh:class snomed:87982008 ] [ sh:class snomed:258090004 ] ) ;
+            sh:or ( [ sh:class snomed:258104002 ] [ sh:class snomed:87982008 ] [ sh:class snomed:263760002 ] [ sh:class snomed:258090004 ] ) ;
             sh:path ( sphn:hasDataDetermination sphn:hasMethodCode ) ],
-        [ sh:class sphn:Quantity ;
+        [ sh:class sphn:DataDetermination ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
+            sh:path sphn:hasDataDetermination ],
         [ sh:class sphn:TimeSeriesDataFile ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDataFile ],
-        [ sh:class sphn:DataDetermination ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDataDetermination ] ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasQuantity ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDataDetermination> as ?path) (?class as ?value)
@@ -8333,7 +8333,7 @@ constraints:sphnRespiratoryRate a sh:NodeShape ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDataDetermination>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDataDetermination>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/263760002>, <http://snomed.info/id/258104002>, <http://snomed.info/id/87982008>, <http://snomed.info/id/258090004> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/258104002>, <http://snomed.info/id/87982008>, <http://snomed.info/id/263760002>, <http://snomed.info/id/258090004> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -8342,21 +8342,28 @@ constraints:sphnRespiratoryRate a sh:NodeShape ;
 constraints:sphnRespiratoryRateMeasurement a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class snomed:128927009 ;
+    sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasMethodCode ],
-        [ sh:class sphn:RespiratoryRate ;
-            sh:minCount 1 ;
-            sh:path sphn:hasResult ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class snomed:128927009 ;
             sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasMethodCode ],
+        [ sh:class sphn:RespiratoryRate ;
             sh:minCount 1 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:path sphn:hasResult ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -8367,40 +8374,41 @@ constraints:sphnRespiratoryRateMeasurement a sh:NodeShape ;
             sh:path sphn:hasMedicalDevice ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
-                    WHERE {
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
-                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
-                        FILTER (?hasStartDateTime > ?hasEndDateTime)
-                    }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasMedicalDevice, instances of sphn:AccessDevice, sphn:LabAnalyzer, sphn:Implant are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice> as ?path) (?class as ?value)
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMedicalDevice>/rdf:type ?class.
                              FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#AccessDevice>, <https://biomedit.ch/rdf/sphn-schema/sphn#LabAnalyzer>, <https://biomedit.ch/rdf/sphn-schema/sphn#Implant>))
-                         }""" ] ;
+                         }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
+                    WHERE {
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> ?hasStartDateTime .
+                        ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasEndDateTime> ?hasEndDateTime .
+                        FILTER (?hasStartDateTime > ?hasEndDateTime)
+                    }""" ] ;
     sh:targetClass sphn:RespiratoryRateMeasurement .
 
 constraints:sphnRespiratoryRateMeasurement_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-RespiratoryRateMeasurement-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -8408,20 +8416,20 @@ constraints:sphnRespiratoryRateMeasurement_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-RespiratoryRateMeasurement-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:RespiratoryRateMeasurement .
 
 constraints:sphnRespiratoryRate_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasDataDetermination>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode>" as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDataDetermination>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-RespiratoryRate-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -8429,42 +8437,34 @@ constraints:sphnRespiratoryRate_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-RespiratoryRate-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasDataDetermination>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode>" as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDataDetermination>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasMethodCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:RespiratoryRate .
 
 constraints:sphnResuscitationDirective a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
+    sh:property [ sh:class snomed:365870005 ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:SourceSystem ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:datatype xsd:dateTime ;
             sh:minCount 0 ;
             sh:path sphn:hasRecordDateTime ],
-        [ sh:class snomed:365870005 ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasCode ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ] ;
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:targetClass sphn:ResuscitationDirective .
 
 constraints:sphnResuscitationDirective_Warning_Naming a sh:NodeShape ;
@@ -8491,45 +8491,45 @@ constraints:sphnResuscitationDirective_Warning_Naming a sh:NodeShape ;
 constraints:sphnSample a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Sample_primaryContainer ;
-            sh:maxCount 1 ;
+    sh:property [ sh:class snomed:123038009 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPrimaryContainer ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:BodySite ;
+            sh:path sphn:hasMaterialTypeCode ],
+        [ sh:datatype xsd:string ;
+            sh:minCount 0 ;
+            sh:path sphn:hasIdentifier ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:datatype xsd:anyURI ;
+            sh:path sphn:hasSharedIdentifier ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class snomed:123038009 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasMaterialTypeCode ],
-        [ sh:datatype xsd:anyURI ;
-            sh:path sphn:hasSharedIdentifier ],
         [ sh:class sphn:Sample_fixationType ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasFixationType ],
+        [ sh:class sphn:Sample_primaryContainer ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasPrimaryContainer ],
+        [ sh:class sphn:BodySite ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasBodySite ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasCollectionDateTime ],
-        [ sh:datatype xsd:string ;
-            sh:minCount 0 ;
-            sh:path sphn:hasIdentifier ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
                 WHERE {
@@ -8545,44 +8545,44 @@ constraints:sphnSample a sh:NodeShape ;
 constraints:sphnSampleProcessing a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:StandardOperatingProcedure ;
-            sh:maxCount 1 ;
+    sh:property [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:TumorSpecimen ] [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasInput ],
+        [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStandardOperatingProcedure ],
+            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
+            sh:path sphn:hasOutput ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:StandardOperatingProcedure ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:maxCount 1 ;
+            sh:path sphn:hasStandardOperatingProcedure ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
+            sh:path sphn:hasStartDateTime ],
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:SampleProcessing ] [ sh:class sphn:LibraryPreparation ] ) ;
+            sh:path sphn:hasPredecessor ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] ) ;
-            sh:path sphn:hasOutput ],
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:SampleProcessing ] [ sh:class sphn:LibraryPreparation ] ) ;
-            sh:path sphn:hasPredecessor ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Sample ] [ sh:class sphn:Isolate ] [ sh:class sphn:TumorSpecimen ] ) ;
-            sh:path sphn:hasInput ],
         [ sh:class sphn:QualityControlMetric ;
             sh:minCount 0 ;
             sh:path sphn:hasQualityControlMetric ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ] ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:minCount 0 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasOutput, instances of sphn:TumorSpecimen are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -8682,14 +8682,6 @@ constraints:sphnSampleProcessing_Warning_Naming a sh:NodeShape ;
 constraints:sphnSample_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMaterialTypeCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMaterialTypeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Sample-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -8697,6 +8689,14 @@ constraints:sphnSample_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-Sample-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasMaterialTypeCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasMaterialTypeCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:target [ a sh:SPARQLTarget ;
             sh:select """SELECT ?this
@@ -8713,14 +8713,14 @@ constraints:sphnSample_Warning_Naming a sh:NodeShape ;
 constraints:sphnSample_fixationType a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:AllprotectTissueReagent sphn-individual:Other sphn-individual:OptimumCuttingTemperatureMedium sphn-individual:NonaldehydeWithAceticAcid sphn-individual:HeatStabilization sphn-individual:NonaldehydeBasedWithoutAceticAcid sphn-individual:SnapFreezing sphn-individual:VacuumTechnologyStabilization sphn-individual:NonbufferedFormalin sphn-individual:AlcoholBased sphn-individual:NeutralBufferedFormalin sphn-individual:PAXgeneTissue sphn-individual:AldehydeBased sphn-individual:RNALater ) ;
+    sh:property [ sh:in ( sphn-individual:VacuumTechnologyStabilization sphn-individual:RNALater sphn-individual:NonaldehydeWithAceticAcid sphn-individual:NeutralBufferedFormalin sphn-individual:OptimumCuttingTemperatureMedium sphn-individual:HeatStabilization sphn-individual:AldehydeBased sphn-individual:AllprotectTissueReagent sphn-individual:SnapFreezing sphn-individual:PAXgeneTissue sphn-individual:NonbufferedFormalin sphn-individual:AlcoholBased sphn-individual:Other sphn-individual:NonaldehydeBasedWithoutAceticAcid ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:Sample_fixationType .
 
 constraints:sphnSample_primaryContainer a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:CellPreparationTubeCitrate sphn-individual:EDTAAndGel sphn-individual:S8820ProteaseInhibitorTabletsOrEquivalent sphn-individual:Other sphn-individual:SodiumFluoridePotassiumOxalate sphn-individual:PAXgeneBloodDNA sphn-individual:ChemicalAdditivesStabilizers sphn-individual:ProteaseInhibitors sphn-individual:Hirudin sphn-individual:PAXgeneBloodRNAplus sphn-individual:CellPreparationTubeHeparin sphn-individual:PolyethyleneTubeSterile sphn-individual:PhysicalFiltrationSystem sphn-individual:SodiumEDTA sphn-individual:AcidCitrateDextrose sphn-individual:TempusTube sphn-individual:PotassiumEDTA sphn-individual:PolypropyleneTubeSterile sphn-individual:LithiumHeparin sphn-individual:LithiumHeparinAndRubberPlug sphn-individual:LithiumHeparinAndGel sphn-individual:SerumSeparatorTubeWithClotActivator sphn-individual:SodiumCitrate sphn-individual:PAXgeneBoneMarrowRNA sphn-individual:SerumTubeWithoutClotActivator sphn-individual:NonAldehydeBasedStabilizerForCellFreeNucleicAcids sphn-individual:TraceElementsTube sphn-individual:Glass sphn-individual:StoolCollectionContainerWithDNAStabilizer sphn-individual:CitratePhosphateDextrose sphn-individual:AldehydeBasedStabilizerForCTCs sphn-individual:OrageneCollectionContainerOrEquivalent sphn-individual:SodiumHeparin sphn-individual:RNALater ) ;
+    sh:property [ sh:in ( sphn-individual:EDTAAndGel sphn-individual:RNALater sphn-individual:StoolCollectionContainerWithDNAStabilizer sphn-individual:SodiumCitrate sphn-individual:S8820ProteaseInhibitorTabletsOrEquivalent sphn-individual:CellPreparationTubeCitrate sphn-individual:SerumTubeWithoutClotActivator sphn-individual:AcidCitrateDextrose sphn-individual:SodiumEDTA sphn-individual:PAXgeneBloodRNAplus sphn-individual:TraceElementsTube sphn-individual:TempusTube sphn-individual:PolyethyleneTubeSterile sphn-individual:ProteaseInhibitors sphn-individual:NonAldehydeBasedStabilizerForCellFreeNucleicAcids sphn-individual:OrageneCollectionContainerOrEquivalent sphn-individual:AldehydeBasedStabilizerForCTCs sphn-individual:SodiumHeparin sphn-individual:PhysicalFiltrationSystem sphn-individual:PAXgeneBloodDNA sphn-individual:Glass sphn-individual:Other sphn-individual:PAXgeneBoneMarrowRNA sphn-individual:LithiumHeparinAndRubberPlug sphn-individual:PotassiumEDTA sphn-individual:SodiumFluoridePotassiumOxalate sphn-individual:LithiumHeparinAndGel sphn-individual:CellPreparationTubeHeparin sphn-individual:PolypropyleneTubeSterile sphn-individual:Hirudin sphn-individual:SerumSeparatorTubeWithClotActivator sphn-individual:ChemicalAdditivesStabilizers sphn-individual:LithiumHeparin sphn-individual:CitratePhosphateDextrose ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:Sample_primaryContainer .
 
@@ -8731,28 +8731,28 @@ constraints:sphnSemanticMapping a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasMethodCode ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:SemanticMapping_purpose ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDateTime ],
+            sh:path sphn:hasPurpose ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:SourceData ;
             sh:minCount 0 ;
             sh:path sphn:hasSourceData ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasOutputCode ],
-        [ sh:class sphn:SemanticMapping_purpose ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPurpose ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasDateTime ] ;
     sh:targetClass sphn:SemanticMapping .
 
 constraints:sphnSemanticMapping_Warning_Codes a sh:NodeShape ;
@@ -8814,59 +8814,59 @@ constraints:sphnSemanticMapping_Warning_Naming a sh:NodeShape ;
 constraints:sphnSemanticMapping_purpose a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:PatientCare sphn-individual:Billing sphn-individual:QualityControl sphn-individual:Research ) ;
+    sh:property [ sh:in ( sphn-individual:Billing sphn-individual:QualityControl sphn-individual:PatientCare sphn-individual:Research ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:SemanticMapping_purpose .
 
 constraints:sphnSequencingAnalysis a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:TimeSeriesDataFile ] [ sh:class sphn:DataFile ] ) ;
-            sh:path sphn:hasOutput ],
-        [ sh:minCount 0 ;
+    sh:property [ sh:minCount 0 ;
             sh:or ( [ sh:class sphn:Assay ] [ sh:class sphn:DataProcessing ] ) ;
             sh:path sphn:hasPredecessor ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:maxCount 1 ;
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class edam:operation_2945 ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
+            sh:path sphn:hasDataProvider ],
+        [ sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:DataFile ] [ sh:class sphn:TimeSeriesDataFile ] ) ;
+            sh:path sphn:hasOutput ],
         [ sh:class sphn:QualityControlMetric ;
             sh:minCount 0 ;
             sh:path sphn:hasQualityControlMetric ],
-        [ sh:class sphn:ReferenceSequence ;
+        [ sh:class sphn:Software ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasReferenceSequence ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:minCount 0 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasSoftware ],
         [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:TimeSeriesDataFile ] [ sh:class sphn:DataFile ] ) ;
+            sh:or ( [ sh:class sphn:DataFile ] [ sh:class sphn:TimeSeriesDataFile ] ) ;
             sh:path sphn:hasInput ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:ReferenceSequence ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasReferenceSequence ],
         [ sh:class sphn:StandardOperatingProcedure ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasStandardOperatingProcedure ],
-        [ sh:class sphn:Software ;
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class edam:operation_2945 ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSoftware ] ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:minCount 0 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:targetClass sphn:SequencingAnalysis .
 
 constraints:sphnSequencingAnalysis_Warning_Codes a sh:NodeShape ;
@@ -8928,78 +8928,78 @@ constraints:sphnSequencingAnalysis_Warning_Naming a sh:NodeShape ;
 constraints:sphnSequencingAssay a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
+    sh:property [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] [ sh:class obi:0000070 ] [ sh:class efo:0001455 ] ) ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:StandardOperatingProcedure ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasIdentifier ],
+            sh:path sphn:hasStandardOperatingProcedure ],
         [ sh:class sphn:SequencingRun ;
             sh:minCount 0 ;
             sh:path sphn:hasSequencingRun ],
-        [ sh:class sphn:SequencingInstrument ;
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasSequencingInstrument ],
-        [ sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:SampleProcessing ] [ sh:class sphn:LibraryPreparation ] ) ;
-            sh:path sphn:hasPredecessor ],
-        [ sh:class sphn:StandardOperatingProcedure ;
+            sh:path sphn:hasIdentifier ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStandardOperatingProcedure ],
+            sh:path sphn:hasIntendedReadLength ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:Sample ;
             sh:minCount 0 ;
             sh:path sphn:hasSample ],
+        [ sh:class sphn:LibraryPreparation ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasLibraryPreparation ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStartDateTime ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:minCount 0 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
+        [ sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:SampleProcessing ] [ sh:class sphn:LibraryPreparation ] ) ;
+            sh:path sphn:hasPredecessor ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:minCount 0 ;
-            sh:path sphn:hasIntendedReadDepth ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:DataFile ;
             sh:minCount 0 ;
             sh:path sphn:hasDataFile ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class efo:0001455 ] [ sh:class obi:0000070 ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:Quantity ;
+        [ sh:class sphn:SequencingInstrument ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasIntendedReadLength ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:LibraryPreparation ;
+            sh:path sphn:hasSequencingInstrument ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasLibraryPreparation ],
+            sh:path sphn:hasIntendedReadDepth ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:datatype xsd:dateTime ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ] ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "For sphn:hasDataFile, instances of sphn:TimeSeriesDataFile are not allowed" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDataFile> as ?path) (?class as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDataFile>/rdf:type ?class.
-                             FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#TimeSeriesDataFile>))
-                         }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasSample, instances of sphn:TumorSpecimen, sphn:Isolate are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasSample> as ?path) (?class as ?value)
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasSample>/rdf:type ?class.
                              FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#TumorSpecimen>, <https://biomedit.ch/rdf/sphn-schema/sphn#Isolate>))
+                         }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "For sphn:hasDataFile, instances of sphn:TimeSeriesDataFile are not allowed" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDataFile> as ?path) (?class as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDataFile>/rdf:type ?class.
+                             FILTER(?class IN (<https://biomedit.ch/rdf/sphn-schema/sphn#TimeSeriesDataFile>))
                          }""" ] ;
     sh:targetClass sphn:SequencingAssay .
 
@@ -9062,14 +9062,14 @@ constraints:sphnSequencingAssay_Warning_Naming a sh:NodeShape ;
 constraints:sphnSequencingInstrument a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class obi:0400103 ] [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] [ sh:class efo:0003739 ] ) ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class efo:0003739 ] [ sh:class obi:0400103 ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ] ;
     sh:targetClass sphn:SequencingInstrument .
 
 constraints:sphnSequencingInstrument_Warning_Codes a sh:NodeShape ;
@@ -9135,10 +9135,6 @@ constraints:sphnSequencingRun a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:Quantity ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAverageReadLength ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -9146,14 +9142,11 @@ constraints:sphnSequencingRun a sh:NodeShape ;
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasMeanReadDepth ],
+            sh:path sphn:hasAverageInsertSize ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasIdentifier ],
-        [ sh:class sphn:QualityControlMetric ;
-            sh:minCount 1 ;
-            sh:path sphn:hasQualityControlMetric ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -9161,10 +9154,17 @@ constraints:sphnSequencingRun a sh:NodeShape ;
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAverageInsertSize ],
+            sh:path sphn:hasMeanReadDepth ],
         [ sh:class sphn:DataFile ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataFile ] ;
+            sh:path sphn:hasDataFile ],
+        [ sh:class sphn:QualityControlMetric ;
+            sh:minCount 1 ;
+            sh:path sphn:hasQualityControlMetric ],
+        [ sh:class sphn:Quantity ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAverageReadLength ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "For sphn:hasDataFile, instances of sphn:TimeSeriesDataFile are not allowed" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -9191,7 +9191,11 @@ constraints:sphnSequencingRun_Warning_Naming a sh:NodeShape ;
 constraints:sphnSingleNucleotideVariation a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:datatype xsd:string ;
+    sh:property [ sh:class sphn:ChromosomalLocation ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasChromosomalLocation ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasAlternateAllele ],
@@ -9199,10 +9203,6 @@ constraints:sphnSingleNucleotideVariation a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasReferenceAllele ],
-        [ sh:class sphn:ChromosomalLocation ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasChromosomalLocation ],
         [ sh:class sphn:GenomicPosition ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -9225,14 +9225,10 @@ constraints:sphnSingleNucleotideVariation_Warning_Naming a sh:NodeShape ;
 constraints:sphnSoftware a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
+    sh:property [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDescription ],
+            sh:path sphn:hasVersion ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -9240,11 +9236,15 @@ constraints:sphnSoftware a sh:NodeShape ;
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasVersion ],
-        [ sh:datatype xsd:string ;
+            sh:path sphn:hasName ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasName ] ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDescription ] ;
     sh:targetClass sphn:Software .
 
 constraints:sphnSoftware_Warning_Naming a sh:NodeShape ;
@@ -9266,14 +9266,14 @@ constraints:sphnSourceData a sh:NodeShape ;
     sh:property [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStringValue ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ] ;
+            sh:path sphn:hasStringValue ] ;
     sh:targetClass sphn:SourceData .
 
 constraints:sphnSourceData_Warning_Codes a sh:NodeShape ;
@@ -9335,26 +9335,26 @@ constraints:sphnSourceData_Warning_Naming a sh:NodeShape ;
 constraints:sphnSourceSystem a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem_category ;
+    sh:property [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasName ],
+        [ sh:class sphn:SourceSystem_purpose ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCategory ],
+            sh:path sphn:hasPurpose ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasName ],
         [ sh:class sphn:HealthcarePrimaryInformationSystem ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasPrimarySystem ],
-        [ sh:class sphn:SourceSystem_purpose ;
+        [ sh:class sphn:SourceSystem_category ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPurpose ] ;
+            sh:path sphn:hasCategory ] ;
     sh:targetClass sphn:SourceSystem .
 
 constraints:sphnSourceSystem_Warning_Naming a sh:NodeShape ;
@@ -9373,14 +9373,14 @@ constraints:sphnSourceSystem_Warning_Naming a sh:NodeShape ;
 constraints:sphnSourceSystem_category a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:HealthcareInformationSystem sphn-individual:OMICSFacility sphn-individual:ResearchLaboratory sphn-individual:CaseReportForm sphn-individual:ClinicalDataPlatform sphn-individual:Cohort sphn-individual:Biobank sphn-individual:ClinicalRegistry sphn-individual:DataRepository ) ;
+    sh:property [ sh:in ( sphn-individual:CaseReportForm sphn-individual:ClinicalDataPlatform sphn-individual:OMICSFacility sphn-individual:ResearchLaboratory sphn-individual:DataRepository sphn-individual:ClinicalRegistry sphn-individual:Biobank sphn-individual:Cohort sphn-individual:HealthcareInformationSystem ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:SourceSystem_category .
 
 constraints:sphnSourceSystem_purpose a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:PatientCare sphn-individual:Billing sphn-individual:QualityControl sphn-individual:Research ) ;
+    sh:property [ sh:in ( sphn-individual:Billing sphn-individual:QualityControl sphn-individual:PatientCare sphn-individual:Research ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:SourceSystem_purpose .
 
@@ -9395,14 +9395,14 @@ constraints:sphnStandardOperatingProcedure a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:datatype xsd:string ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasName ],
         [ sh:class sphn:DataFile ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasDataFile ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasName ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -9435,14 +9435,14 @@ constraints:sphnSubjectPseudoIdentifier a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:datatype xsd:anyURI ;
             sh:path sphn:hasSharedIdentifier ],
-        [ sh:datatype xsd:string ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasIdentifier ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ] ;
+            sh:path sphn:hasIdentifier ] ;
     sh:targetClass sphn:SubjectPseudoIdentifier .
 
 constraints:sphnSubjectPseudoIdentifier_Warning_Naming a sh:NodeShape ;
@@ -9461,9 +9461,12 @@ constraints:sphnSubjectPseudoIdentifier_Warning_Naming a sh:NodeShape ;
 constraints:sphnSubstance a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:maxCount 1 ;
+    sh:property [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class snomed:105590001 ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class snomed:105590001 ] [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
@@ -9472,10 +9475,7 @@ constraints:sphnSubstance a sh:NodeShape ;
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasQuantity ] ;
     sh:targetClass sphn:Substance .
 
 constraints:sphnSubstance_Warning_Codes a sh:NodeShape ;
@@ -9537,14 +9537,14 @@ constraints:sphnSubstance_Warning_Naming a sh:NodeShape ;
 constraints:sphnSwissSocioEconomicPosition a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( sphn:hasDistance rdf:type ) ;
-    sh:property [ sh:class ucum:m ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path ( sphn:hasDistance sphn:hasUnit sphn:hasCode ) ],
-        [ sh:maxCount 1 ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:or ( [ sh:datatype xsd:double ] [ sh:datatype xsd:string ] ) ;
             sh:path sphn:hasValue ],
+        [ sh:class ucum:m ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path ( sphn:hasDistance sphn:hasUnit sphn:hasCode ) ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -9596,7 +9596,7 @@ constraints:sphnTherapeuticArea_Warning_Naming a sh:NodeShape ;
 constraints:sphnTherapeuticArea_specialtyName a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type rdfs:label ) ;
-    sh:property [ sh:in ( sphn-individual:RadioOncologyAndRadiotherapy sphn-individual:Radiology sphn-individual:Neuropsychology sphn-individual:DermatologyAndVenereology sphn-individual:Cardiology sphn-individual:GeriatricMedicine sphn-individual:Otorhinolaryngology sphn-individual:Other sphn-individual:PreventionAndPublicHealth sphn-individual:Neurosurgery sphn-individual:Surgery sphn-individual:GynaecologyAndObstetrics sphn-individual:Angiology sphn-individual:PharmaceuticalMedicine sphn-individual:OralSurgery sphn-individual:VascularSurgery sphn-individual:HealthPsychology sphn-individual:ClinicalPharmacologyAndToxicology sphn-individual:HandSurgery sphn-individual:Psychotherapy sphn-individual:GeneralMedicine sphn-individual:CommunityPharmacy sphn-individual:OrthopaedicSurgeryAndTraumatologyOfTheLocomotorApparatus sphn-individual:TropicalAndTravelMedicine sphn-individual:OralAndMaxillofacialSurgery sphn-individual:Paediatrics sphn-individual:ChildAndAdolescentPsychology sphn-individual:ReconstructiveDentistry sphn-individual:Periodontics sphn-individual:Rheumatology sphn-individual:ForensicMedicine sphn-individual:ThoracicSurgery sphn-individual:PhysicalMedicineAndRehabilitation sphn-individual:Pathology sphn-individual:HospitalPharmacy sphn-individual:IntensiveCareMedicine sphn-individual:Haematology sphn-individual:PsychiatryAndPsychotherapy sphn-individual:AllergologyAndClinicalImmunology sphn-individual:NuclearMedicine sphn-individual:Neurology sphn-individual:Ophthalmology sphn-individual:Orthodontics sphn-individual:OccupationalMedicine sphn-individual:CardiacAndThoracicVascularSurgery sphn-individual:Anaesthesiology sphn-individual:PlasticReconstructiveAndAestheticSurgery sphn-individual:Nephrology sphn-individual:MedicalOncology sphn-individual:Urology sphn-individual:Infectology sphn-individual:MedicalGenetics sphn-individual:GeneralMedicalPractitioner sphn-individual:GeneralInternalMedicine sphn-individual:AddictionMedicine sphn-individual:Gastroenterology sphn-individual:ChildAndAdolescentPsychiatryAndPsychotherapy sphn-individual:EndocrinologyAndDiabetology sphn-individual:PaediatricSurgery sphn-individual:InternalMedicine sphn-individual:ClinicalPsychology sphn-individual:VisceralMedicine sphn-individual:Pneumology sphn-individual:ChiropracticSpecialist ) ;
+    sh:property [ sh:in ( sphn-individual:Otorhinolaryngology sphn-individual:ClinicalPsychology sphn-individual:VisceralMedicine sphn-individual:OccupationalMedicine sphn-individual:HandSurgery sphn-individual:VascularSurgery sphn-individual:NuclearMedicine sphn-individual:EndocrinologyAndDiabetology sphn-individual:PlasticReconstructiveAndAestheticSurgery sphn-individual:OrthopaedicSurgeryAndTraumatologyOfTheLocomotorApparatus sphn-individual:Neuropsychology sphn-individual:GynaecologyAndObstetrics sphn-individual:RadioOncologyAndRadiotherapy sphn-individual:MedicalGenetics sphn-individual:Neurology sphn-individual:OralSurgery sphn-individual:Infectology sphn-individual:Paediatrics sphn-individual:IntensiveCareMedicine sphn-individual:ChiropracticSpecialist sphn-individual:Angiology sphn-individual:ReconstructiveDentistry sphn-individual:Periodontics sphn-individual:InternalMedicine sphn-individual:Gastroenterology sphn-individual:ClinicalPharmacologyAndToxicology sphn-individual:Cardiology sphn-individual:GeneralMedicine sphn-individual:AllergologyAndClinicalImmunology sphn-individual:ChildAndAdolescentPsychiatryAndPsychotherapy sphn-individual:AddictionMedicine sphn-individual:Nephrology sphn-individual:ThoracicSurgery sphn-individual:Pneumology sphn-individual:ForensicMedicine sphn-individual:CommunityPharmacy sphn-individual:PsychiatryAndPsychotherapy sphn-individual:HealthPsychology sphn-individual:OralAndMaxillofacialSurgery sphn-individual:GeneralMedicalPractitioner sphn-individual:Other sphn-individual:Neurosurgery sphn-individual:Haematology sphn-individual:GeneralInternalMedicine sphn-individual:Orthodontics sphn-individual:Urology sphn-individual:HospitalPharmacy sphn-individual:PharmaceuticalMedicine sphn-individual:Ophthalmology sphn-individual:CardiacAndThoracicVascularSurgery sphn-individual:PaediatricSurgery sphn-individual:Pathology sphn-individual:Psychotherapy sphn-individual:Surgery sphn-individual:TropicalAndTravelMedicine sphn-individual:PhysicalMedicineAndRehabilitation sphn-individual:DermatologyAndVenereology sphn-individual:PreventionAndPublicHealth sphn-individual:MedicalOncology sphn-individual:ChildAndAdolescentPsychology sphn-individual:Radiology sphn-individual:Anaesthesiology sphn-individual:GeriatricMedicine sphn-individual:Rheumatology ) ;
             sh:path [ sh:inversePath rdf:type ] ] ;
     sh:targetClass sphn:TherapeuticArea_specialtyName .
 
@@ -9605,14 +9605,14 @@ constraints:sphnTimePattern a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:385432009 ] [ sh:class snomed:255238004 ] [ sh:class snomed:7087005 ] ) ;
+            sh:or ( [ sh:class snomed:7087005 ] [ sh:class snomed:255238004 ] [ sh:class snomed:385432009 ] ) ;
             sh:path sphn:hasTypeCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/385432009>, <http://snomed.info/id/255238004>, <http://snomed.info/id/7087005> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/7087005>, <http://snomed.info/id/255238004>, <http://snomed.info/id/385432009> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -9621,6 +9621,14 @@ constraints:sphnTimePattern a sh:NodeShape ;
 constraints:sphnTimePattern_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-TimePattern-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -9628,63 +9636,55 @@ constraints:sphnTimePattern_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-TimePattern-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:TimePattern .
 
 constraints:sphnTimeSeriesDataFile a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasEntryCount rdf:type ) ;
-    sh:property [ sh:class sphn:DataFile_encoding ;
+    sh:ignoredProperties ( rdf:type sphn:hasEntryCount ) ;
+    sh:property [ sh:class sphn:Hash ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasEncoding ],
+            sh:minCount 0 ;
+            sh:path sphn:hasHash ],
+        [ sh:datatype xsd:string ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasUniformResourceIdentifier ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasUniformResourceIdentifier ],
+            sh:path sphn:hasName ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasEntryCount ],
-        [ sh:class ucum:cblnbcbr ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path ( sphn:hasEntryCount sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:minCount 0 ;
+            sh:path sphn:hasCreationDateTime ],
+        [ sh:class sphn:DataFile_encoding ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:path sphn:hasEncoding ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class edam:format_1915 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasFormatCode ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:datatype xsd:string ;
+        [ sh:class edam:format_1915 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasName ],
-        [ sh:class sphn:Hash ;
+            sh:path sphn:hasFormatCode ],
+        [ sh:class ucum:cblnbcbr ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasHash ],
-        [ sh:datatype xsd:dateTime ;
+            sh:minCount 1 ;
+            sh:path ( sphn:hasEntryCount sphn:hasUnit sphn:hasCode ) ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasCreationDateTime ] ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:targetClass sphn:TimeSeriesDataFile .
 
 constraints:sphnTimeSeriesDataFile_Warning_Naming a sh:NodeShape ;
@@ -9702,65 +9702,65 @@ constraints:sphnTimeSeriesDataFile_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnTobaccoExposure a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasQuantity sphn:hasDuration rdf:type ) ;
-    sh:property [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:Quantity ;
+    sh:ignoredProperties ( sphn:hasQuantity rdf:type sphn:hasDuration ) ;
+    sh:property [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasDuration ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasRecordDateTime ],
+        [ sh:class snomed:138875005 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasRouteCode ],
+        [ sh:class snomed:39953003 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasAgentCode ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasEndDateTime ],
+            sh:path sphn:hasQuantity ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:1255665007 ] [ sh:class snomed:75540009 ] [ sh:class snomed:62482003 ] ) ;
-            sh:path sphn:hasDegreeCode ],
-        [ sh:class sphn:AdministrativeCase ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasDuration ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class snomed:138875005 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasRouteCode ],
-        [ sh:class snomed:39953003 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAgentCode ],
-        [ sh:class sphn:Quantity ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
+            sh:path sphn:hasEndDateTime ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:722499006 ] [ sh:class snomed:228493008 ] [ sh:class snomed:35361000087100 ] [ sh:class snomed:43381005 ] [ sh:class snomed:77176002 ] [ sh:class snomed:228494002 ] [ sh:class snomed:702979003 ] [ sh:class snomed:228513009 ] [ sh:class snomed:81703003 ] [ sh:class snomed:8517006 ] ) ;
+            sh:or ( [ sh:class snomed:722499006 ] [ sh:class snomed:228513009 ] [ sh:class snomed:35361000087100 ] [ sh:class snomed:8517006 ] [ sh:class snomed:43381005 ] [ sh:class snomed:81703003 ] [ sh:class snomed:702979003 ] [ sh:class snomed:77176002 ] [ sh:class snomed:228494002 ] [ sh:class snomed:228493008 ] ) ;
             sh:path sphn:hasTypeCode ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class ucum:a ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:minCount 0 ;
+            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ],
         [ sh:class ucum:a ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path ( sphn:hasDuration sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class ucum:a ;
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path ( sphn:hasQuantity sphn:hasUnit sphn:hasCode ) ] ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:or ( [ sh:class snomed:1255665007 ] [ sh:class snomed:62482003 ] [ sh:class snomed:75540009 ] ) ;
+            sh:path sphn:hasDegreeCode ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -9771,19 +9771,19 @@ constraints:sphnTobaccoExposure a sh:NodeShape ;
                     }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/1255665007>, <http://snomed.info/id/75540009>, <http://snomed.info/id/62482003> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/722499006>, <http://snomed.info/id/228513009>, <http://snomed.info/id/35361000087100>, <http://snomed.info/id/8517006>, <http://snomed.info/id/43381005>, <http://snomed.info/id/81703003>, <http://snomed.info/id/702979003>, <http://snomed.info/id/77176002>, <http://snomed.info/id/228494002>, <http://snomed.info/id/228493008> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
-            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?class as ?value)
+            sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> as ?path) (?class as ?value)
                                                 WHERE {
-                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/722499006>, <http://snomed.info/id/228493008>, <http://snomed.info/id/35361000087100>, <http://snomed.info/id/43381005>, <http://snomed.info/id/77176002>, <http://snomed.info/id/228494002>, <http://snomed.info/id/702979003>, <http://snomed.info/id/228513009>, <http://snomed.info/id/81703003>, <http://snomed.info/id/8517006> )) .
+                                                    ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/1255665007>, <http://snomed.info/id/62482003>, <http://snomed.info/id/75540009> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -9792,12 +9792,13 @@ constraints:sphnTobaccoExposure a sh:NodeShape ;
 constraints:sphnTobaccoExposure_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-TobaccoExposure-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> as ?path) (?code as ?value)
+                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+                         SELECT ?this (?class as ?path) (?this as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             ?this rdf:type ?class .
+                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-TobaccoExposure-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
@@ -9824,27 +9825,26 @@ constraints:sphnTobaccoExposure_Warning_Naming a sh:NodeShape ;
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-TobaccoExposure-.*$'" ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
-                         SELECT ?this (?class as ?path) (?this as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this rdf:type ?class .
-                             FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-TobaccoExposure-.*$"))
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasDegreeCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:TobaccoExposure .
 
 constraints:sphnTranscript a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Organism ;
+    sh:property [ sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:Organism ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasOrganism ],
-        [ sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
-            sh:path sphn:hasCode ],
         [ sh:class sphn:Protein ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -9912,7 +9912,7 @@ constraints:sphnTransplant a sh:NodeShape ;
     sh:ignoredProperties ( rdf:type ) ;
     sh:property [ sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:or ( [ sh:class snomed:260667007 ] [ sh:class snomed:414265000 ] ) ;
+            sh:or ( [ sh:class snomed:414265000 ] [ sh:class snomed:260667007 ] ) ;
             sh:path sphn:hasCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -9932,41 +9932,41 @@ constraints:sphnTransplant a sh:NodeShape ;
 constraints:sphnTransplantPresence a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:DataProvider ;
+    sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:BodySite ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasBodySite ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:Transplant ;
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasStartDateTime ],
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasTransplant ],
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasEndDateTime ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:Transplant ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasStartDateTime ],
+            sh:minCount 1 ;
+            sh:path sphn:hasTransplant ],
         [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasRecordDateTime ],
-        [ sh:class sphn:BodySite ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasBodySite ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:path sphn:hasRecordDateTime ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Invalid time frame between sphn:hasStartDateTime and sphn:hasEndDateTime" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasStartDateTime> as ?path) (?hasStartDateTime as ?value)
@@ -9993,14 +9993,6 @@ constraints:sphnTransplantPresence_Warning_Naming a sh:NodeShape ;
 constraints:sphnTransplant_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Transplant-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -10016,42 +10008,50 @@ constraints:sphnTransplant_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasGraftTypeCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:Transplant .
 
 constraints:sphnTumorGradeAssessment a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( rdf:type sphn:hasResult ) ;
-    sh:property [ sh:class sphn:DataProvider ;
+    sh:ignoredProperties ( sphn:hasResult rdf:type ) ;
+    sh:property [ sh:class snomed:138875005 ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:minCount 0 ;
+            sh:path ( sphn:hasResult sphn:hasCode ) ],
+        [ sh:class snomed:277457005 ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:minCount 0 ;
+            sh:path sphn:hasCode ],
         [ sh:class sphn:TumorGradeAssessmentResult ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasResult ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class snomed:277457005 ;
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasCode ],
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:class sphn:AssessmentComponent ;
             sh:minCount 0 ;
             sh:path sphn:hasComponent ],
-        [ sh:class snomed:138875005 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path ( sphn:hasResult sphn:hasCode ) ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:DataProvider ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -10061,10 +10061,14 @@ constraints:sphnTumorGradeAssessment a sh:NodeShape ;
 constraints:sphnTumorGradeAssessmentEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Performer ;
+    sh:property [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
+            sh:path sphn:hasAdministrativeCase ],
         [ sh:class sphn:TumorGradeAssessment ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
@@ -10073,21 +10077,17 @@ constraints:sphnTumorGradeAssessmentEvent a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:maxCount 1 ;
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:AdministrativeCase ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
+            sh:path sphn:hasPerformer ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDateTime ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasSubjectPseudoIdentifier ] ;
     sh:targetClass sphn:TumorGradeAssessmentEvent .
 
 constraints:sphnTumorGradeAssessmentEvent_Warning_Naming a sh:NodeShape ;
@@ -10106,31 +10106,23 @@ constraints:sphnTumorGradeAssessmentEvent_Warning_Naming a sh:NodeShape ;
 constraints:sphnTumorGradeAssessmentResult a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class snomed:138875005 ;
+    sh:property [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:Quantity ;
+            sh:path sphn:hasStringValue ],
+        [ sh:class snomed:138875005 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ],
-        [ sh:datatype xsd:string ;
+            sh:path sphn:hasCode ],
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasStringValue ] ;
+            sh:path sphn:hasQuantity ] ;
     sh:targetClass sphn:TumorGradeAssessmentResult .
 
-constraints:sphnTumorGradeAssessmentResult_Warning_Naming a sh:NodeShape ;
-    sh:severity sh:Warning ;
-    sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
+constraints:sphnTumorGradeAssessmentResult_Warning_Naming a sh:NodeShape ;
+    sh:severity sh:Warning ;
+    sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-TumorGradeAssessmentResult-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -10138,6 +10130,14 @@ constraints:sphnTumorGradeAssessmentResult_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-TumorGradeAssessmentResult-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:TumorGradeAssessmentResult .
 
@@ -10146,17 +10146,17 @@ constraints:sphnTumorGradeAssessment_Warning_Naming a sh:NodeShape ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasResult>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasResult>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         SELECT ?this ("<https://biomedit.ch/rdf/sphn-schema/sphn#hasResult>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>" as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasResult>/<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
@@ -10172,15 +10172,22 @@ constraints:sphnTumorGradeAssessment_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnTumorSpecimen a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( sphn:hasTumorPurity rdf:type ) ;
-    sh:property [ sh:datatype xsd:dateTime ;
+    sh:ignoredProperties ( rdf:type sphn:hasTumorPurity ) ;
+    sh:property [ sh:class sphn:Sample_primaryContainer ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasCollectionDateTime ],
+            sh:minCount 0 ;
+            sh:path sphn:hasPrimaryContainer ],
         [ sh:class sphn:BodySite ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasBodySite ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class sphn:SourceSystem ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSourceSystem ],
         [ sh:class snomed:123038009 ;
             sh:minCount 0 ;
             sh:path sphn:hasMaterialTypeCode ],
@@ -10188,9 +10195,12 @@ constraints:sphnTumorSpecimen a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasFixationType ],
-        [ sh:datatype xsd:string ;
-            sh:minCount 0 ;
-            sh:path sphn:hasIdentifier ],
+        [ sh:datatype xsd:anyURI ;
+            sh:path sphn:hasSharedIdentifier ],
+        [ sh:datatype xsd:dateTime ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasCollectionDateTime ],
         [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
@@ -10199,27 +10209,17 @@ constraints:sphnTumorSpecimen a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:datatype xsd:anyURI ;
-            sh:path sphn:hasSharedIdentifier ],
         [ sh:class ucum:percent ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path ( sphn:hasTumorPurity sphn:hasUnit sphn:hasCode ) ],
-        [ sh:class sphn:Sample_primaryContainer ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasPrimaryContainer ],
         [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
+        [ sh:datatype xsd:string ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasIdentifier ] ;
     sh:targetClass sphn:TumorSpecimen .
 
 constraints:sphnTumorSpecimen_Warning_Naming a sh:NodeShape ;
@@ -10245,73 +10245,73 @@ constraints:sphnTumorSpecimen_Warning_Naming a sh:NodeShape ;
 
 constraints:sphnTumorStageAssessment a sh:NodeShape ;
     sh:closed false ;
-    sh:ignoredProperties ( rdf:type sphn:hasResult ) ;
+    sh:ignoredProperties ( sphn:hasResult rdf:type ) ;
     sh:property [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:AdministrativeCase ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
-        [ sh:class sphn:TumorStageAssessmentResult ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasResult ],
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:datatype xsd:string ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasName ],
+        [ sh:class sphn:AssessmentComponent ;
+            sh:minCount 0 ;
+            sh:path sphn:hasComponent ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
             sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:DataProvider ;
+        [ sh:class snomed:138875005 ;
             sh:maxCount 1 ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class sphn:AssessmentComponent ;
             sh:minCount 0 ;
-            sh:path sphn:hasComponent ],
-        [ sh:class snomed:254292007 ;
+            sh:path ( sphn:hasResult sphn:hasCode ) ],
+        [ sh:class sphn:TumorStageAssessmentResult ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCode ],
-        [ sh:class snomed:138875005 ;
+            sh:path sphn:hasResult ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path ( sphn:hasResult sphn:hasCode ) ] ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class snomed:254292007 ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasCode ] ;
     sh:targetClass sphn:TumorStageAssessment .
 
 constraints:sphnTumorStageAssessmentEvent a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:AdministrativeCase ;
+    sh:property [ sh:class sphn:TumorStageAssessment ;
+            sh:maxCount 1 ;
+            sh:minCount 1 ;
+            sh:path sphn:hasAssessment ],
+        [ sh:class sphn:AdministrativeCase ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasAdministrativeCase ],
-        [ sh:datatype xsd:dateTime ;
+        [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDateTime ],
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
             sh:path sphn:hasSubjectPseudoIdentifier ],
-        [ sh:class sphn:TumorStageAssessment ;
+        [ sh:datatype xsd:dateTime ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasAssessment ],
-        [ sh:class sphn:DataProvider ;
-            sh:maxCount 1 ;
+            sh:path sphn:hasDateTime ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasSourceSystem ],
         [ sh:class sphn:Performer ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasPerformer ],
-        [ sh:class sphn:SourceSystem ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasPerformer ] ;
     sh:targetClass sphn:TumorStageAssessmentEvent .
 
 constraints:sphnTumorStageAssessmentEvent_Warning_Naming a sh:NodeShape ;
@@ -10334,27 +10334,19 @@ constraints:sphnTumorStageAssessmentResult a sh:NodeShape ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasStringValue ],
-        [ sh:class snomed:138875005 ;
+        [ sh:class sphn:Quantity ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasCode ],
-        [ sh:class sphn:Quantity ;
+            sh:path sphn:hasQuantity ],
+        [ sh:class snomed:138875005 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasQuantity ] ;
+            sh:path sphn:hasCode ] ;
     sh:targetClass sphn:TumorStageAssessmentResult .
 
 constraints:sphnTumorStageAssessmentResult_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-TumorStageAssessmentResult-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -10362,6 +10354,14 @@ constraints:sphnTumorStageAssessmentResult_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-TumorStageAssessmentResult-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:TumorStageAssessmentResult .
 
@@ -10419,46 +10419,46 @@ constraints:sphnUnit_Warning_Naming a sh:NodeShape ;
 constraints:sphnVariantDescriptor a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:VariantNotation ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasNotation ],
-        [ sh:class geno:0000877 ;
-            sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasAlleleOriginCode ],
-        [ sh:class sphn:DataProvider ;
-            sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
-        [ sh:class so:0001059 ;
-            sh:maxCount 1 ;
+    sh:property [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasTypeCode ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
-            sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ],
+            sh:or ( [ sh:class sphn:SingleNucleotideVariation ] [ sh:class sphn:GeneticVariation ] [ sh:class sphn:GenomicInsertion ] [ sh:class sphn:CopyNumberVariation ] [ sh:class sphn:GenomicDeletion ] ) ;
+            sh:path sphn:hasGeneticVariation ],
         [ sh:class sphn:Gene ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasGene ],
-        [ sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:GenomicDeletion ] [ sh:class sphn:CopyNumberVariation ] [ sh:class sphn:GeneticVariation ] [ sh:class sphn:SingleNucleotideVariation ] [ sh:class sphn:GenomicInsertion ] ) ;
-            sh:path sphn:hasGeneticVariation ],
         [ sh:class geno:0000133 ;
             sh:maxCount 1 ;
             sh:minCount 0 ;
             sh:path sphn:hasZygosityCode ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class sphn:Code ] [ sh:class sphn:Terminology ] ) ;
+            sh:or ( [ sh:class sphn:Terminology ] [ sh:class sphn:Code ] ) ;
             sh:path sphn:hasCode ],
-        [ sh:class sphn:AdministrativeCase ;
+        [ sh:class so:0001059 ;
+            sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:path sphn:hasAdministrativeCase ],
+            sh:path sphn:hasTypeCode ],
+        [ sh:class sphn:DataProvider ;
+            sh:minCount 1 ;
+            sh:path sphn:hasDataProvider ],
         [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ] ;
+            sh:path sphn:hasSourceSystem ],
+        [ sh:class sphn:VariantNotation ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasNotation ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
+            sh:minCount 1 ;
+            sh:path sphn:hasSubjectPseudoIdentifier ],
+        [ sh:class sphn:AdministrativeCase ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAdministrativeCase ],
+        [ sh:class geno:0000877 ;
+            sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasAlleleOriginCode ] ;
     sh:targetClass sphn:VariantDescriptor .
 
 constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
@@ -10470,10 +10470,10 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             PREFIX owl: <http://www.w3.org/2002/07/owl#>
             PREFIX sphn-loinc: <https://biomedit.ch/rdf/sphn-resource/loinc/>
             PREFIX sphn-hgnc: <https://biomedit.ch/rdf/sphn-resource/hgnc/>
-            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?typeCode as ?value)
+            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> as ?path) (?typeCode as ?value)
             WHERE {
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-loinc:LOINC .
                 ?typeCode rdfs:label ?label .
@@ -10481,7 +10481,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 {
                     SELECT ?typeCode
@@ -10495,7 +10495,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-hgnc:HGNC .
                 ?typeCode rdfs:comment ?comment .
@@ -10509,10 +10509,10 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             PREFIX owl: <http://www.w3.org/2002/07/owl#>
             PREFIX sphn-loinc: <https://biomedit.ch/rdf/sphn-resource/loinc/>
             PREFIX sphn-hgnc: <https://biomedit.ch/rdf/sphn-resource/hgnc/>
-            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?typeCode as ?value)
+            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> as ?path) (?typeCode as ?value)
             WHERE {
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-loinc:LOINC .
                 ?typeCode rdfs:label ?label .
@@ -10520,7 +10520,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 {
                     SELECT ?typeCode
@@ -10534,7 +10534,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-hgnc:HGNC .
                 ?typeCode rdfs:comment ?comment .
@@ -10548,10 +10548,10 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             PREFIX owl: <http://www.w3.org/2002/07/owl#>
             PREFIX sphn-loinc: <https://biomedit.ch/rdf/sphn-resource/loinc/>
             PREFIX sphn-hgnc: <https://biomedit.ch/rdf/sphn-resource/hgnc/>
-            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> as ?path) (?typeCode as ?value)
+            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> as ?path) (?typeCode as ?value)
             WHERE {
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-loinc:LOINC .
                 ?typeCode rdfs:label ?label .
@@ -10559,7 +10559,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 {
                     SELECT ?typeCode
@@ -10573,7 +10573,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-hgnc:HGNC .
                 ?typeCode rdfs:comment ?comment .
@@ -10587,10 +10587,10 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             PREFIX owl: <http://www.w3.org/2002/07/owl#>
             PREFIX sphn-loinc: <https://biomedit.ch/rdf/sphn-resource/loinc/>
             PREFIX sphn-hgnc: <https://biomedit.ch/rdf/sphn-resource/hgnc/>
-            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> as ?path) (?typeCode as ?value)
+            SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?typeCode as ?value)
             WHERE {
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-loinc:LOINC .
                 ?typeCode rdfs:label ?label .
@@ -10598,7 +10598,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 {
                     SELECT ?typeCode
@@ -10612,7 +10612,7 @@ constraints:sphnVariantDescriptor_Warning_Codes a sh:NodeShape ;
             }
             UNION
             {
-                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?oldCode .
+                ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?oldCode .
                 ?oldCode rdf:type ?typeCode .
                 ?typeCode rdfs:subClassOf+ sphn-hgnc:HGNC .
                 ?typeCode rdfs:comment ?comment .
@@ -10626,9 +10626,9 @@ constraints:sphnVariantDescriptor_Warning_Naming a sh:NodeShape ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> as ?path) (?code as ?value)
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> as ?path) (?code as ?value)
                          WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?code .
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
         [ a sh:SPARQLConstraint ;
@@ -10639,6 +10639,14 @@ constraints:sphnVariantDescriptor_Warning_Naming a sh:NodeShape ;
                              ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasTypeCode> ?code .
                              FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasZygosityCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
+                             }""" ],
         [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-VariantDescriptor-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -10647,14 +10655,6 @@ constraints:sphnVariantDescriptor_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-VariantDescriptor-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasAlleleOriginCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:VariantDescriptor .
 
@@ -10687,31 +10687,31 @@ constraints:sphnVariantNotation_Warning_Naming a sh:NodeShape ;
 constraints:sphnVitalStatus a sh:NodeShape ;
     sh:closed false ;
     sh:ignoredProperties ( rdf:type ) ;
-    sh:property [ sh:class sphn:Death ;
+    sh:property [ sh:class sphn:DataProvider ;
             sh:maxCount 1 ;
-            sh:minCount 0 ;
-            sh:path sphn:hasDeath ],
-        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSourceSystem ],
-        [ sh:class sphn:DataProvider ;
+            sh:path sphn:hasDataProvider ],
+        [ sh:class sphn:SubjectPseudoIdentifier ;
             sh:maxCount 1 ;
             sh:minCount 1 ;
-            sh:path sphn:hasDataProvider ],
+            sh:path sphn:hasSubjectPseudoIdentifier ],
         [ sh:maxCount 1 ;
             sh:minCount 0 ;
-            sh:or ( [ sh:class snomed:438949009 ] [ sh:class snomed:399307001 ] ) ;
+            sh:or ( [ sh:class snomed:399307001 ] [ sh:class snomed:438949009 ] ) ;
             sh:path sphn:hasCode ],
-        [ sh:class sphn:SubjectPseudoIdentifier ;
+        [ sh:class sphn:Death ;
             sh:maxCount 1 ;
+            sh:minCount 0 ;
+            sh:path sphn:hasDeath ],
+        [ sh:class sphn:SourceSystem ;
             sh:minCount 1 ;
-            sh:path sphn:hasSubjectPseudoIdentifier ] ;
+            sh:path sphn:hasSourceSystem ] ;
     sh:sparql [ a sh:SPARQLConstraint ;
             sh:message "No descendents (all subclasses) of the specified codes are allowed" ;
             sh:select """SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?class as ?value)
                                                 WHERE {
                                                     ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode>/<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?class .
-                                                    FILTER( ?values IN ( <http://snomed.info/id/438949009>, <http://snomed.info/id/399307001> )) .
+                                                    FILTER( ?values IN ( <http://snomed.info/id/399307001>, <http://snomed.info/id/438949009> )) .
                                                     FILTER (?class NOT IN ( ?values ) ) .
                                                     FILTER NOT EXISTS { ?values <http://www.w3.org/2000/01/rdf-schema#subClassOf>+ ?class .}
                                                 }""" ] ;
@@ -10720,14 +10720,6 @@ constraints:sphnVitalStatus a sh:NodeShape ;
 constraints:sphnVitalStatus_Warning_Naming a sh:NodeShape ;
     sh:severity sh:Warning ;
     sh:sparql [ a sh:SPARQLConstraint ;
-            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
-            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
-                         WHERE {
-                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
-                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
-                             }""" ],
-        [ a sh:SPARQLConstraint ;
             sh:message "Instantiated unique resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-VitalStatus-.*$'" ;
             sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
                          PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
@@ -10735,6 +10727,14 @@ constraints:sphnVitalStatus_Warning_Naming a sh:NodeShape ;
                          WHERE {
                              ?this rdf:type ?class .
                              FILTER(!REGEX(STR(?this), "^https://biomedit.ch/rdf/sphn-resource/.*-VitalStatus-.*$"))
+                             }""" ],
+        [ a sh:SPARQLConstraint ;
+            sh:message "Instantiated shared resource not matching naming convention '^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$'" ;
+            sh:select """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+                         SELECT ?this (<https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> as ?path) (?code as ?value)
+                         WHERE {
+                             ?this <https://biomedit.ch/rdf/sphn-schema/sphn#hasCode> ?code .
+                             FILTER(!REGEX(STR(?code), "^https://biomedit.ch/rdf/sphn-resource/.*-Code-.*$"))
                              }""" ] ;
     sh:targetClass sphn:VitalStatus .
 
-- 
GitLab