diff --git a/rocrate_validator/profiles/five-safes-crate/may/4_sign_off.ttl b/rocrate_validator/profiles/five-safes-crate/may/4_sign_off.ttl index b30dedc2..3890e2b3 100644 --- a/rocrate_validator/profiles/five-safes-crate/may/4_sign_off.ttl +++ b/rocrate_validator/profiles/five-safes-crate/may/4_sign_off.ttl @@ -53,6 +53,6 @@ five-safes-crate:SignOffPhaseStartTime sh:maxCount 1 ; sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; sh:severity sh:Info ; - sh:description "Sign Off object MAY have a startTime property if action is active, completed or failed. This must follow ISO-8601 syntax" ; - sh:message "Sign Off object MAY have a startTime property if action is active, completed or failed. This must follow ISO-8601 syntax" ; + sh:description "Sign Off object MAY have a startTime property if action is active, completed or failed." ; + sh:message "Sign Off object MAY have a startTime property if action is active, completed or failed." ; ] . diff --git a/rocrate_validator/profiles/five-safes-crate/must/11_workflow_execution_phase.ttl b/rocrate_validator/profiles/five-safes-crate/must/11_workflow_execution_phase.ttl index 4551da6c..2f723c93 100644 --- a/rocrate_validator/profiles/five-safes-crate/must/11_workflow_execution_phase.ttl +++ b/rocrate_validator/profiles/five-safes-crate/must/11_workflow_execution_phase.ttl @@ -41,38 +41,6 @@ five-safes-crate:WorkflowMustHaveDescriptiveName ] . -five-safes-crate:WorkflowexecutionObjectHasCompliantStartTimeFormat - a sh:NodeShape ; - sh:name "WorkflowExecution" ; - sh:description "The startTime of the workflow execution object MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - sh:targetClass schema:CreateAction ; - - sh:property [ - a sh:PropertyShape ; - sh:name "StartTime" ; - sh:path schema:startTime ; - sh:minCount 0 ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "The startTime of the workflow execution object MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . - - -five-safes-crate:WorkflowexecutionObjectHasCompliantEndTimeFormat - a sh:NodeShape ; - sh:name "WorkflowExecution" ; - sh:description "The endTime of the workflow execution object MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - sh:targetClass schema:CreateAction ; - - sh:property [ - a sh:PropertyShape ; - sh:name "EndTime" ; - sh:path schema:endTime ; - sh:minCount 0 ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "The endTime of the workflow execution object MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . five-safes-crate:WorkflowMustHaveActionStatusWithAllowedValues diff --git a/rocrate_validator/profiles/five-safes-crate/must/12_check_phase.ttl b/rocrate_validator/profiles/five-safes-crate/must/12_check_phase.ttl index b64c29c6..35b5dd15 100644 --- a/rocrate_validator/profiles/five-safes-crate/must/12_check_phase.ttl +++ b/rocrate_validator/profiles/five-safes-crate/must/12_check_phase.ttl @@ -59,62 +59,6 @@ five-safes-crate:CheckValueObjectHasDescriptiveNameAndIsAssessAction sh:message "CheckValue MUST have a human readable name string." ; ] . -five-safes-crate:CheckValueStartTimeMustFollowISOStandard - a sh:NodeShape ; - sh:name "CheckValue" ; - sh:description "" ; - sh:target [ - a sh:SPARQLTarget ; - sh:select """ - PREFIX schema: - PREFIX shp: - SELECT ?this - WHERE { - ?this schema:additionalType shp:CheckValue ; - schema:startTime ?o - - } - """ ; - ] ; - - sh:property [ - a sh:PropertyShape ; - sh:name "StartTime" ; - sh:path schema:startTime ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "`CheckValue` --> `startTime` MUST follows the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . - - -five-safes-crate:CheckValueEndTimeMustFollowISOStandard - a sh:NodeShape ; - sh:name "CheckValue" ; - sh:description "" ; - sh:target [ - a sh:SPARQLTarget ; - sh:select """ - PREFIX schema: - PREFIX shp: - SELECT ?this - WHERE { - ?this schema:additionalType shp:CheckValue ; - schema:endTime ?o - - } - """ ; - ] ; - - sh:property [ - a sh:PropertyShape ; - sh:name "EndTime" ; - sh:path schema:endTime ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "`CheckValue` --> `endTime` MUST follows the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . - - five-safes-crate:CheckValueActionStatusMustHaveAllowedValues a sh:NodeShape ; sh:name "CheckValue" ; diff --git a/rocrate_validator/profiles/five-safes-crate/must/13_validation_phase.ttl b/rocrate_validator/profiles/five-safes-crate/must/13_validation_phase.ttl index 610d0b45..8ce6be48 100644 --- a/rocrate_validator/profiles/five-safes-crate/must/13_validation_phase.ttl +++ b/rocrate_validator/profiles/five-safes-crate/must/13_validation_phase.ttl @@ -124,59 +124,3 @@ five-safes-crate:ValidationCheckActionStatusMustHaveAllowedValue sh:severity sh:Violation ; sh:message "actionStatus MUST be either PotentialActionStatus, ActiveActionStatus, CompletedActionStatus, or FailedActionStatus." ; ] . - - -five-safes-crate:ValidationCheckStartTimeMUSTFollowISOStandard - a sh:NodeShape ; - sh:name "ValidationCheck" ; - sh:description "" ; - sh:target [ - a sh:SPARQLTarget ; - sh:select """ - PREFIX schema: - PREFIX shp: - - SELECT ?this - WHERE { - ?this schema:additionalType shp:ValidationCheck . - } - """ ; - ] ; - - sh:property [ - a sh:PropertyShape ; - sh:name "StartTime" ; - sh:minCount 0; - sh:path schema:startTime ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "ValidationCheck --> `startTime` MUST follows the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . - - -five-safes-crate:ValidationCheckEndTimeMUSTFollowISOStandard - a sh:NodeShape ; - sh:name "ValidationCheck" ; - sh:description "" ; - sh:target [ - a sh:SPARQLTarget ; - sh:select """ - PREFIX schema: - PREFIX shp: - - SELECT ?this - WHERE { - ?this schema:additionalType shp:ValidationCheck . - } - """ ; - ] ; - - sh:property [ - a sh:PropertyShape ; - sh:name "EndTime" ; - sh:minCount 0; - sh:path schema:endTime ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "ValidationCheck --> `endTime` MUST follows the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . \ No newline at end of file diff --git a/rocrate_validator/profiles/five-safes-crate/must/14_workflow_retrieval_phase.ttl b/rocrate_validator/profiles/five-safes-crate/must/14_workflow_retrieval_phase.ttl index b9cc96b0..a1108add 100644 --- a/rocrate_validator/profiles/five-safes-crate/must/14_workflow_retrieval_phase.ttl +++ b/rocrate_validator/profiles/five-safes-crate/must/14_workflow_retrieval_phase.ttl @@ -41,38 +41,6 @@ five-safes-crate:DownloadActionObjectMUSTHavesDescriptiveName sh:message "DownloadAction MUST have a human readable name string." ; ] . -five-safes-crate:DownloadActionStartTimeMUSTFollowISOStandard - a sh:NodeShape ; - sh:name "DownloadAction" ; - sh:description "" ; - sh:targetClass schema:DownloadAction ; - - sh:property [ - a sh:PropertyShape ; - sh:name "StartTime" ; - sh:minCount 0; - sh:path schema:startTime ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "`DownloadAction` --> `startTime` MUST follows the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . - - -five-safes-crate:DownloadActionEndTimeMUSTFollowISOStandard - a sh:NodeShape ; - sh:name "DownloadAction" ; - sh:description "" ; - sh:targetClass schema:DownloadAction ; - - sh:property [ - a sh:PropertyShape ; - sh:name "EndTime" ; - sh:minCount 0; - sh:path schema:endTime ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "`DownloadAction` --> `endTime` MUST follows the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . five-safes-crate:WorkflowSameAsAndRootDataEntityMainEntityMUSTBeTheSame diff --git a/rocrate_validator/profiles/five-safes-crate/must/3_timestamp_format.ttl b/rocrate_validator/profiles/five-safes-crate/must/3_timestamp_format.ttl new file mode 100644 index 00000000..c4f2ddb5 --- /dev/null +++ b/rocrate_validator/profiles/five-safes-crate/must/3_timestamp_format.ttl @@ -0,0 +1,54 @@ +# Copyright (c) 2025 eScience Lab, The University of Manchester +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +@prefix ro: <./> . +@prefix ro-crate: . +@prefix five-safes-crate: . +@prefix rdf: . +@prefix schema: . +@prefix purl: . +@prefix sh: . +@prefix validator: . +@prefix xsd: . + + +# to ensure the entity id will be included in any error message, +# target all entities which have startTime and/or endTime properties using sh:targetSubjectsOf, +# then we use sh:property to validate the values of those properties. +# the properties are listed individually so that the property id appears in any error message too +five-safes-crate:TimeStampFormat + a sh:NodeShape ; + sh:name "Timestamp Format" ; + sh:description "Timestamps MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; + sh:targetSubjectsOf schema:startTime, schema:endTime; + sh:property [ + a sh:PropertyShape ; + sh:name "End TimeStamp" ; + sh:path schema:endTime ; + sh:minCount 0 ; + sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; + sh:severity sh:Violation ; + sh:message "All `startTime` and `endTime` values MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; + sh:description "End timestamps MUST follow the RFC 3339 standard." ; + ] ; + sh:property [ + a sh:PropertyShape ; + sh:name "Start TimeStamp" ; + sh:path schema:startTime ; + sh:minCount 0 ; + sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; + sh:severity sh:Violation ; + sh:message "All `startTime` and `endTime` values MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; + sh:description "Start timestamps MUST follow the RFC 3339 standard." ; + ] . diff --git a/rocrate_validator/profiles/five-safes-crate/must/8_disclosure_phase.ttl b/rocrate_validator/profiles/five-safes-crate/must/8_disclosure_phase.ttl index d46e38ca..3c8ceca8 100644 --- a/rocrate_validator/profiles/five-safes-crate/must/8_disclosure_phase.ttl +++ b/rocrate_validator/profiles/five-safes-crate/must/8_disclosure_phase.ttl @@ -98,61 +98,3 @@ five-safes-crate:DisclosureObjectHasActionStatusWithAcceptedValue sh:severity sh:Violation ; sh:message "`DisclosureCheck` MUST have an actionStatus with an allowed value (see https://schema.org/ActionStatusType)." ; ] . - - -five-safes-crate:DisclosureObjectHasCompliantStartTimeFormat - a sh:NodeShape ; - sh:name "DisclosureCheck" ; - sh:description "`DisclosureCheck` --> `startTime` MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - sh:target [ - a sh:SPARQLTarget ; - sh:select """ - PREFIX schema: - PREFIX shp: - - SELECT ?this - WHERE { - ?this schema:additionalType shp:DisclosureCheck ; - schema:startTime ?o - } - """ ; - ] ; - - sh:property [ - a sh:PropertyShape ; - sh:name "StartTime" ; - sh:path schema:startTime ; - sh:minCount 0 ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "`DisclosureCheck` --> `startTime` MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . - - -five-safes-crate:DisclosureObjectHasCompliantEndTimeFormat - a sh:NodeShape ; - sh:name "DisclosureCheck" ; - sh:description "`DisclosureCheck` --> `endTime` MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - sh:target [ - a sh:SPARQLTarget ; - sh:select """ - PREFIX schema: - PREFIX shp: - - SELECT ?this - WHERE { - ?this schema:additionalType shp:DisclosureCheck ; - schema:endTime ?o - } - """ ; - ] ; - - sh:property [ - a sh:PropertyShape ; - sh:name "EndTime" ; - sh:path schema:endTime ; - sh:minCount 0 ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; - sh:severity sh:Violation ; - sh:message "`DisclosureCheck` --> `endTime` MUST follow the RFC 3339 standard (YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ; - ] . diff --git a/rocrate_validator/profiles/five-safes-crate/should/12_check_phase.ttl b/rocrate_validator/profiles/five-safes-crate/should/12_check_phase.ttl index 4cd77608..3a8deea4 100644 --- a/rocrate_validator/profiles/five-safes-crate/should/12_check_phase.ttl +++ b/rocrate_validator/profiles/five-safes-crate/should/12_check_phase.ttl @@ -188,4 +188,3 @@ five-safes-crate:CheckValueShouldHaveActionStatus sh:severity sh:Warning ; sh:message "CheckValue SHOULD have actionStatus property." ; ] . - diff --git a/rocrate_validator/profiles/five-safes-crate/should/4_sign_off.ttl b/rocrate_validator/profiles/five-safes-crate/should/4_sign_off.ttl index d671a0d9..abbfc615 100644 --- a/rocrate_validator/profiles/five-safes-crate/should/4_sign_off.ttl +++ b/rocrate_validator/profiles/five-safes-crate/should/4_sign_off.ttl @@ -171,8 +171,7 @@ five-safes-crate:SignOffPhaseEndTime sh:path schema:endTime ; sh:minCount 1 ; sh:maxCount 1 ; - sh:pattern "^[0-9]{4}-[0-9]{2}-[0-9]{2}[Tt][0-9]{2}:[0-9]{2}:[0-9]{2}([.|,][0-9]+)?(Z|z|[+-][0-9]{2}:[0-9]{2})$" ; sh:severity sh:Warning ; - sh:description "Sign Off object SHOULD have endTime property if action completed or failed. This must follow ISO-8601 syntax" ; - sh:message "Sign Off object SHOULD have endTime property if action completed or failed. This must follow ISO-8601 syntax" ; + sh:description "Sign Off object SHOULD have endTime property if action completed or failed." ; + sh:message "Sign Off object SHOULD have endTime property if action completed or failed." ; ] . diff --git a/tests/integration/profiles/five-safes-crate/test_5src_11_workflow_execution.py b/tests/integration/profiles/five-safes-crate/test_5src_11_workflow_execution.py index 6e84c643..68b66b52 100644 --- a/tests/integration/profiles/five-safes-crate/test_5src_11_workflow_execution.py +++ b/tests/integration/profiles/five-safes-crate/test_5src_11_workflow_execution.py @@ -136,10 +136,10 @@ def test_5src_workflow_object_has_no_properly_formatted_start_time(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["WorkflowExecution"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "The startTime of the workflow execution object MUST follow the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], @@ -169,10 +169,10 @@ def test_5src_workflow_object_has_no_properly_formatted_end_time(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["WorkflowExecution"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "The endTime of the workflow execution object MUST follow the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], diff --git a/tests/integration/profiles/five-safes-crate/test_5src_12_check_phase.py b/tests/integration/profiles/five-safes-crate/test_5src_12_check_phase.py index 08dceba5..b7e57cbd 100644 --- a/tests/integration/profiles/five-safes-crate/test_5src_12_check_phase.py +++ b/tests/integration/profiles/five-safes-crate/test_5src_12_check_phase.py @@ -108,10 +108,10 @@ def test_5src_check_value_start_time_not_iso_standard(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["CheckValue"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "`CheckValue` --> `startTime` MUST follows the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], @@ -142,10 +142,10 @@ def test_5src_check_value_end_time_not_iso_standard(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["CheckValue"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "`CheckValue` --> `endTime` MUST follows the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], diff --git a/tests/integration/profiles/five-safes-crate/test_5src_13_validation_phase.py b/tests/integration/profiles/five-safes-crate/test_5src_13_validation_phase.py index 60ff3afb..36e59646 100644 --- a/tests/integration/profiles/five-safes-crate/test_5src_13_validation_phase.py +++ b/tests/integration/profiles/five-safes-crate/test_5src_13_validation_phase.py @@ -133,10 +133,10 @@ def test_5src_validation_check_start_time_not_iso_standard(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["ValidationCheck"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "ValidationCheck --> `startTime` MUST follows the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], @@ -166,10 +166,10 @@ def test_5src_validation_check_end_time_not_iso_standard(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["ValidationCheck"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "ValidationCheck --> `endTime` MUST follows the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], diff --git a/tests/integration/profiles/five-safes-crate/test_5src_14_workflow_retrieval_phase.py b/tests/integration/profiles/five-safes-crate/test_5src_14_workflow_retrieval_phase.py index 3d66d3a8..24bf3335 100644 --- a/tests/integration/profiles/five-safes-crate/test_5src_14_workflow_retrieval_phase.py +++ b/tests/integration/profiles/five-safes-crate/test_5src_14_workflow_retrieval_phase.py @@ -102,10 +102,10 @@ def test_5src_download_action_start_time_not_iso_standard(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["DownloadAction"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "`DownloadAction` --> `startTime` MUST follows the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], @@ -135,10 +135,10 @@ def test_5src_check_value_end_time_not_iso_standard(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["DownloadAction"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "`DownloadAction` --> `endTime` MUST follows the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], @@ -361,6 +361,7 @@ def test_5src_download_action_does_not_have_action_status_property(): # ----- MAY fails tests + def test_5src_downloaded_workflow_is_not_represented_by_its_own_entity(): sparql = ( SPARQL_PREFIXES diff --git a/tests/integration/profiles/five-safes-crate/test_5src_4_signoff_phase.py b/tests/integration/profiles/five-safes-crate/test_5src_4_signoff_phase.py index 7f9cd8f3..f9918348 100644 --- a/tests/integration/profiles/five-safes-crate/test_5src_4_signoff_phase.py +++ b/tests/integration/profiles/five-safes-crate/test_5src_4_signoff_phase.py @@ -112,9 +112,7 @@ def test_5src_signoff_phase_wrong_type(): requirement_severity=Severity.REQUIRED, expected_validation_result=False, expected_triggered_requirements=["SignOff"], - expected_triggered_issues=[ - "Sign Off phase MUST be a `schema:AssessAction`." - ], + expected_triggered_issues=["Sign Off phase MUST be a `schema:AssessAction`."], profile_identifier="five-safes-crate", rocrate_entity_mod_sparql=sparql, ) @@ -209,7 +207,6 @@ def test_5src_signoff_phase_no_endtime(): expected_triggered_requirements=["SignOffPhaseEndTime"], expected_triggered_issues=[ "Sign Off object SHOULD have endTime property if action completed or failed." - + " This must follow ISO-8601 syntax" ], profile_identifier="five-safes-crate", rocrate_entity_mod_sparql=sparql, @@ -242,10 +239,12 @@ def test_5src_signoff_phase_malformed_endtime(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.RECOMMENDED, expected_validation_result=False, - expected_triggered_requirements=["SignOffPhaseEndTime"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ - "Sign Off object SHOULD have endTime property if action completed or failed." - + " This must follow ISO-8601 syntax" + ( + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " + "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." + ) ], profile_identifier="five-safes-crate", rocrate_entity_mod_sparql=sparql, @@ -277,7 +276,6 @@ def test_5src_signoff_phase_no_starttime(): expected_triggered_requirements=["SignOffPhaseStartTime"], expected_triggered_issues=[ "Sign Off object MAY have a startTime property if action is active, completed or failed." - + " This must follow ISO-8601 syntax" ], profile_identifier="five-safes-crate", rocrate_entity_mod_sparql=sparql, @@ -310,10 +308,12 @@ def test_5src_signoff_phase_malformed_starttime(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.OPTIONAL, expected_validation_result=False, - expected_triggered_requirements=["SignOffPhaseStartTime"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ - "Sign Off object MAY have a startTime property if action is active, completed or failed." - + " This must follow ISO-8601 syntax" + ( + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " + "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." + ) ], profile_identifier="five-safes-crate", rocrate_entity_mod_sparql=sparql, @@ -343,9 +343,7 @@ def test_5src_signoff_phase_no_actionstatus(): requirement_severity=Severity.RECOMMENDED, expected_validation_result=False, expected_triggered_requirements=["SignOffPhaseProperties"], - expected_triggered_issues=[ - "The Sign-Off Phase SHOULD have an actionStatus" - ], + expected_triggered_issues=["The Sign-Off Phase SHOULD have an actionStatus"], profile_identifier="five-safes-crate", rocrate_entity_mod_sparql=sparql, ) @@ -374,9 +372,7 @@ def test_5src_signoff_phase_no_agent(): requirement_severity=Severity.RECOMMENDED, expected_validation_result=False, expected_triggered_requirements=["SignOffPhaseProperties"], - expected_triggered_issues=[ - "The Sign-Off Phase SHOULD have an agent" - ], + expected_triggered_issues=["The Sign-Off Phase SHOULD have an agent"], profile_identifier="five-safes-crate", rocrate_entity_mod_sparql=sparql, ) diff --git a/tests/integration/profiles/five-safes-crate/test_5src_8_disclosure_phase.py b/tests/integration/profiles/five-safes-crate/test_5src_8_disclosure_phase.py index 1d3310c8..cb6ae960 100644 --- a/tests/integration/profiles/five-safes-crate/test_5src_8_disclosure_phase.py +++ b/tests/integration/profiles/five-safes-crate/test_5src_8_disclosure_phase.py @@ -199,10 +199,10 @@ def test_5src_disclosure_object_has_no_properly_formatted_start_time(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["DisclosureCheck"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "`DisclosureCheck` --> `startTime` MUST follow the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ], @@ -232,10 +232,10 @@ def test_5src_disclosure_object_has_no_properly_formatted_end_time(): rocrate_path=ValidROC().five_safes_crate_result, requirement_severity=Severity.REQUIRED, expected_validation_result=False, - expected_triggered_requirements=["DisclosureCheck"], + expected_triggered_requirements=["Timestamp Format"], expected_triggered_issues=[ ( - "`DisclosureCheck` --> `endTime` MUST follow the RFC 3339 standard " + "All `startTime` and `endTime` values MUST follow the RFC 3339 standard " "(YYYY-MM-DD'T'hh:mm:ss[.fraction](Z | ±hh:mm))." ) ],