Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
5273986
Merged 7_requested_workflow_run.tll files.
EttoreM Jan 24, 2026
37200d4
Merged 4_sign_off.tll files.
EttoreM Jan 24, 2026
83de772
Merged 12_check_phase.tll files.
EttoreM Jan 25, 2026
d7380da
Preserved the original @context when re-serializing the temp crate so…
EttoreM Jan 25, 2026
94c4756
patches on shared.py
EttoreM Jan 25, 2026
c06c93f
Merged 11_workflow_execution_phase.tll files.
EttoreM Jan 25, 2026
725ed50
removed obsolete code from flattened 11_workflow_execution_phase.ttl
EttoreM Jun 18, 2026
b1d51f1
Merge debelop into 74-flatten-7_requested_workflow_runttl-files
EttoreM Jun 18, 2026
7743a34
Merged 6_workflow_reference.tll files.
EttoreM Jan 24, 2026
cff2411
Merged 2_requesting_agent.tll files.
EttoreM Jan 23, 2026
e340aa1
Updated content of flattened ttl file for ruleset #6.
EttoreM Jun 22, 2026
b486554
Updated content of flattened ttl file for ruleset #2.
EttoreM Jun 22, 2026
875bc0e
Merged 3_timestamp_format.ttl files.
EttoreM Jan 23, 2026
0f49259
Merged 1_root_data_entity.ttl files.
EttoreM Jan 23, 2026
f509995
Updated content of flattened ttl file for ruleset #1.
EttoreM Jun 22, 2026
14c634b
Updated content of flattened ttl file for ruleset #1.
EttoreM Jun 22, 2026
008add1
Updated content of flattened ttl file for ruleset #1 (requesting agent)
EttoreM Jun 22, 2026
6d893eb
Merged 13_validation_phase.tll files.
EttoreM Jan 26, 2026
5f1ac98
Copied EXACT content of MUST / SHOULD / MAY in flattened ttl
EttoreM Jun 25, 2026
784cb0f
Copied EXACT content of MUST / SHOULD / MAY in flattened ttl
EttoreM Jun 25, 2026
131b7d7
Merged 10_outputs.tll files.
EttoreM Jan 25, 2026
fa6fc72
Rebased to develop
EttoreM Jun 25, 2026
105b5b0
Copied EXACT content of MUST / SHOULD / MAY in flattened ttl
EttoreM Jun 25, 2026
b3756de
Placed sh:Severity from within to sparql constrain to inside the pare…
EttoreM Jun 25, 2026
a2107ba
Merged 8_disclosure_phase.tll files.
EttoreM Jan 24, 2026
dad585a
modified rocrate_validator/profiles/five-safes-crate/7_requested_work…
EttoreM Jun 25, 2026
58df150
modified rocrate_validator/profiles/five-safes-crate/7_requested_work…
EttoreM Jun 25, 2026
02c494f
Placed sh:Severity from within to sparql constrain to inside the pare…
EttoreM Jun 25, 2026
9f4e4d0
fix(models): :bug: forward `extra_profiles_path` when computing
kikkomep Apr 27, 2026
57facae
test(models): :white_check_mark: cover profile resoution from
kikkomep Apr 27, 2026
6e9bd7d
fix(shacl): :bug: build property shape subgraph by reachability
kikkomep May 6, 2026
6948968
test(utils): :white_check_mark: add unit tests for the `get_shape_pro…
kikkomep May 6, 2026
0fa5faa
refactor(models): :recycle: introduce pre/post internal validation ho…
kikkomep May 6, 2026
5810257
test(model): :white_check_mark: add unit tests for the pre/post inter…
kikkomep May 6, 2026
2986c68
fix(shacl): :bug: evaluate inherited shapes for zero-shape target pro…
kikkomep May 6, 2026
ef97573
test(shacl): :white_check_mark: regression test for zero-shape target…
kikkomep May 6, 2026
73eb49f
fix(model): :rotating_light: add missing methods and reformat code
kikkomep May 6, 2026
2e19628
fix: :rotating_light: reformat code to fix linter warnings
kikkomep May 6, 2026
6fed97b
fix error message for bad position in HowToStep
simleo May 7, 2026
8c7615e
fix(shacl): :bug: derive NodeShape level from nested PropertyShapes
kikkomep Apr 28, 2026
f34c3e8
fix(core): :bug: filter failed requirements/checks by configured seve…
kikkomep Apr 28, 2026
57f94d8
test(shacl): :white_check_mark: cover NodeShape level derivation from…
kikkomep Apr 28, 2026
b6381b1
fix(shacl): :bug: drop sub-threshold pyshacl violations at the source
kikkomep Apr 28, 2026
0a2393f
feat(model): :sparkles: extend Profile model to compute descendants
kikkomep May 8, 2026
9776147
feat(checks): :sparkles: support `deactivated` flag on RequirementChe…
kikkomep May 8, 2026
9424d5e
feat(model): :sparkles: skip deactivated Python checks
kikkomep May 8, 2026
ac4c142
chore(model): :art: reformat code
kikkomep May 8, 2026
86cc99d
test(checks): :white_check_mark: cover `deactivated` flag on Requirem…
kikkomep May 8, 2026
8b1c43e
docs(profiles): :sparkles: document check override-by-name and deacti…
kikkomep May 8, 2026
eaaab55
started working on ISA process fix
floWetzels May 11, 2026
a2cb43f
Process class for all process checks
floWetzels May 11, 2026
2675bb7
fixed non-determinism with manual assay/study definition in process
floWetzels May 12, 2026
f55a0b9
added classes for most ISA types
floWetzels May 13, 2026
77f9c46
finalized rdf classes for ISA types
floWetzels May 13, 2026
62193a9
Added tests for objects with ISA types that are not connected to ISA …
floWetzels May 18, 2026
840e0f2
Fixed some comments and descriptions in ISA profile
floWetzels May 18, 2026
4516502
minor formatting fixes
floWetzels May 18, 2026
8a9184a
feat(model): :sparkles: feat(core): :sparkles: add SourceSnippet clas…
kikkomep Apr 29, 2026
7f58f3b
feat(Python): :sparkles: implement the `get_source_snippet` method fo…
kikkomep Apr 29, 2026
b634f59
feat(SHACL): :sparkles: implement the `get_source_snippet` method for…
kikkomep Apr 29, 2026
ffa3c63
refactor(SHACL): :recycle: rewrite `build_node_subgraph` as an iterat…
kikkomep Apr 29, 2026
55aef09
feat(cli): extend CLI command to describe requirement checks
kikkomep Apr 29, 2026
81aded0
test(cli): :white_check_mark: add unit tests for the `describe profil…
kikkomep Apr 30, 2026
d70c147
fix(shacl): :bug: reference `owner.graph` in `get_source_snippet`
kikkomep May 13, 2026
b2ed543
feat(utils): :sparkles: add offline mode and cache management to Http…
kikkomep Apr 23, 2026
1a2c777
feat(utils): :sparkles: add helpers to configure the cache path
kikkomep Apr 23, 2026
95c862c
feat(core): :sparkles: support offline mode when downloading remote R…
kikkomep Apr 23, 2026
59cf00a
test(utils): :white_check_mark: add unit tests for HttpRequester offl…
kikkomep Apr 23, 2026
720ce2e
feat(utils): :sparkles: add HTTP cache warm-up from profile artifacts
kikkomep Apr 23, 2026
217ddcc
feat(utils): :sparkles: add cache-aware JSON-LD document loader
kikkomep Apr 23, 2026
423cd4b
feat(models): :sparkles: add offline and no-cache options to Validati…
kikkomep Apr 23, 2026
342ed73
feat(cli): :sparkles: add `--offline` flag and refine `--no-cache` he…
kikkomep Apr 23, 2026
ff977df
feat(cli): :sparkles: add `cache` subcommand to manage the HTTP cache
kikkomep Apr 23, 2026
237f379
test(utils): :white_check_mark: add unit tests for profile URL discov…
kikkomep Apr 23, 2026
8443237
test(utils): :white_check_mark: add unit tests for the JSON-LD docume…
kikkomep Apr 23, 2026
3f0e37d
test(integration): :white_check_mark: add integration tests for offli…
kikkomep Apr 23, 2026
75a11d3
fix(utils): :loud_sound: fix log level message
kikkomep Apr 23, 2026
3eb23b4
style(tests): :rotating_light: fix linter warning F401
kikkomep Apr 23, 2026
080cbb9
test(conftest): :wrench: update test configuration
kikkomep Apr 23, 2026
1573ca2
chore: :loud_sound: adjust cache outcome log level
kikkomep Apr 23, 2026
ff827fa
feat(constants): :wrench: default HTTP cache to never expire
kikkomep May 13, 2026
1dd8e2c
fix(validation): :mute: report offline cache misses once per URL
kikkomep May 15, 2026
6b73d7b
fix(cli/cache): :sparkles: resolve profile tokens in `cache warm`
kikkomep May 15, 2026
d22e437
feat(cli/cache): :sparkles: allow caching of explicit URLs via 'cache…
kikkomep May 15, 2026
341f35e
feat(cli/cache): :sparkles: add `cache list` (alias `ls`)
kikkomep May 15, 2026
5d60ac5
test(conftest): :wrench: force wide terminal for Rich-based CLI asser…
kikkomep May 15, 2026
23192c7
test(validation): :white_check_mark: cover offline cache-miss warning…
kikkomep May 15, 2026
08fca4c
test(cli/cache): :white_check_mark: add CLI tests for 'cache warm --u…
kikkomep May 15, 2026
6db7272
refactor(cli/cache): :art: drop Status column from `cache list` table
kikkomep May 15, 2026
b40d8a9
fix(cli/cache): :bug: avoid stream=True when fetching remote crates
kikkomep Jun 1, 2026
4bb48a6
test(cli/cache): :white_check_mark: add regression test for 'cache wa…
kikkomep Jun 1, 2026
c358092
refactor(errors): :recycle: accept str, Path or URI in ROCrateInvalid…
kikkomep May 19, 2026
9509e38
feat(uri): :sparkles: add `is_external_reference()` scheme detector
kikkomep May 19, 2026
0603933
feat(uri): :sparkles: classify remote schemes and report granular ava…
kikkomep May 19, 2026
cab8640
feat(rocrate): :sparkles: add check_availability() with AvailabilityS…
kikkomep May 19, 2026
605359f
refactor(checks): :recycle: document web-data-entity exclusion
kikkomep May 19, 2026
b5ce6f1
feat(checks): :sparkles: handle UNAUTHORIZED/UNCHECKABLE web data ent…
kikkomep May 19, 2026
e51b2b2
test(uri): :white_check_mark: add tests for scheme classification and…
kikkomep May 19, 2026
62d0b33
test(rocrate): :white_check_mark: test data entities with external re…
kikkomep May 19, 2026
6d4b058
test(checks): :white_check_mark: test external-reference data entitie…
kikkomep May 19, 2026
e14a846
fix(uri): :bug: treat file:// URIs with non-local authority as remote
kikkomep May 29, 2026
6b276ba
test(cli): :wrench: fix config to support small terminals windows
kikkomep May 29, 2026
dc0a72a
test(uri): :white_check_mark: add tests for file:// URIs with non-loc…
kikkomep May 29, 2026
9651778
chore(release): :arrow_up: update dependencies in `poetry.lock` file
kikkomep Jun 1, 2026
efbf62f
chore(release): :bookmark: bump version to 0.10.0
kikkomep Jun 1, 2026
2e0b6b0
docs: :memo: add documentation for cache and offline mode features
kikkomep Jun 1, 2026
6224cbd
docs: :books: update copyright years and refactor acknowledgements se…
kikkomep Jun 1, 2026
f31c31b
chore(docs): update configuration to suppress warnings
kikkomep Jun 1, 2026
8df288d
chore: :bookmark: update changelog (v0.10.0)
kikkomep Jun 1, 2026
f302e46
chore(typos): :wrench: exclude hexadecimal identifiers from spell che…
kikkomep Jun 1, 2026
8e1ac94
chore(release): :arrow_up: update dependencies in `poetry.lock` file
kikkomep Jun 1, 2026
3befd89
chore: 🔧 update obsolete GitHub actions
kikkomep Jun 1, 2026
22fecd1
refactor(http): extract session teardown into _close_session helper
kikkomep Jun 9, 2026
6b833f3
feat(http): reconfigure existing HttpRequester singleton instead of r…
kikkomep Jun 9, 2026
48e4eda
fix(http): resolve session method lazily in HTTP wrapper
kikkomep Jun 9, 2026
61ae512
fix(models): reconfigure HTTP requester in place instead of resetting it
kikkomep Jun 9, 2026
e5b43ea
test(http): add unit tests
kikkomep Jun 9, 2026
c02f08c
Copied EXACT content of MUST / SHOULD / MAY in flattened ttl
EttoreM Jun 25, 2026
532bd05
Placed sh:Severity from within to sparql constrain to inside the pare…
EttoreM Jun 25, 2026
4c3e3ed
Flattened ttl files for ruleset 5_profile_conformance.
EttoreM Jun 25, 2026
e40e5b4
Flattened ttl files for ruleset 14_workflow_retrieval_phase.
EttoreM Jun 25, 2026
15097f8
Flattened ttl files for ruleset 16_publishing_phase.ttl.
EttoreM Jun 25, 2026
1db3091
Flattened ttl files for ruleset 15_metadata.ttl.
EttoreM Jun 25, 2026
46c4082
Merge pull request #84 from eScienceLab/67-flatten-1_requesting_agent…
EttoreM Jun 30, 2026
1a28093
Merge pull request #85 from eScienceLab/68-flatten-1_responsible_proj…
EttoreM Jun 30, 2026
3a9f476
Merge pull request #86 from eScienceLab/69-flatten-1_root_data_entity…
EttoreM Jun 30, 2026
87f2ad7
Merge pull request #87 from eScienceLab/71-flatten-3_timestamp_format…
EttoreM Jun 30, 2026
725d5cd
Merge pull request #88 from eScienceLab/70-flatten-2_requesting_agent…
EttoreM Jun 30, 2026
38bed9f
Merge pull request #89 from eScienceLab/72-flatten-4_sign_offttl-files
EttoreM Jun 30, 2026
7c2c950
Merge pull request #90 from eScienceLab/73-flatten-6_workflow_referen…
EttoreM Jun 30, 2026
5635d01
Merge pull request #91 from eScienceLab/74-flatten-7_requested_workfl…
EttoreM Jun 30, 2026
6047405
Merge pull request #92 from eScienceLab/75-flatten-8_disclosure_phase…
EttoreM Jun 30, 2026
04e7734
Merge pull request #93 from eScienceLab/76-flatten-9_inputsttl-files
EttoreM Jun 30, 2026
5fdc5a4
Merge pull request #94 from eScienceLab/77-flatten-10_outputsttl-files
EttoreM Jun 30, 2026
d17575d
Merge pull request #95 from eScienceLab/78-flatten-11_workflow_execut…
EttoreM Jun 30, 2026
6c1d0ab
Merge pull request #96 from eScienceLab/79-flatten-12_check_phasettl-…
EttoreM Jun 30, 2026
995b413
Merge pull request #97 from eScienceLab/80-flatten-13_validation_phas…
EttoreM Jun 30, 2026
ede5622
Merge pull request #116 from eScienceLab/115-flatten-5_profile_confor…
EttoreM Jun 30, 2026
a50c48f
Merge pull request #118 from eScienceLab/117-flatten-14_workflow_retr…
EttoreM Jun 30, 2026
98c7709
Merge pull request #120 from eScienceLab/119-flatten-16_publishing_ph…
EttoreM Jun 30, 2026
c0400ea
Merge pull request #122 from eScienceLab/121-flatten-15_metadata_file…
EttoreM Jun 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,13 @@
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .


five-safes-crate:WorkflowRunActionHasResultIfActionCompleted
#=== MUST shapes ===#
# (none)


#=== SHOULD shapes ===#

five-safes-crate:CreateActionHasResultIfActionCompleted
a sh:NodeShape ;
sh:name "WorkflowRunAction" ;
sh:description "The `CreateAction` corresponding to the workflow run, with CompletedActionStatus, SHOULD have the `schema:result` property." ;
Expand Down Expand Up @@ -85,3 +91,7 @@ five-safes-crate:WorkflowRunActionResultOutputsHaveAllowedTypes
sh:class schema:PropertyValue;
]
) .


#=== MAY shapes ===#
# (none)
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# 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: <https://github.com/crs4/rocrate-validator/profiles/ro-crate/> .
@prefix five-safes-crate: <https://github.com/eScienceLab/rocrate-validator/profiles/five-safes-crate/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix schema: <http://schema.org/> .
@prefix purl: <http://purl.org/dc/terms/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix validator: <https://github.com/crs4/rocrate-validator/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .


#=== MUST shapes ===#

five-safes-crate:WorkflowMustHaveDescriptiveName
a sh:NodeShape ;
sh:name "WorkflowExecution" ;
sh:targetClass ro-crate:WorkflowRunAction ;

sh:property [
a sh:PropertyShape ;
sh:name "name" ;
sh:minCount 1 ;
sh:description "The `CreateAction` corresponding to the workflow run MUST have a name string of at least 10 characters." ;
sh:path schema:name ;
sh:datatype xsd:string ;
sh:minLength 10 ;
sh:severity sh:Violation ;
sh:message "The `CreateAction` corresponding to the workflow run MUST have a name string of at least 10 characters." ;
] .


five-safes-crate:WorkflowMustHaveActionStatusWithAllowedValues
a sh:NodeShape ;
sh:name "WorkflowExecution" ;
sh:targetClass ro-crate:WorkflowRunAction ;
sh:property [
a sh:PropertyShape ;
sh:minCount 1 ;
sh:name "actionStatus" ;
sh:description "`CreateAction` MUST have an actionStatus with an allowed value (see https://schema.org/ActionStatusType)." ;
sh:path schema:actionStatus ;
sh:in (
"http://schema.org/PotentialActionStatus"
"http://schema.org/ActiveActionStatus"
"http://schema.org/CompletedActionStatus"
"http://schema.org/FailedActionStatus"
) ;
sh:severity sh:Violation ;
sh:message "`CreateAction` MUST have an actionStatus with an allowed value (see https://schema.org/ActionStatusType)." ;
] .


#=== SHOULD shapes ===#

five-safes-crate:WorkflowexecutionObjectHasEndTimeIfEnded
a sh:NodeShape ;
sh:name "WorkflowExecution" ;
sh:description "The workflow run object SHOULD have an endTime property if it has ended." ;

sh:target [
a sh:SPARQLTarget ;
sh:select """
PREFIX schema: <http://schema.org/>
PREFIX rocrate: <https://github.com/crs4/rocrate-validator/profiles/ro-crate/>

SELECT ?this
WHERE {
?this a rocrate:WorkflowRunAction ;
schema:actionStatus ?status .
FILTER(?status IN (
"http://schema.org/CompletedActionStatus",
"http://schema.org/FailedActionStatus"
))
}
""" ;
] ;

sh:property [
a sh:PropertyShape ;
sh:name "EndTime" ;
sh:path schema:endTime ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Warning ;
sh:description "The workflow execution object SHOULD have an endTime property if it has ended." ;
sh:message "The workflow execution object SHOULD have an endTime property if it has ended." ;
] .


#=== MAY shapes ===#

five-safes-crate:WorkflowexecutionObjectHasStartTimeIfBegun
a sh:NodeShape ;
sh:name "WorkflowExecution" ;
sh:description (
"The workflow execution object MAY have a startTime if actionStatus is "
"either ActiveActionStatus, CompletedActionStatus or FailedActionStatus."
) ;

sh:target [
a sh:SPARQLTarget ;
sh:select """
PREFIX schema: <http://schema.org/>
PREFIX rocrate: <https://github.com/crs4/rocrate-validator/profiles/ro-crate/>

SELECT ?this
WHERE {
?this a rocrate:WorkflowRunAction ;
schema:actionStatus ?status .
FILTER(?status IN (
"http://schema.org/CompletedActionStatus",
"http://schema.org/FailedActionStatus",
"http://schema.org/ActiveActionStatus"
))
}
""" ;
] ;

sh:property [
a sh:PropertyShape ;
sh:name "StartTime" ;
sh:path schema:startTime ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Info ;
sh:description (
"The workflow execution object MAY have a startTime if actionStatus is "
"either ActiveActionStatus, CompletedActionStatus or FailedActionStatus."
) ;
sh:message "The workflow execution object MAY have a startTime if actionStatus is either ActiveActionStatus, CompletedActionStatus or FailedActionStatus." ;
] .
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,86 @@
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .


#=== MUST shapes ===#

five-safes-crate:CheckValueObjectHasDescriptiveNameAndIsAssessAction
a sh:NodeShape ;
sh:name "CheckValue" ;
sh:description "" ;

sh:target [
a sh:SPARQLTarget ;
sh:select """
PREFIX schema: <http://schema.org/>
PREFIX shp: <https://w3id.org/shp#>

SELECT ?this
WHERE {
?this schema:additionalType shp:CheckValue .
}
""" ;
] ;

sh:property [
sh:path rdf:type ;
sh:minCount 1 ;
sh:hasValue schema:AssessAction;
sh:severity sh:Violation ;
sh:message "CheckValue MUST be a `AssessAction`." ;
] ;

sh:property [
sh:a sh:PropertyShape ;
sh:name "name" ;
sh:description "CheckValue MUST have a human readable name string." ;
sh:path schema:name ;
sh:datatype xsd:string ;
sh:severity sh:Violation ;
sh:message "CheckValue MUST have a human readable name string." ;
] .

five-safes-crate:CheckValueActionStatusMustHaveAllowedValues
a sh:NodeShape ;
sh:name "CheckValue" ;
sh:description "" ;

sh:target [
a sh:SPARQLTarget ;
sh:select """
PREFIX schema: <http://schema.org/>
PREFIX shp: <https://w3id.org/shp#>

SELECT ?this
WHERE {
?this schema:additionalType shp:CheckValue ;
schema:actionStatus ?status .
}
""" ;
] ;

sh:property [
a sh:PropertyShape ;
sh:name "ActionStatus" ;
sh:path schema:actionStatus ;
sh:in (
"http://schema.org/PotentialActionStatus"
"http://schema.org/ActiveActionStatus"
"http://schema.org/CompletedActionStatus"
"http://schema.org/FailedActionStatus"
) ;
sh:severity sh:Violation ;
sh:message "`CheckValue` --> `actionStatus` MUST have one of the allowed values." ;
] .


#=== SHOULD shapes ===#

five-safes-crate:RootDataEntityShouldMentionCheckValueObject
a sh:NodeShape ;
sh:name "RootDataEntity" ;
sh:targetClass ro-crate:RootDataEntity ;
sh:description "" ;
sh:severity sh:Warning ;

sh:sparql [
a sh:SPARQLConstraint ;
Expand All @@ -44,7 +119,6 @@ five-safes-crate:RootDataEntityShouldMentionCheckValueObject
}
}
""" ;
sh:severity sh:Warning ;
sh:message "RootDataEntity SHOULD mention a check value object." ;
] .

Expand Down Expand Up @@ -188,3 +262,38 @@ five-safes-crate:CheckValueShouldHaveActionStatus
sh:severity sh:Warning ;
sh:message "CheckValue SHOULD have actionStatus property." ;
] .


#=== MAY shapes ===#

five-safes-crate:CheckValueMayHaveStartTime
a sh:NodeShape ;
sh:name "CheckValue" ;
sh:description "" ;
sh:target [
a sh:SPARQLTarget ;
sh:select """
PREFIX schema: <http://schema.org/>
PREFIX shp: <https://w3id.org/shp#>
SELECT ?this
WHERE {
?this schema:additionalType shp:CheckValue ;
schema:actionStatus ?status .
FILTER(?status IN (
"http://schema.org/CompletedActionStatus",
"http://schema.org/FailedActionStatus",
"http://schema.org/ActiveActionStatus"
))
}
""" ;
] ;

sh:property [
a sh:PropertyShape ;
sh:name "StartTime" ;
sh:path schema:startTime ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:severity sh:Info ;
sh:message "`CheckValue` MAY have the `startTime` property." ;
] .
Loading