diff --git a/examples/Bad-TestAsset-001.yaml b/examples/Bad-TestAsset-001.yaml index 783b421..171adc6 100644 --- a/examples/Bad-TestAsset-001.yaml +++ b/examples/Bad-TestAsset-001.yaml @@ -1,38 +1,15 @@ # Example TestAsset data object --- -# TODO: the TestAsset example data needs further elaboration -# -# TestAsset: -# description: >- -# Represents a Test Asset, which is a single specific instance of -# TestCase-agnostic semantic parameters representing the -# specification of a Translator test target with inputs and (expected) outputs. -# is_a: TestEntity -# slots: -# - input_id -# - input_name -# - predicate -# - output_id -# - output_name -# - expected_output -# - test_issue -# - semantic_severity -# - in_v1 -# - well_known -# - test_metadata -# slot_usage: -# id: -# aliases: ["AssetIdentifier"] -# range: uriorcurie -# tags: -# description: >- -# One or more 'tags' slot values (inherited from TestEntity) should generally -# be defined to specify TestAsset membership in a "Block List" collection -# # Bad Query 1 - Missing required identifier? # id: example:TestAsset001 -name: foo bar -description: This is a test asset -test_meta_data: { "foo": "bar" } \ No newline at end of file +name: TestAsset001 +description: Fingolimod treats multiple sclerosis +input_id: PUBCHEM.COMPOUND:107970 +predicate_name: treats +output_id: MONDO:0005301 +expected_output: Acceptable +test_runner_settings: + - "inferred" + - "test" diff --git a/examples/Bad-TestCase-001.yaml b/examples/Bad-TestCase-001.yaml deleted file mode 100644 index 11babb4..0000000 --- a/examples/Bad-TestCase-001.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Example TestCase data object ---- -# TODO: the TestCase example data needs further elaboration -# -# TestCase: -# description: >- -# Represents a single enumerated instance of Test Case, derived from a -# given collection of one or more TestAsset instances (the value of the -# 'test_assets' slot) which define the 'inputs' and 'outputs' of the -# TestCase, used to probe a particular test condition. -# is_a: TestEntity -# slots: -# - test_env -# - test_case_type -# - query_type -# - test_assets -# - preconditions -# slot_usage: -# test_case_type: -# description: >- -# Is this valid or even necessary with the class names already -# available from classes of 'test_assets' used (seems redundant?) -# test_assets: -# aliases: ["Block List"] -# description: >- -# One or more 'tags' slot values (inherited from TestEntity) -# should generally be defined as filters to specify TestAsset -# membership in 'test_assets' slot ("Block List") collection. -# tags: -# description: >- -# One or more 'tags' slot values (inherited from TestEntity) should generally -# be defined as filters to specify TestAsset membership in a "Block List" collection. -# -# Bad Query 1 - Missing required identifier? - -# id: id: example:TestCase001 -name: foo bar -description: This is a test case diff --git a/examples/Bad-TestEntity-001.yaml b/examples/Bad-TestEntity-001.yaml index 9676668..dbe6245 100644 --- a/examples/Bad-TestEntity-001.yaml +++ b/examples/Bad-TestEntity-001.yaml @@ -11,6 +11,8 @@ # - id # - name # - description +# - tags +# - test_runner_settings # # where the slots are: # diff --git a/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not b/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not index f9357e2..3f8643b 100644 --- a/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not +++ b/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not @@ -11,6 +11,8 @@ # - id # - name # - description +# - tags +# - test_runner_settings # # where the slots are: # diff --git a/examples/Good-AcceptanceTestAsset-001.yaml b/examples/Good-AcceptanceTestAsset-001.yaml index 5dd07d3..2a48722 100644 --- a/examples/Good-AcceptanceTestAsset-001.yaml +++ b/examples/Good-AcceptanceTestAsset-001.yaml @@ -1,6 +1,7 @@ # Example AcceptanceTestAsset data object --- # TODO: the AcceptanceTestAsset example data needs further elaboration +# (there don't seem to be any required: true AcceptanceTestAsset-specific fields) # # AcceptanceTestAsset: @@ -21,14 +22,16 @@ # - notes # id: example:AcceptanceTestAsset001 -name: foo bar -description: This is a acceptance test case' -runner_settings: +name: AcceptanceTestAsset001 +description: Iron treats Aceruloplasminemia +input_id: MONDO:0011426 +predicate_name: treats +output_id: DRUGBANK:DB01592 +expected_output: NeverShow +test_metadata: + id: "test:1" + test_source: SMURF +test_runner_settings: - "inferred" - "test" -test_metadata: - id: 1 - test_source: SMURF, - test_reference: https://github.com/NCATSTranslator/Feedback/issues/506 - test_objective: AcceptanceTest diff --git a/examples/Good-AcceptanceTestCase-001.yaml b/examples/Good-AcceptanceTestCase-001.yaml index 8102b5c..ca6f646 100644 --- a/examples/Good-AcceptanceTestCase-001.yaml +++ b/examples/Good-AcceptanceTestCase-001.yaml @@ -13,10 +13,20 @@ id: example:AcceptanceTestCase001 name: foo bar description: This is an acceptance test case +test_runner_settings: + - "inferred" + - "test" test_assets: - - id: example:TestAsset001 - name: foo bar - description: This is a test asset - runner_settings: + - id: example:AcceptanceTestAsset001 + name: AcceptanceTestAsset001 + description: Iron treats Aceruloplasminemia + input_id: MONDO:0011426 + predicate_name: treats + output_id: DRUGBANK:DB01592 + expected_output: NeverShow + test_runner_settings: - "inferred" - - "test" \ No newline at end of file + - "test" + test_metadata: + id: "test:1" + test_source: SMURF \ No newline at end of file diff --git a/examples/Good-TestAsset-001.json b/examples/Good-TestAsset-001.json index 05aae30..f773550 100644 --- a/examples/Good-TestAsset-001.json +++ b/examples/Good-TestAsset-001.json @@ -1,16 +1,13 @@ { "id": "example:TestAsset001", - "name": "foo bar", - "description": "This is a test asset", - "runner_settings": ["inferred", "test"], + "name": "TestAsset001", + "description": "Fingolimod treats multiple sclerosis", + "input_id": "PUBCHEM.COMPOUND:107970", + "predicate_name": "treats", + "output_id": "MONDO:0005301", + "expected_output": "Acceptable", + "test_runner_settings": ["inferred", "test"], "test_metadata": { - "id": "1", - "name": null, - "description": null, - "tags": [], - "test_source": "SMURF", - "test_reference": "https://github.com/NCATSTranslator/Feedback/issues/506", - "test_objective": "AcceptanceTest", - "test_annotations": [] + "id": "example:TestAsset001" } } diff --git a/examples/Good-TestAsset-001.yaml b/examples/Good-TestAsset-001.yaml index cbfb640..31fd44d 100644 --- a/examples/Good-TestAsset-001.yaml +++ b/examples/Good-TestAsset-001.yaml @@ -1,7 +1,8 @@ # Example TestAsset data object --- -# TODO: the TestAsset example data needs further elaboration +# TODO: the TestAsset example data may need further elaboration +# # # TestAsset: # description: >- @@ -12,15 +13,20 @@ # slots: # - input_id # - input_name -# - predicate +# - input_category +# - predicate_id +# - predicate_name # - output_id # - output_name +# - output_category +# - association +# - qualifiers # - expected_output # - test_issue # - semantic_severity # - in_v1 # - well_known -# - runner_settings +# - test_reference # slot_usage: # id: # aliases: ["AssetIdentifier"] @@ -29,7 +35,7 @@ # description: >- # One or more 'tags' slot values (inherited from TestEntity) should generally # be defined to specify TestAsset membership in a "Block List" collection -# runner_settings: +# test_runner_settings: # description: >- # Settings for the test harness, e.g. "inferred" # @@ -38,7 +44,7 @@ name: TestAsset001 description: Iron treats Aceruloplasminemia input_id: MONDO:0011426 input_name: Aceruloplasminemia -predicate: Treats +predicate_name: treats output_id: DRUGBANK:DB01592 output_name: Iron (PUBCHEM) expected_output: NeverShow @@ -46,11 +52,8 @@ test_reference: https://github.com/NCATSTranslator/Feedback/issues/506 semantic_severity: NotApplicable in_v1: True well_known: False -runner_settings: - - "inferred" - - "test" test_metadata: - id: 1 - test_source: SMURF, - test_reference: https://github.com/NCATSTranslator/Feedback/issues/506 - test_objective: AcceptanceTest + id: "example:TestAsset001" +test_runner_settings: + - "inferred" + - "test" \ No newline at end of file diff --git a/examples/Good-TestCase-001.json b/examples/Good-TestCase-001.json index 1a006b7..d4763fe 100644 --- a/examples/Good-TestCase-001.json +++ b/examples/Good-TestCase-001.json @@ -5,9 +5,17 @@ "test_assets": [ { "id": "example:TestAsset001", - "name": "foo bar", - "description": "This is a test asset", - "runner_settings": ["inferred","test_setting"] + "name": "TestAsset001", + "description": "Fingolimod treats multiple sclerosis", + "input_id": "PUBCHEM.COMPOUND:107970", + "predicate_name": "treats", + "output_id": "MONDO:0005301", + "expected_output": "Acceptable", + "test_runner_settings": ["inferred", "test"], + "test_metadata": { + "id": "example:TestMetadata001" + } } - ] + ], + "test_runner_settings": ["inferred", "test"] } diff --git a/examples/Good-TestCase-001.yaml b/examples/Good-TestCase-001.yaml index 48cbafc..2af86e1 100644 --- a/examples/Good-TestCase-001.yaml +++ b/examples/Good-TestCase-001.yaml @@ -2,6 +2,7 @@ --- # TODO: the TestCase example data needs further elaboration # +# # TestCase: # description: >- # Represents a single enumerated instance of Test Case, derived from a @@ -34,10 +35,20 @@ id: example:TestCase001 name: foo bar description: This is a test case +# NOTE: we only provide the minimal set of TestAsset slots where required: true test_assets: - id: example:TestAsset001 - name: foo bar - description: This is a test asset - runner_settings: + name: TestAsset001 + input_id: MONDO:0011426 + predicate_name: treats + output_id: DRUGBANK:DB01592 + expected_output: NeverShow + test_runner_settings: - "inferred" - "test" + test_metadata: + id: test:1 + test_source: SMURF +test_runner_settings: + - "inferred" + - "test" \ No newline at end of file diff --git a/examples/Good-TestCaseSpecification-001.yaml b/examples/Good-TestCaseSpecification-001.yaml index 5c4f8cb..cf671f2 100644 --- a/examples/Good-TestCaseSpecification-001.yaml +++ b/examples/Good-TestCaseSpecification-001.yaml @@ -11,3 +11,7 @@ id: example:TestCaseSpecification001 name: foo bar description: This is a test case specification +test_case_specification_runner_settings: + - "inferred" + - "test" + diff --git a/examples/Good-TestEntity-Complete.yaml b/examples/Good-TestEntity-Complete.yaml index ad412a8..2671e65 100644 --- a/examples/Good-TestEntity-Complete.yaml +++ b/examples/Good-TestEntity-Complete.yaml @@ -11,6 +11,8 @@ # - id # - name # - description +# - tags +# - test_runner_settings # # where the slots are: # diff --git a/examples/Good-TestSuite-001.yaml b/examples/Good-TestSuite-001.yaml index c4d8a07..e579103 100644 --- a/examples/Good-TestSuite-001.yaml +++ b/examples/Good-TestSuite-001.yaml @@ -18,3 +18,6 @@ id: example:TestSuite001 name: foo bar description: This is a test suite +test_metadata: + id: test:1 + test_source: SMURF diff --git a/examples/SampleTestAssetList.json b/examples/SampleTestAssetList.json index 227e400..84bb0e0 100644 --- a/examples/SampleTestAssetList.json +++ b/examples/SampleTestAssetList.json @@ -1,20 +1,30 @@ [ { "id": "example:TestAsset001", - "name": "foo bar", - "description": "This is a test asset", - "runner_settings": ["inferred","test_setting"] + "name": "TestAsset001", + "description": "Fingolimod treats multiple sclerosis", + "input_id": "PUBCHEM.COMPOUND:107970", + "predicate_name": "treats", + "output_id": "MONDO:0005301", + "expected_output": "Acceptable", + "runner_settings": ["inferred", "test"], + "test_metadata": { + "id": "example:TestAsset001", + "source": "SMURF" + } }, { "id": "example:TestAsset002", - "name": "tweedle dee", - "description": "This is another test asset", - "runner_settings": ["inferred","test_setting"] - }, - { - "id": "example:TestAsset003", - "name": "tweedle dum", - "description": "This is yetanuder test asset", - "runner_settings": ["inferred","test_setting"] + "name": "TestAsset002", + "description": "Carbamazepine treats Cerebral palsy", + "input_id": "PUBCHEM.COMPOUND:2554", + "predicate_name": "treats", + "output_id": "MONDO:0006497", + "expected_output": "number_2_Acceptable", + "runner_settings": ["inferred", "test"], + "test_metadata": { + "id": "example:TestAsset001", + "source": "SMURF" + } } ] \ No newline at end of file diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index b39b191..3e2dcad 100644 Binary files a/project/excel/translator_testing_model.xlsx and b/project/excel/translator_testing_model.xlsx differ diff --git a/project/graphql/translator_testing_model.graphql b/project/graphql/translator_testing_model.graphql index cbbb48b..a6b5150 100644 --- a/project/graphql/translator_testing_model.graphql +++ b/project/graphql/translator_testing_model.graphql @@ -18,7 +18,7 @@ type AcceptanceTestAsset inV1: Boolean wellKnown: Boolean testReference: Uriorcurie - testMetadata: TestMetadata! + testMetadata: TestMetadata id: Uriorcurie! tags: [String] testRunnerSettings: [String] @@ -64,7 +64,7 @@ type AcceptanceTestSuite description: String tags: [String] testRunnerSettings: [String] - testMetadata: TestMetadata! + testMetadata: TestMetadata testPersona: TestPersonaEnum testCases: [TestCase] testSuiteSpecification: TestSuiteSpecification @@ -81,7 +81,7 @@ type OneHopTestSuite description: String tags: [String] testRunnerSettings: [String] - testMetadata: TestMetadata! + testMetadata: TestMetadata testPersona: TestPersonaEnum testCases: [TestCase] testSuiteSpecification: TestSuiteSpecification @@ -132,7 +132,7 @@ type StandardsComplianceTestSuite description: String tags: [String] testRunnerSettings: [String] - testMetadata: TestMetadata! + testMetadata: TestMetadata testPersona: TestPersonaEnum testCases: [TestCase] testSuiteSpecification: TestSuiteSpecification @@ -158,7 +158,7 @@ type TestAsset inV1: Boolean wellKnown: Boolean testReference: Uriorcurie - testMetadata: TestMetadata! + testMetadata: TestMetadata id: Uriorcurie! tags: [String] testRunnerSettings: [String] @@ -219,7 +219,7 @@ type TestEdgeData inV1: Boolean wellKnown: Boolean testReference: Uriorcurie - testMetadata: TestMetadata! + testMetadata: TestMetadata id: Uriorcurie! tags: [String] testRunnerSettings: [String] @@ -303,7 +303,7 @@ type TestSuite description: String tags: [String] testRunnerSettings: [String] - testMetadata: TestMetadata! + testMetadata: TestMetadata testPersona: TestPersonaEnum testCases: [TestCase] testSuiteSpecification: TestSuiteSpecification diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index 81d2d1f..e8d8a11 100644 --- a/project/jsonld/translator_testing_model.context.jsonld +++ b/project/jsonld/translator_testing_model.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-04-19T10:26:20", + "generation_date": "2024-04-25T12:49:11", "source": "translator_testing_model.yaml" }, "@context": { diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index 9a0bdf0..5c2f25d 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -1702,7 +1702,6 @@ "TestSuite" ], "range": "TestMetadata", - "required": true, "inlined": true, "@type": "SlotDefinition" }, @@ -2554,9 +2553,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2024-04-18T22:29:50", - "source_file_size": 27247, - "generation_date": "2024-04-19T10:26:20", + "source_file_date": "2024-04-25T12:16:22", + "source_file_size": 28237, + "generation_date": "2024-04-25T12:49:11", "@type": "SchemaDefinition", "@context": [ "project/jsonld/translator_testing_model.context.jsonld", diff --git a/project/jsonschema/translator_testing_model.schema.json b/project/jsonschema/translator_testing_model.schema.json index af8337d..4931abd 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -131,7 +131,6 @@ } }, "required": [ - "test_metadata", "id" ], "title": "AcceptanceTestAsset", @@ -299,7 +298,6 @@ } }, "required": [ - "test_metadata", "id" ], "title": "AcceptanceTestSuite", @@ -427,7 +425,6 @@ } }, "required": [ - "test_metadata", "id" ], "title": "OneHopTestSuite", @@ -666,7 +663,6 @@ } }, "required": [ - "test_metadata", "id" ], "title": "StandardsComplianceTestSuite", @@ -762,7 +758,6 @@ } }, "required": [ - "test_metadata", "id" ], "title": "TestAsset", @@ -1163,7 +1158,6 @@ } }, "required": [ - "test_metadata", "id" ], "title": "TestEdgeData", @@ -1562,7 +1556,6 @@ } }, "required": [ - "test_metadata", "id" ], "title": "TestSuite", diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index e93be4c..20991b1 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -68,32 +68,32 @@ ttm:TestRunSession a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:ComponentEnum ; owl:onProperty ttm:components ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], + owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestEnvEnum ; owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEntity ; + owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_run_parameters ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:timestamp ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResult ; - owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_run_parameters ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty ttm:timestamp ], + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_runner_name ], @@ -101,14 +101,14 @@ ttm:TestRunSession a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEntity ; - owl:onProperty ttm:test_entities ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:timestamp ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_entities ], @@ -116,8 +116,8 @@ ttm:TestRunSession a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:allValuesFrom ttm:TestCaseResult ; + owl:onProperty ttm:test_case_results ], ttm:TestEntity ; skos:definition "Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite)." ; skos:inScheme . @@ -184,43 +184,49 @@ ttm:AcceptanceTestAsset a owl:Class, rdfs:label "AcceptanceTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_date ], + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; - owl:onProperty ttm:must_pass_date ], + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:scientific_question ], + owl:maxCardinality 1 ; + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_date ], + owl:minCardinality 0 ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_environment ], + owl:onProperty ttm:query_node ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:notes ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:DirectionEnum ; + owl:onProperty ttm:direction ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:answer_informal_concept ], + owl:maxCardinality 1 ; + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:scientific_question ], + owl:allValuesFrom ttm:NodeEnum ; + owl:onProperty ttm:query_node ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:notes ], + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:expected_result ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ExpectedResultsEnum ; - owl:onProperty ttm:expected_result ], + owl:maxCardinality 1 ; + owl:onProperty ttm:direction ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:string_entry ], @@ -228,17 +234,17 @@ ttm:AcceptanceTestAsset a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:allValuesFrom ttm:NodeEnum ; - owl:onProperty ttm:query_node ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:DirectionEnum ; - owl:onProperty ttm:direction ], + owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:notes ], + owl:minCardinality 0 ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestEnvEnum ; owl:onProperty ttm:must_pass_environment ], @@ -246,31 +252,25 @@ ttm:AcceptanceTestAsset a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:direction ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:answer_informal_concept ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:query_node ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_result ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:top_level ], + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ttm:top_level ], + owl:minCardinality 0 ; + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:answer_informal_concept ], ttm:TestAsset ; skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; @@ -287,17 +287,17 @@ ttm:TestOutput a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:pks ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestResultPKSet ; owl:onProperty ttm:pks ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_id ], ttm:TestEntity ; skos:definition "The output of a TestRunner run of one specific TestCase." ; @@ -399,32 +399,32 @@ ttm:TestCaseResult a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCaseResult" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_suite_id ], + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_case ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_result ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case ], + owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_case ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCaseResultEnum ; owl:onProperty ttm:test_case_result ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_result ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case ], ttm:TestEntity ; skos:definition "The outcome of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -448,23 +448,23 @@ ttm:TestEntityParameter a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntityParameter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:value ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:parameter ], + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:value ] ; + owl:onProperty ttm:parameter ] ; skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; skos:inScheme . @@ -567,68 +567,68 @@ ttm:TestResultPKSet a owl:Class, linkml:ClassDefinition ; rdfs:label "TestResultPKSet" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:aragorn ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:parent_pk ], + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:bte ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; + owl:onProperty ttm:improving ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:improving ], + owl:minCardinality 0 ; + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:unsecret ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:bte ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:arax ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:improving ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:bte ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:merged_pk ], + owl:onProperty ttm:arax ], ttm:TestEntity ; skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . @@ -669,22 +669,22 @@ ttm:TestSuiteSpecification a owl:Class, rdfs:label "TestSuiteSpecification" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_data_file_format ], + owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_data_file_format ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:FileFormatEnum ; - owl:onProperty ttm:test_data_file_format ], + owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_data_file_locator ], + owl:allValuesFrom ttm:FileFormatEnum ; + owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_data_file_locator ], + owl:onProperty ttm:test_data_file_format ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_data_file_format ], ttm:TestEntity ; skos:definition "Parameters for a Test Case instances either dynamically generated from some external source of Test Assets." ; skos:inScheme . @@ -774,23 +774,23 @@ ttm:Qualifier a owl:Class, linkml:ClassDefinition ; rdfs:label "Qualifier" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:value ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:value ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:value ], ttm:TestEntityParameter ; skos:inScheme . @@ -798,41 +798,41 @@ ttm:TestMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_source ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_objective ], - [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_source ], + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_annotations ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:test_source ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_objective ], ttm:TestEntity ; skos:definition "Represents metadata related to (external SME, SMURF, Translator feedback, large scale batch, etc.) like the provenance of test assets, cases and/or suites." ; skos:inScheme . @@ -847,36 +847,36 @@ ttm:TestSuite a owl:Class, rdfs:label "TestSuite" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_cases ], + owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_specification ], + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_cases ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_cases ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestPersonaEnum ; + owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestMetadata ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestSuiteSpecification ; owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_persona ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_persona ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; - owl:onProperty ttm:test_cases ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestPersonaEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:test_persona ], ttm:TestEntity ; skos:definition "Specification of a set of Test Cases, one of either with a static list of 'test_cases' or a dynamic 'test_suite_specification' slot values. Note: at least one slot or the other, but generally not both(?) needs to be present." ; @@ -1239,176 +1239,176 @@ ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], - [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_issue ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:minCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:in_v1 ], + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestIssueEnum ; + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestIssueEnum ; - owl:onProperty ttm:test_issue ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:semantic_severity ], + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_issue ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:input_category ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:input_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:output_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:input_name ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_issue ], + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:association_category ; - owl:onProperty ttm:association ], + owl:maxCardinality 1 ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:input_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], + owl:minCardinality 0 ; + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:SemanticSeverityEnum ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:Qualifier ; owl:onProperty ttm:qualifiers ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:output_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:output_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:predicate_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:input_id ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:output_name ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:semantic_severity ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:association ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_settings ], + owl:allValuesFrom ttm:association_category ; + owl:onProperty ttm:association ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], + owl:maxCardinality 1 ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:minCardinality 0 ; owl:onProperty ttm:well_known ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:association ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:output_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_name ], ttm:TestEntity ; skos:definition "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; skos:inScheme . @@ -1464,125 +1464,125 @@ ttm:TestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_input_id ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:QueryTypeEnum ; - owl:onProperty ttm:query_type ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestAsset ; - owl:onProperty ttm:test_assets ], + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:query_type ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:query_type ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_template ], + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:components ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:preconditions ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestSourceEnum ; owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_source ], + owl:allValuesFrom ttm:QueryTypeEnum ; + owl:onProperty ttm:query_type ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], + owl:minCardinality 0 ; + owl:onProperty ttm:components ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TrapiTemplateEnum ; - owl:onProperty ttm:trapi_template ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_source ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Precondition ; - owl:onProperty ttm:preconditions ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestAsset ; + owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_case_input_id ], + owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_input_id ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], ttm:TestEntity ; skos:definition "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; skos:inScheme . @@ -1694,44 +1694,44 @@ ttm:TestEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:description ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 1 ; owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:name ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:description ], + owl:minCardinality 0 ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:description ] ; + owl:onProperty ttm:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:name ] ; skos:definition "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; skos:inScheme . diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index d382e1e..3063659 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -8,111 +8,96 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:property [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 16 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; + sh:order 0 ; + sh:path ttm:query_type ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ], + sh:minCount 1 ; + sh:order 14 ; + sh:path schema1:identifier ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:trapi_template ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:preconditions ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:test_env ], + [ sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:output_category ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 7 ; sh:path ttm:test_case_predicate_id ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:test_case_predicate_name ], [ sh:class ttm:AcceptanceTestAsset ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_assets ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_category ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 12 ; + sh:path ttm:components ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 18 ; + sh:path ttm:test_runner_settings ], [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], + sh:order 8 ; + sh:path ttm:test_case_input_id ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 18 ; - sh:path ttm:test_runner_settings ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; sh:maxCount 1 ; sh:order 5 ; sh:path ttm:test_case_source ], - [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:trapi_template ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], - [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:test_env ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; - sh:order 12 ; - sh:path ttm:components ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:name ] ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 17 ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:AcceptanceTestCase . ttm:AcceptanceTestSuite a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:class ttm:TestCase ; + sh:property [ sh:class ttm:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; @@ -121,28 +106,42 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 7 ; sh:path schema1:additionalType ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], + [ sh:description "A Test persona describes the user or operational context of a given test." ; + sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_persona ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], + [ sh:class ttm:TestSuiteSpecification ; + sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; sh:path ttm:test_runner_settings ], - [ sh:class ttm:TestSuiteSpecification ; - sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ] ; + sh:order 0 ; + sh:path ttm:test_metadata ] ; sh:targetClass ttm:AcceptanceTestSuite . ttm:BenchmarkTestSuite a sh:NodeShape ; @@ -155,329 +154,326 @@ ttm:OneHopTestSuite a sh:NodeShape ; sh:closed true ; sh:description "Test case for testing the integrity of \"One Hop\" knowledge graph retrievals sensa legacy SRI_Testing harness." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:class ttm:TestMetadata ; + sh:property [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; sh:path ttm:test_runner_settings ], - [ sh:class ttm:TestSuiteSpecification ; - sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:description "A Test persona describes the user or operational context of a given test." ; sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ttm:test_persona ] ; + sh:path ttm:test_persona ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], + [ sh:class ttm:TestSuiteSpecification ; + sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], + [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_cases ] ; sh:targetClass ttm:OneHopTestSuite . ttm:QuantitativeTestCase a sh:NodeShape ; sh:closed true ; sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], + sh:property [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 18 ; sh:path ttm:test_runner_settings ], [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], + sh:order 11 ; + sh:path ttm:output_category ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_predicate_name ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:query_type ], + [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; + sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:test_case_source ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], - [ sh:class ttm:Precondition ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:name ], + [ sh:class ttm:TestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], + sh:order 1 ; + sh:path ttm:test_assets ], [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; sh:in [ rdf:rest () ] ; sh:order 12 ; sh:path ttm:components ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:name ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + sh:order 16 ; + sh:path schema1:description ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], + sh:order 13 ; + sh:path ttm:test_env ], [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; sh:maxCount 1 ; sh:order 3 ; sh:path ttm:trapi_template ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:order 10 ; + sh:path ttm:input_category ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 17 ; + sh:path schema1:additionalType ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:test_env ], + sh:order 4 ; + sh:path ttm:test_case_objective ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 7 ; sh:path ttm:test_case_predicate_id ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:test_case_source ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_assets ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 16 ; - sh:path schema1:description ] ; + sh:order 14 ; + sh:path schema1:identifier ] ; sh:targetClass ttm:QuantitativeTestCase . ttm:StandardsComplianceTestSuite a sh:NodeShape ; sh:closed true ; sh:description "Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:TestSuiteSpecification ; + sh:property [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], + [ sh:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], [ sh:class ttm:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:test_cases ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], + sh:order 5 ; + sh:path schema1:name ], [ sh:description "A Test persona describes the user or operational context of a given test." ; sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:test_persona ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ] ; + sh:order 4 ; + sh:path schema1:identifier ] ; sh:targetClass ttm:StandardsComplianceTestSuite . ttm:TestEdgeData a sh:NodeShape ; sh:closed true ; sh:description "Represents a single Biolink Model compliant instance of a subject-predicate-object edge that can be used for testing." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:boolean ; + sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ], + sh:order 1 ; + sh:path ttm:input_name ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 17 ; sh:path schema1:identifier ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:order 21 ; - sh:path ttm:test_runner_settings ], + sh:order 4 ; + sh:path ttm:predicate_name ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path ttm:qualifiers ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 20 ; + sh:path schema1:additionalType ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 18 ; - sh:path schema1:name ], + sh:order 8 ; + sh:path ttm:association ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 16 ; sh:path ttm:test_metadata ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path ttm:test_reference ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_issue ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 10 ; sh:path ttm:expected_output ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:output_id ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], + sh:order 19 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 20 ; - sh:path schema1:additionalType ], + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:output_name ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:well_known ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ], - [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], + sh:order 18 ; + sh:path schema1:name ], [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], - [ sh:datatype xsd:string ; + sh:order 2 ; + sh:path ttm:input_category ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ] ; + sh:order 12 ; + sh:path ttm:semantic_severity ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:in_v1 ] ; sh:targetClass ttm:TestEdgeData . ttm:TestOutput a sh:NodeShape ; sh:closed true ; sh:description "The output of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ], + sh:property [ sh:class ttm:TestResultPKSet ; + sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path ttm:pks ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 6 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:name ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 6 ; - sh:path ttm:test_runner_settings ], + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 5 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "CURIE id of a TestCase registered in the system." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_case_id ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 2 ; sh:path schema1:identifier ], - [ sh:class ttm:TestResultPKSet ; - sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:pks ] ; + [ sh:datatype xsd:string ; + sh:description "CURIE id of a TestCase registered in the system." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_case_id ] ; sh:targetClass ttm:TestOutput . ttm:TestRunSession a sh:NodeShape ; @@ -489,34 +485,43 @@ ttm:TestRunSession a sh:NodeShape ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:test_env ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:datatype xsd:string ; + sh:description "Global system name of a TestRunner." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 7 ; - sh:path schema1:identifier ], - [ sh:class ttm:TestCaseResult ; - sh:description "One or more instances of TestCaseResult." ; + sh:order 2 ; + sh:path ttm:test_runner_name ], + [ sh:datatype xsd:dateTime ; + sh:description "Date time when a given entity was created." ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:timestamp ], + [ sh:class ttm:TestEntity ; + sh:description "Different TestRunners could expect specific kinds of TestEntity as an input. These 'test_entities' are one or more instances of TestAsset, TestCase or (preferably?) TestSuite." ; sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path ttm:test_case_results ], + sh:order 4 ; + sh:path ttm:test_entities ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 11 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path schema1:description ], [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; sh:in [ rdf:rest () ] ; sh:order 0 ; sh:path ttm:components ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 7 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 10 ; sh:path schema1:additionalType ], - [ sh:class ttm:TestEntity ; - sh:description "Different TestRunners could expect specific kinds of TestEntity as an input. These 'test_entities' are one or more instances of TestAsset, TestCase or (preferably?) TestSuite." ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path ttm:test_entities ], - [ sh:datatype xsd:dateTime ; - sh:description "Date time when a given entity was created." ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:timestamp ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; @@ -527,20 +532,11 @@ ttm:TestRunSession a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ttm:test_run_parameters ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "Global system name of a TestRunner." ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_runner_name ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 11 ; - sh:path ttm:test_runner_settings ] ; + [ sh:class ttm:TestCaseResult ; + sh:description "One or more instances of TestCaseResult." ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path ttm:test_case_results ] ; sh:targetClass ttm:TestRunSession . ttm:TestSuite a sh:NodeShape ; @@ -548,51 +544,50 @@ ttm:TestSuite a sh:NodeShape ; sh:description "Specification of a set of Test Cases, one of either with a static list of 'test_cases' or a dynamic 'test_suite_specification' slot values. Note: at least one slot or the other, but generally not both(?) needs to be present." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:class ttm:TestSuiteSpecification ; + sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], [ sh:description "A Test persona describes the user or operational context of a given test." ; sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:test_persona ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ sh:class ttm:TestSuiteSpecification ; - sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ], [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], [ sh:class ttm:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path ttm:test_cases ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ] ; + sh:path ttm:test_cases ] ; sh:targetClass ttm:TestSuite . ttm:AcceptanceTestAsset a sh:NodeShape ; @@ -600,145 +595,144 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:description "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:description "The notes of the query" ; sh:maxCount 1 ; - sh:order 29 ; - sh:path schema1:description ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:order 9 ; + sh:path ttm:notes ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 22 ; - sh:path ttm:semantic_severity ], - [ sh:maxCount 1 ; - sh:order 17 ; - sh:path ttm:output_category ], + sh:minCount 1 ; + sh:order 27 ; + sh:path schema1:identifier ], + [ sh:description "The expected result of the query" ; + sh:in ( "include_good" "exclude_bad" ) ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:expected_result ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 28 ; + sh:path schema1:name ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 26 ; sh:path ttm:test_metadata ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 20 ; - sh:path ttm:expected_output ], - [ sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:output_id ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], - [ sh:description "The node of the (templated) TRAPI query to replace" ; - sh:in ( "subject" "object" ) ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:query_node ], - [ sh:description "The direction of the expected query result triple" ; - sh:in ( "increased" "decreased" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:direction ], - [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:input_category ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:input_name ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + [ sh:datatype xsd:date ; + sh:description "The date by which this test must pass" ; sh:maxCount 1 ; - sh:order 25 ; - sh:path ttm:test_reference ], - [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 30 ; - sh:path schema1:additionalType ], + sh:order 0 ; + sh:path ttm:must_pass_date ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 23 ; - sh:path ttm:in_v1 ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_id ], - [ sh:datatype xsd:string ; - sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:scientific_question ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_id ], + sh:order 24 ; + sh:path ttm:well_known ], [ sh:datatype xsd:string ; sh:description "The object of the core triple to be tested" ; sh:maxCount 1 ; sh:order 3 ; sh:path ttm:string_entry ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 27 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:date ; - sh:description "The date by which this test must pass" ; + [ sh:description "The deployment environment within which this test must pass." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:must_pass_date ], - [ sh:datatype xsd:boolean ; + sh:order 1 ; + sh:path ttm:must_pass_environment ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_id ], + [ sh:maxCount 1 ; + sh:order 15 ; + sh:path ttm:output_id ], + [ sh:description "The direction of the expected query result triple" ; + sh:in ( "increased" "decreased" ) ; sh:maxCount 1 ; - sh:order 24 ; - sh:path ttm:well_known ], + sh:order 4 ; + sh:path ttm:direction ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 22 ; + sh:path ttm:semantic_severity ], + [ sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:input_category ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 28 ; - sh:path schema1:name ], - [ sh:description "The expected result of the query" ; - sh:in ( "include_good" "exclude_bad" ) ; + sh:order 29 ; + sh:path schema1:description ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:expected_result ], + sh:order 25 ; + sh:path ttm:test_reference ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 23 ; + sh:path ttm:in_v1 ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], + sh:order 20 ; + sh:path ttm:expected_output ], [ sh:datatype xsd:string ; sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; sh:order 31 ; sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; - sh:description "The notes of the query" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:notes ], + sh:order 11 ; + sh:path ttm:input_name ], + [ sh:datatype xsd:string ; + sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:answer_informal_concept ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 30 ; + sh:path schema1:additionalType ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 19 ; sh:path ttm:qualifiers ], [ sh:datatype xsd:string ; - sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:answer_informal_concept ], - [ sh:description "The deployment environment within which this test must pass." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:order 14 ; + sh:path ttm:predicate_name ], + [ sh:description "The node of the (templated) TRAPI query to replace" ; + sh:in ( "subject" "object" ) ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:must_pass_environment ], + sh:order 8 ; + sh:path ttm:query_node ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:maxCount 1 ; + sh:order 18 ; + sh:path ttm:association ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:predicate_id ], + [ sh:datatype xsd:string ; + sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:scientific_question ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 21 ; + sh:path ttm:test_issue ], [ sh:datatype xsd:integer ; sh:description "The answer must return in these many results" ; sh:maxCount 1 ; sh:order 7 ; sh:path ttm:top_level ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + [ sh:maxCount 1 ; + sh:order 17 ; + sh:path ttm:output_category ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 18 ; - sh:path ttm:association ] ; + sh:order 16 ; + sh:path ttm:output_name ] ; sh:targetClass ttm:AcceptanceTestAsset . ttm:TestCaseResult a sh:NodeShape ; @@ -749,47 +743,56 @@ ttm:TestCaseResult a sh:NodeShape ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 6 ; sh:path schema1:additionalType ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 7 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], - [ sh:description "CURIE id of a TestSuite registered in the system." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_suite_id ], - [ sh:description "Encoded result of a single test run of a given test case" ; - sh:in ( "PASSED" "FAILED" "SKIPPED" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_case_result ], [ sh:class ttm:TestCase ; sh:description "Slot referencing a single TestCase." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_case ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:description "Encoded result of a single test run of a given test case" ; + sh:in ( "PASSED" "FAILED" "SKIPPED" ) ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], + sh:order 2 ; + sh:path ttm:test_case_result ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 7 ; - sh:path ttm:test_runner_settings ] ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:name ], + [ sh:description "CURIE id of a TestSuite registered in the system." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_suite_id ] ; sh:targetClass ttm:TestCaseResult . ttm:TestEntity a sh:NodeShape ; sh:closed false ; sh:description "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 4 ; + sh:path ttm:test_runner_settings ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:order 0 ; sh:path schema1:identifier ], @@ -798,19 +801,10 @@ ttm:TestEntity a sh:NodeShape ; sh:maxCount 1 ; sh:order 2 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 3 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 4 ; - sh:path ttm:test_runner_settings ] ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:TestEntity . ttm:TestResultPKSet a sh:NodeShape ; @@ -822,148 +816,147 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:order 1 ; sh:path ttm:merged_pk ], [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 10 ; + sh:path schema1:additionalType ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:parent_pk ], + sh:minCount 1 ; + sh:order 7 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:aragorn ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:arax ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:unsecret ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 11 ; sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:aragorn ], + sh:order 0 ; + sh:path ttm:parent_pk ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 10 ; - sh:path schema1:additionalType ], + sh:order 5 ; + sh:path ttm:bte ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 8 ; sh:path schema1:name ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 7 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:unsecret ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:arax ], + sh:order 6 ; + sh:path ttm:improving ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 9 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:bte ] ; + sh:path schema1:description ] ; sh:targetClass ttm:TestResultPKSet . ttm:TestAsset a sh:NodeShape ; sh:closed true ; sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ], + sh:order 6 ; + sh:path ttm:output_name ], [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], + sh:order 7 ; + sh:path ttm:output_category ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:association ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 18 ; sh:path schema1:name ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], + sh:order 11 ; + sh:path ttm:test_issue ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path ttm:test_reference ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:predicate_name ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:in_v1 ], [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], + sh:order 2 ; + sh:path ttm:input_category ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 10 ; sh:path ttm:expected_output ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:well_known ], + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:output_id ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:input_name ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], + sh:order 19 ; + sh:path schema1:description ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 16 ; sh:path ttm:test_metadata ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], - [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 17 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:order 21 ; - sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; sh:order 20 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ] ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:TestAsset . ttm:TestEntityParameter a sh:NodeShape ; @@ -987,9 +980,10 @@ ttm:Precondition a sh:NodeShape ; sh:description "Represents a precondition for a TestCase" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 3 ; - sh:path schema1:additionalType ], + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 4 ; @@ -1005,153 +999,152 @@ ttm:Precondition a sh:NodeShape ; sh:order 0 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ] ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 3 ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:Precondition . ttm:TestSuiteSpecification a sh:NodeShape ; sh:closed true ; sh:description "Parameters for a Test Case instances either dynamically generated from some external source of Test Assets." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ sh:description "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ], + sh:order 0 ; + sh:path ttm:test_data_file_locator ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 6 ; - sh:path ttm:test_runner_settings ], - [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; - sh:in ( "TSV" "YAML" "JSON" ) ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_data_file_format ], - [ sh:description "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)" ; + sh:order 4 ; + sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_data_file_locator ], + sh:minCount 1 ; + sh:order 2 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 5 ; sh:path schema1:additionalType ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ], + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 6 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 3 ; - sh:path schema1:name ] ; + sh:path schema1:name ], + [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; + sh:in ( "TSV" "YAML" "JSON" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_data_file_format ] ; sh:targetClass ttm:TestSuiteSpecification . ttm:TestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; - sh:order 12 ; - sh:path ttm:components ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], - [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:trapi_template ], + sh:minCount 1 ; + sh:order 14 ; + sh:path schema1:identifier ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], [ sh:maxCount 1 ; sh:order 10 ; sh:path ttm:input_category ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:test_case_predicate_name ], + [ sh:class ttm:TestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path ttm:test_assets ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 18 ; sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_predicate_id ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:test_case_source ], + sh:order 13 ; + sh:path ttm:test_env ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:order 11 ; + sh:path ttm:output_category ], + [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; + sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:test_env ], + sh:order 5 ; + sh:path ttm:test_case_source ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:trapi_template ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 15 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_assets ], [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ], + sh:order 0 ; + sh:path ttm:query_type ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 16 ; - sh:path schema1:description ] ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 17 ; + sh:path schema1:additionalType ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 12 ; + sh:path ttm:components ] ; sh:targetClass ttm:TestCase . ttm:Qualifier a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The 'value' of should be a suitable value generally drawn from an applicable Biolink Model (\"Enum\") value set of the specified Qualifier." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:value ], - [ sh:datatype xsd:string ; sh:description "The 'parameter' of a Qualifier should be a `qualifier` slot name from the Biolink Model ('biolink' namespace) 'biolink:qualifier' hierarchy." ; sh:maxCount 1 ; sh:order 0 ; - sh:path ttm:parameter ] ; + sh:path ttm:parameter ], + [ sh:datatype xsd:string ; + sh:description "The 'value' of should be a suitable value generally drawn from an applicable Biolink Model (\"Enum\") value set of the specified Qualifier." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:value ] ; sh:targetClass ttm:Qualifier . ttm:TestMetadata a sh:NodeShape ; @@ -1163,39 +1156,39 @@ ttm:TestMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_source ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_reference ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:test_objective ], - [ sh:class ttm:TestEntityParameter ; - sh:description "Metadata annotation." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path ttm:test_annotations ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_reference ], + [ sh:class ttm:TestEntityParameter ; + sh:description "Metadata annotation." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path ttm:test_annotations ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; diff --git a/project/shex/translator_testing_model.shex b/project/shex/translator_testing_model.shex index 4c5ec7b..5397e73 100644 --- a/project/shex/translator_testing_model.shex +++ b/project/shex/translator_testing_model.shex @@ -167,7 +167,7 @@ linkml:Sparqlpath xsd:string @linkml:Boolean ? ; @linkml:Boolean ? ; @linkml:Uriorcurie ? ; - @ ; + @ ? ; schema1:additionalType @linkml:String * ; @linkml:String * ) ; @@ -333,7 +333,7 @@ linkml:Sparqlpath xsd:string CLOSED { ( $ ( & ; rdf:type [ ] ? ; - @ ; + @ ? ; [ diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index 9344fdc..66b59f3 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -485,7 +485,7 @@ CREATE TABLE "AcceptanceTestAsset" ( name TEXT, description TEXT, "AcceptanceTestCase_id" TEXT, - test_metadata_id TEXT NOT NULL, + test_metadata_id TEXT, PRIMARY KEY (id), FOREIGN KEY("AcceptanceTestCase_id") REFERENCES "AcceptanceTestCase" (id), FOREIGN KEY(test_metadata_id) REFERENCES "TestMetadata" (id) @@ -509,7 +509,7 @@ CREATE TABLE "TestEdgeData" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_metadata_id TEXT NOT NULL, + test_metadata_id TEXT, PRIMARY KEY (id), FOREIGN KEY(test_metadata_id) REFERENCES "TestMetadata" (id) ); @@ -518,7 +518,7 @@ CREATE TABLE "TestSuite" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_metadata_id TEXT NOT NULL, + test_metadata_id TEXT, test_suite_specification_id TEXT, PRIMARY KEY (id), FOREIGN KEY(test_metadata_id) REFERENCES "TestMetadata" (id), @@ -529,7 +529,7 @@ CREATE TABLE "AcceptanceTestSuite" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_metadata_id TEXT NOT NULL, + test_metadata_id TEXT, test_suite_specification_id TEXT, PRIMARY KEY (id), FOREIGN KEY(test_metadata_id) REFERENCES "TestMetadata" (id), @@ -540,7 +540,7 @@ CREATE TABLE "StandardsComplianceTestSuite" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_metadata_id TEXT NOT NULL, + test_metadata_id TEXT, test_suite_specification_id TEXT, PRIMARY KEY (id), FOREIGN KEY(test_metadata_id) REFERENCES "TestMetadata" (id), @@ -551,7 +551,7 @@ CREATE TABLE "OneHopTestSuite" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_metadata_id TEXT NOT NULL, + test_metadata_id TEXT, test_suite_specification_id TEXT, PRIMARY KEY (id), FOREIGN KEY(test_metadata_id) REFERENCES "TestMetadata" (id), @@ -821,7 +821,7 @@ CREATE TABLE "TestAsset" ( description TEXT, "TestCase_id" TEXT, "QuantitativeTestCase_id" TEXT, - test_metadata_id TEXT NOT NULL, + test_metadata_id TEXT, PRIMARY KEY (id), FOREIGN KEY("TestCase_id") REFERENCES "TestCase" (id), FOREIGN KEY("QuantitativeTestCase_id") REFERENCES "QuantitativeTestCase" (id), diff --git a/src/data/examples/Bad-TestAsset-002.yaml b/src/data/examples/Bad-TestAsset-002.yaml deleted file mode 100644 index bb16005..0000000 --- a/src/data/examples/Bad-TestAsset-002.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example TestAsset data object ---- -# TODO: the TestAsset example data needs further elaboration - -# Bad Query 2 - Missing required input_id? - -id: example:TestAsset001 -name: TestAsset001 -description: Fingolimod treats multiple sclerosis -#input_id: PUBCHEM.COMPOUND:107970 -predicate_name: treats -output_id: MONDO:0005301 -expected_output: Acceptable -test_runner_settings: - - "inferred" - - "test" diff --git a/src/data/examples/Bad-TestAsset-003.yaml b/src/data/examples/Bad-TestAsset-003.yaml deleted file mode 100644 index 5a8f6dc..0000000 --- a/src/data/examples/Bad-TestAsset-003.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example TestAsset data object ---- -# TODO: the TestAsset example data needs further elaboration - -# Bad Query 3 - Missing required predicate? - -id: example:TestAsset001 -name: TestAsset001 -description: Fingolimod treats multiple sclerosis -input_id: PUBCHEM.COMPOUND:107970 -#predicate_name: treats -output_id: MONDO:0005301 -expected_output: Acceptable -test_runner_settings: - - "inferred" - - "test" diff --git a/src/data/examples/Bad-TestAsset-004.yaml b/src/data/examples/Bad-TestAsset-004.yaml deleted file mode 100644 index 7c1a41a..0000000 --- a/src/data/examples/Bad-TestAsset-004.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example TestAsset data object ---- -# TODO: the TestAsset example data needs further elaboration - -# Bad Query 4 - Missing required output_id? - -id: example:TestAsset001 -name: TestAsset001 -description: Fingolimod treats multiple sclerosis -input_id: PUBCHEM.COMPOUND:107970 -predicate_name: treats -#output_id: MONDO:0005301 -expected_output: Acceptable -test_runner_settings: - - "inferred" - - "test" diff --git a/src/data/examples/Bad-TestAsset-005.yaml b/src/data/examples/Bad-TestAsset-005.yaml deleted file mode 100644 index a0d29b7..0000000 --- a/src/data/examples/Bad-TestAsset-005.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example TestAsset data object ---- -# TODO: the TestAsset example data needs further elaboration - -# Bad Query 5 - Missing required output_id? - -id: example:TestAsset001 -name: TestAsset001 -description: Fingolimod treats multiple sclerosis -input_id: PUBCHEM.COMPOUND:107970 -predicate_name: treats -#output_id: MONDO:0005301 -expected_output: Acceptable -test_runner_settings: - - "inferred" - - "test" diff --git a/src/data/examples/Bad-TestAsset-006.yaml b/src/data/examples/Bad-TestAsset-006.yaml deleted file mode 100644 index 64aa600..0000000 --- a/src/data/examples/Bad-TestAsset-006.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Example TestAsset data object ---- -# TODO: the TestAsset example data needs further elaboration - -# Bad Query 6 - Missing required runner_settings? - -id: example:TestAsset001 -name: TestAsset001 -description: Fingolimod treats multiple sclerosis -input_id: PUBCHEM.COMPOUND:107970 -predicate_name: treats -output_id: MONDO:0005301 -expected_output: Acceptable -#test_runner_settings: -# - "inferred" -# - "test" diff --git a/src/data/examples/Bad-TestCase-001.yaml b/src/data/examples/Bad-TestCase-001.yaml deleted file mode 100644 index 11babb4..0000000 --- a/src/data/examples/Bad-TestCase-001.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Example TestCase data object ---- -# TODO: the TestCase example data needs further elaboration -# -# TestCase: -# description: >- -# Represents a single enumerated instance of Test Case, derived from a -# given collection of one or more TestAsset instances (the value of the -# 'test_assets' slot) which define the 'inputs' and 'outputs' of the -# TestCase, used to probe a particular test condition. -# is_a: TestEntity -# slots: -# - test_env -# - test_case_type -# - query_type -# - test_assets -# - preconditions -# slot_usage: -# test_case_type: -# description: >- -# Is this valid or even necessary with the class names already -# available from classes of 'test_assets' used (seems redundant?) -# test_assets: -# aliases: ["Block List"] -# description: >- -# One or more 'tags' slot values (inherited from TestEntity) -# should generally be defined as filters to specify TestAsset -# membership in 'test_assets' slot ("Block List") collection. -# tags: -# description: >- -# One or more 'tags' slot values (inherited from TestEntity) should generally -# be defined as filters to specify TestAsset membership in a "Block List" collection. -# -# Bad Query 1 - Missing required identifier? - -# id: id: example:TestCase001 -name: foo bar -description: This is a test case diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index 032f917..3c06335 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -255,7 +255,7 @@ class TestAsset(TestEntity): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + test_metadata: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") @@ -293,7 +293,7 @@ class AcceptanceTestAsset(TestAsset): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + test_metadata: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") @@ -321,7 +321,7 @@ class TestEdgeData(TestAsset): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + test_metadata: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") @@ -432,7 +432,7 @@ class TestSuite(TestEntity): """ Specification of a set of Test Cases, one of either with a static list of 'test_cases' or a dynamic 'test_suite_specification' slot values. Note: at least one slot or the other, but generally not both(?) needs to be present. """ - test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + test_metadata: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") test_persona: Optional[TestPersonaEnum] = Field(None, description="""A Test persona describes the user or operational context of a given test.""") test_cases: Optional[Dict[str, TestCase]] = Field(default_factory=dict, description="""List of explicitly enumerated Test Cases.""") test_suite_specification: Optional[TestSuiteSpecification] = Field(None, description="""Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source.""") @@ -444,7 +444,7 @@ class TestSuite(TestEntity): class AcceptanceTestSuite(TestSuite): - test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + test_metadata: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") test_persona: Optional[TestPersonaEnum] = Field(None, description="""A Test persona describes the user or operational context of a given test.""") test_cases: Optional[Dict[str, TestCase]] = Field(default_factory=dict, description="""List of explicitly enumerated Test Cases.""") test_suite_specification: Optional[TestSuiteSpecification] = Field(None, description="""Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source.""") @@ -466,7 +466,7 @@ class StandardsComplianceTestSuite(TestSuite): """ Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model. """ - test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + test_metadata: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") test_persona: Optional[TestPersonaEnum] = Field(None, description="""A Test persona describes the user or operational context of a given test.""") test_cases: Optional[Dict[str, TestCase]] = Field(default_factory=dict, description="""List of explicitly enumerated Test Cases.""") test_suite_specification: Optional[TestSuiteSpecification] = Field(None, description="""Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source.""") @@ -481,7 +481,7 @@ class OneHopTestSuite(TestSuite): """ Test case for testing the integrity of \"One Hop\" knowledge graph retrievals sensa legacy SRI_Testing harness. """ - test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + test_metadata: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") test_persona: Optional[TestPersonaEnum] = Field(None, description="""A Test persona describes the user or operational context of a given test.""") test_cases: Optional[Dict[str, TestCase]] = Field(default_factory=dict, description="""List of explicitly enumerated Test Cases.""") test_suite_specification: Optional[TestSuiteSpecification] = Field(None, description="""Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source.""") diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index c04dc5b..3717594 100644 --- a/src/translator_testing_model/datamodel/translator_testing_model.py +++ b/src/translator_testing_model/datamodel/translator_testing_model.py @@ -1,5 +1,5 @@ # Auto generated from translator_testing_model.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-04-19T10:26:22 +# Generation date: 2024-04-25T12:49:13 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -292,7 +292,6 @@ class TestAsset(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestAsset id: Union[str, TestAssetId] = None - test_metadata: Union[dict, TestMetadata] = None input_id: Optional[Union[str, URIorCURIE]] = None input_name: Optional[str] = None input_category: Optional[Union[str, ConceptCategory]] = None @@ -309,6 +308,7 @@ class TestAsset(TestEntity): in_v1: Optional[Union[bool, Bool]] = None well_known: Optional[Union[bool, Bool]] = None test_reference: Optional[Union[str, URIorCURIE]] = None + test_metadata: Optional[Union[dict, TestMetadata]] = None tags: Optional[Union[str, List[str]]] = empty_list() test_runner_settings: Optional[Union[str, List[str]]] = empty_list() @@ -318,11 +318,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.id, TestAssetId): self.id = TestAssetId(self.id) - if self._is_empty(self.test_metadata): - self.MissingRequiredField("test_metadata") - if not isinstance(self.test_metadata, TestMetadata): - self.test_metadata = TestMetadata(**as_dict(self.test_metadata)) - if self.input_id is not None and not isinstance(self.input_id, URIorCURIE): self.input_id = URIorCURIE(self.input_id) @@ -372,6 +367,9 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.test_reference is not None and not isinstance(self.test_reference, URIorCURIE): self.test_reference = URIorCURIE(self.test_reference) + if self.test_metadata is not None and not isinstance(self.test_metadata, TestMetadata): + self.test_metadata = TestMetadata(**as_dict(self.test_metadata)) + if not isinstance(self.tags, list): self.tags = [self.tags] if self.tags is not None else [] self.tags = [v if isinstance(v, str) else str(v) for v in self.tags] @@ -396,7 +394,6 @@ class AcceptanceTestAsset(TestAsset): class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestAsset id: Union[str, AcceptanceTestAssetId] = None - test_metadata: Union[dict, TestMetadata] = None must_pass_date: Optional[Union[str, XSDDate]] = None must_pass_environment: Optional[Union[str, "TestEnvEnum"]] = None scientific_question: Optional[str] = None @@ -461,7 +458,6 @@ class TestEdgeData(TestAsset): class_model_uri: ClassVar[URIRef] = TTM.TestEdgeData id: Union[str, TestEdgeDataId] = None - test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -679,7 +675,7 @@ class TestSuite(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestSuite id: Union[str, TestSuiteId] = None - test_metadata: Union[dict, TestMetadata] = None + test_metadata: Optional[Union[dict, TestMetadata]] = None test_persona: Optional[Union[str, "TestPersonaEnum"]] = None test_cases: Optional[Union[Dict[Union[str, TestCaseId], Union[dict, TestCase]], List[Union[dict, TestCase]]]] = empty_dict() test_suite_specification: Optional[Union[dict, TestSuiteSpecification]] = None @@ -690,9 +686,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.id, TestSuiteId): self.id = TestSuiteId(self.id) - if self._is_empty(self.test_metadata): - self.MissingRequiredField("test_metadata") - if not isinstance(self.test_metadata, TestMetadata): + if self.test_metadata is not None and not isinstance(self.test_metadata, TestMetadata): self.test_metadata = TestMetadata(**as_dict(self.test_metadata)) if self.test_persona is not None and not isinstance(self.test_persona, TestPersonaEnum): @@ -716,7 +710,6 @@ class AcceptanceTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestSuite id: Union[str, AcceptanceTestSuiteId] = None - test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -752,7 +745,6 @@ class StandardsComplianceTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.StandardsComplianceTestSuite id: Union[str, StandardsComplianceTestSuiteId] = None - test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -776,7 +768,6 @@ class OneHopTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.OneHopTestSuite id: Union[str, OneHopTestSuiteId] = None - test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -1410,7 +1401,7 @@ class slots: model_uri=TTM.test_data_file_format, domain=None, range=Optional[Union[str, "FileFormatEnum"]]) slots.test_metadata = Slot(uri=TTM.test_metadata, name="test_metadata", curie=TTM.curie('test_metadata'), - model_uri=TTM.test_metadata, domain=None, range=Union[dict, TestMetadata]) + model_uri=TTM.test_metadata, domain=None, range=Optional[Union[dict, TestMetadata]]) slots.test_persona = Slot(uri=TTM.test_persona, name="test_persona", curie=TTM.curie('test_persona'), model_uri=TTM.test_persona, domain=None, range=Optional[Union[str, "TestPersonaEnum"]]) diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index 4c75403..1f1144c 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -713,7 +713,7 @@ slots: Test metadata describes the external provenance, cross-references and objectives for a given test. range: TestMetadata inlined: true - required: true + required: false test_persona: description: >-