From 90b1b97eacba6b775bc45f924531e4a585f58324 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 30 Oct 2026 15:08:57 +0000 Subject: [PATCH] Add skip and skip_reason to test assets and test cases Some tests always fail for a known reason, and should be turned off until the issue behind them is fixed. skip (default false) and an optional skip_reason go on TestAsset, PathfinderTestAsset, TestCase and PathfinderTestCase, and so on every asset and test case class; skipping a test case skips all of its assets. The Test Harness reports skipped tests as skipped and can be told to run them anyway. Both fields are optional, so existing data stays valid. Version 0.7.0. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d --- project/excel/translator_testing_model.xlsx | Bin 22583 -> 22742 bytes .../graphql/translator_testing_model.graphql | 18 + .../translator_testing_model.context.jsonld | 9 +- .../jsonld/translator_testing_model.jsonld | 61 +- .../translator_testing_model.schema.json | 88 + project/owl/translator_testing_model.owl.ttl | 830 +++++---- .../protobuf/translator_testing_model.proto | 18 + .../shacl/translator_testing_model.shacl.ttl | 1623 +++++++++-------- project/shex/translator_testing_model.shex | 12 +- .../sqlschema/translator_testing_model.sql | 36 + pyproject.toml | 2 +- .../datamodel/pydanticmodel.py | 18 + .../datamodel/translator_testing_model.py | 40 +- .../schema/translator_testing_model.yaml | 22 + tests/test_skip.py | 37 + 15 files changed, 1670 insertions(+), 1144 deletions(-) create mode 100644 tests/test_skip.py diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index 8568fe00d8fb1e26c7f9009ffcd04ebbb76c6c6b..9c3a67df0f40307fda41e1729f631877e14161e3 100644 GIT binary patch delta 8959 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 j{fNEf=mXhb2JS+1mmf)jc<|@+PkjCdIE4q@ delta 8727 zcmeHMWmHsM+a6-5VF2ka=@w}a5Rh)ALqb8iL+UV;N+>WWASvA;N_UswASI!cARs7R z0v`-KkFU@BuJ!%-*7C>q&YyGc`&?(Az4z?BuIt+OXgNw%846TW1r41T1Oj1!5FsWp z&}Qtji%C>Dk=c68C>@~Q#)lhr_kM4KM^c8ZoCy!TIz7WR>~?PDdhQIHjP|_g$qz4z zse&L~`=>uY>Qd5#>|ROB#3%2uFoc$@#lAOh!;`xSV)B>H)s`fjCSUh+5AU>|lGQwv zUAy9~H9Qj?r`y*k6+JvB0n z6=_&p9Fkr#b;iaG^9jPZw~Q02Ae#EnHo&x6aH?(7+~fFkyT&-o@r0^L_2P8k zQt*=Cy{*n!QulAN*jx%9CSG&%5dn1fYiJ+DE>E>W$dw#k9V}~99jKIo_rIWV1mtW* zbrx{PeQ4<2*9k^RsmwoWi0_BVb@En%>-RY9e9`e6M^f$mwu=XwbL2@=<9s#?t`t_@ zd%5<^C|{7g(UdX2Y4gfhnS;4~_)ExeSNAfR=*)S)swUzRO>RvDc5vU(iE3&z0&WLq4{wX(IUkCkg;ER^Bsr&W{2l9 z^_ud;oGwA4){NbIFu8=WHo;Rt&^+mnJ!Zx=mXfaZ69*;$<@aq-(OX6R6$J#U1;eHA zDd1AtU?3`PQhn-tnKSpI&17ri%P3{Nj*~H(01vxTJcKJ*%*uL7EVoX2CEo}v@cvln z{q5l7pevl!NZfCm2E?o(Zpl#1~UrB%~%r3v6gG2xYyG%7^zU{P>?dS^u! z64RS=OK6?Dtb0n@&_Lg84%3oJGA-D1RpN#k;6>$Cu=Zez;MQm#={hW657(J(SL`jn zS%a(4%?F#?TgxBU!pN_mu<0M^tuhHzxUXMBAM;2Z2x5J&sTCdl^8n)ZUW~0AKB6n& z&raDrwwm(u%ed5}kuttpF5Mk9lhgoZI3=a%gIc#$&hg#tla9GiCWCulN3p}KB8qS# zG=W&6=g@d}jqamxPOaJLK$5uLU9{%~1L)<6&P)Z|J^{qG*)VMH0AgdMpwZc_kmg&e zflQUsk0Jq4oG9`p2^>kYpLVK&r(X=g&J#N$lg90v9+AdS?Lv8!L+ll!Nd8`q>j{MB zf@~!wyRo%HwUjyc8WkMqG6LG!yjKpOE`V0Rm>+`Zs~T=f{YYB*w{DY@@Gow3Bn6TZ z-?8nloZ3y~pEzY6%;dMX7&Z@~#k@Y<3QF5|bhQ8EmtZ6O(~D!32nt;tP?y}i*ZeMe z9DU)?1%rns=KB2W`Hwi{g!}a_Pj_#UYah9o{6zbGEqLAJ+jxP74g$qOk&EFeF(&ZY zX;K9DL=RVr%8hWUmcbd7={Rw+cJ-}MZ5^3xIk|$K!6uWKHSqp>6r}eZyD%IaC>awwofZpj3crVCiXkd5yT2?;$Z6hkPdNdt=8YqT> zO-D$0t^sQu{|8lJw$LC>qK`QR2@ey1;NdkU+D`G7w`{`W*h4nD6@-o;U>H5!<}m9~ z1Wp`@;Vq0&xVI4X;DC?fUZ1wK-QCEm*6);8#f1%iC`mYHNz1_0F*65ApWal?4bS`O zGfXMw&je}T@c-76TxFI z3#AXyk6=6<3G|@dYSsvH7La-VM)V~n{<=WOeCu}CJW5KawCYDvRh~O!@%+4RIMR0$ zeQC8(_5{};62fN7`x5UX2#7sWRDkiI?Lblnf`eg+1!cF-`6m=I>``Vn0(lt%H9dlB zW@!7zs;-6WNZQ6bW#Zs`(Dr@y(+ErHAQ*zVz4g;hil=#pBP7djxUOTVuW2tGHOb^V ztYJ1W$;{ZO5YmD=HtQ==nUEC$>9qdztU)-P^&5;QSU7M~mZ!+U?`aJ*2MZ`*i!%?O z8v1e#)xYF`0eFvjbhllb&xVtJox;y(T3tVm`|F$BRCoC=7m`dqR4h!l*MqX z+N10bN)#iAt}t_4G=p4Sk=B0~R6}8~9Fb?h$Gi8*E-qui9wmmOl@rYVyw${i%`S6m zG90`(g65v#)J~Ti>!pe%L@x5djlA2srq{@$q>f*4wAb=~P_dA%`3S!;@b3$EF9` zZ$KU}Ud?14U#KCd@A@%`*xz*yyQ}Gy>Nn!BsWx9!!kkzh>+9V_IDS&>+M~+OrlX{P zJBQM5Uk=)|?0Xs@Lu1j!e=qxr#|Tt-+X{6)Absa;PNSo+i_^1Q>+x;i_s#pSLWL3# z;qi8`Z+P*i^a^k(SpJk=0WJm0pVBM9rC|9}dIh)?EPqO`=wAw!|8u=kp-z>Af_E;= zlV9gATcd$M6*zF0tCRpAa>45&Tqnc`j!8NPZPgNzD%(KUl>%8DY;MyxJfmgc)h9D> z)mudcK0i;17O;%3dDtDnUF@z~H!+<_^NrfkA459D-?4~JoSq?r3qBzWWX87nXI8y6py|aTNFB@Pfj)_N?`rgU&$h2zJ_P+c zESbs#&oDx#no+-&n1M9rGgI#@nKgJ;2A9#wlUW}>jLP%;`MzvRqcdfuzqiIAVJfRF zkIEhuEj$RPr|GUUxD#E?zGu)k8!`V1<-q-CdVt}<;9_ysBTnm+5%&9SUuB1t%(+!$ z-Ky%seA5Q#)BtLg*i4jK6U^X>Oc+kEGn3P>knvDZ^p}?!8Hho`AJOk$1>RJ(SBUOh zq4oF}#`q&n@jJ{9?OOq~)BMgrj+n7Jk@J)fZLbU~`a^RjK?AXa!tC%;K9|DN^l$|< zKOf3 z+)-*7k7|=e+f<>7?b}CpAH~q&;Y|ilCdA$~Qgf(%>f}&o)ao@^DFrUoBxCqYW%k*~ zl0{fez5kTblB*c3TFs&~xwM~vJqx>U8>V=06dc@lsu@M|MY*qcFmp*oVRU7OccAvv zPXsu9n#cvX)m^K#_~t28X3AWRZJq|(Q!P=LMMuouekGvVA1^=QaH|vM6BdI=-CvMC z%#N|ne4Mb+qY%8$M%fNbj94vIkI^-yrX&-{i!b=?WK# zV)As@&O&R1smgv3(y=z2EbREzYvSO<>bArZsTl)7IuuQLleW7JaW4dVnv0&BwTRz- zk`D;f#R3)1YvFu;Pr5#s0*5}dyjDcz3DfU#=Q49vT|JgiazV?=1;zTN#@wqa2^-9h znUz-$3|yq++af|R6JVCVSR%-;M?JN)ar0^VE{BQ*KIcxZiliPXGgWo7N5;1;I*S7&&4NS zBC{5PR&%Y)W70iiB@Nqey5EIO=%r16^Gk!Gqum=-a{68hJ0ZqeCat|!YU(MirtYAI zLF*empFV}ZPoX&)MmYUOKM<2B9t0n7W|SAf=lcZef2@_b8!_Ve^(W$K96V?s~6w1 z;D@y95Igp|3_ZIB1HVIr#D2c6+A{G#iSb~|R^XuHx{FFZsek9@vkd0qNIou{Uv7AT1#J{?GM&9p5o6zfelVXe4;qI^66q4Sv zzweCs;O;YB8J$P534o!fZ3>!CY(a$!-9e(nr;@9cr3SrwS_W5vCp_B%mFkiB@Mn5; zcuBYl0Q}}@U&r!6qPt1dD#fd`*@+IkwLq#RqsCBzdjz{PBv*!fH4P{-p6ED^K=GQq zTZ*x{Qs)CJb)n%4+IByRlEdg?jm1!M?GmeXSpA)zTefjjDq>1Jw#v`Lbu#zb7shnk z-bh&Z_{lrAm+qa6kn?z|;Vxym1Pq`7<7MgU?~Y)J1wV;je_ zBBZuoe~&J(Y#OKv=eRn3&z$|;u#{*#x6EYdYZ7vQy$~?JEPy}77MElJ{3*7$Bn#kAvBf1>0Dp=tF3AG; zQ*3c5-p)=M&eR(N>wh=me>dWvk!}C)HzN0}VDdw>GaJPSf6u}A?}Uhr&EQ}&B<(|Y zL&mg>=k-F#DEOq2Q=Gx3lgDiu~? zlNVS&)j+hLd4piAoR{F9A0=K-W@eB*wq%2Zmg3ovQ! zPI!ZIeOoNE_uM`iw^4s>Gy~z!2dDjIpD5+6S&wf;<>{W;r=7t@aajLQjT*Ue?wNhE zIJZxb9-zq#w-a51x@QnG7x5tn<>2QL;y7z=aF#p!QTg@LmAKdD+w3b@WwF_>#H&(T z(Q-fJ67VwhAVAZVKrrmvgY;H~@mMljDm)wYZqIk(h{w&hgR<2gKf$+{(`=P1q77Vf zkiOeptfr|=WIGjhXn?v-G(o187tw^l-hjCYE$b5^*Nbu$8et$)YgSqfV1uL(EQH!D zdhLuUl2~)O^qrXh zVOhY2d;(rj^GGi;65tAdE4)nt8;fpO-f{X=7J`60ab-2@8Z3mW?#e8IYk|95Oy=R) z+jcbYEWI2{C;g(DNAD z*?qrS++5ZX*M2&ire=p1w{e|Dl*H~Gzm-`B$Eg2lj5uFWQn`Iq0E>gqK9;2keuV}F%!Qxs}s5Fo>FbUj2>k2XjJ4=;9k*Uv6FuYm|m;SffEEWhv zepd4S>lX-P!$*P-w5}k5zlvP{1kw>Afl}HRz>5mVc>&~~z#GI!VCW_A@6*>3D5h2Ol*hV1??YyD4*1pQgdq-SRP zqWiz>%|C&gj7Z?({|by|K?1q&T(o$>4`=iM`Dcqf97v%1C6IqLUVrV6-` zCvGILlm`rNzJrVWKL_tnp!miT|(rH&%PNzd#f^c)1=m zvSaVhUQ1Slujx@BLu`F2$xtN_$lIRR%gNQw!pX_*KTM0s!T0e}iL+k4!v}#V|8Dne dt)OtgE%e!uO+D48LQPeJ7wR)($ZDKp{s&j!-n0M! diff --git a/project/graphql/translator_testing_model.graphql b/project/graphql/translator_testing_model.graphql index a3de7a3..ec438b7 100644 --- a/project/graphql/translator_testing_model.graphql +++ b/project/graphql/translator_testing_model.graphql @@ -19,6 +19,8 @@ type AcceptanceTestAsset wellKnown: Boolean testReference: Uriorcurie testMetadata: TestMetadata + skip: Boolean + skipReason: String id: Uriorcurie! tags: [String] testRunnerSettings: [String] @@ -52,6 +54,8 @@ type AcceptanceTestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] + skip: Boolean + skipReason: String tags: [String] testAssets: [AcceptanceTestAsset]! } @@ -120,6 +124,8 @@ type PathfinderTestAsset minimumRequiredPathNodes: Integer! pathNodes: [PathfinderPathNode]! expectedOutput: String + skip: Boolean + skipReason: String } type PathfinderTestCase @@ -132,6 +138,8 @@ type PathfinderTestCase testAssets: [PathfinderTestAsset]! testCaseObjective: TestObjectiveEnum components: [ComponentEnum] + skip: Boolean + skipReason: String } type PerformanceTestCase @@ -152,6 +160,8 @@ type PerformanceTestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] + skip: Boolean + skipReason: String tags: [String] testRunTime: Integer! spawnRate: Float! @@ -205,6 +215,8 @@ type QuantitativeTestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] + skip: Boolean + skipReason: String tags: [String] } @@ -242,6 +254,8 @@ type TestAsset wellKnown: Boolean testReference: Uriorcurie testMetadata: TestMetadata + skip: Boolean + skipReason: String id: Uriorcurie! tags: [String] testRunnerSettings: [String] @@ -266,6 +280,8 @@ type TestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] + skip: Boolean + skipReason: String tags: [String] } @@ -302,6 +318,8 @@ type TestEdgeData wellKnown: Boolean testReference: Uriorcurie testMetadata: TestMetadata + skip: Boolean + skipReason: String id: Uriorcurie! tags: [String] testRunnerSettings: [String] diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index 8388f5e..cca0c9d 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": "2026-10-29T16:38:18", + "generation_date": "2026-10-30T15:06:04", "source": "translator_testing_model.yaml" }, "@context": { @@ -219,6 +219,13 @@ }, "@id": "semantic_severity" }, + "skip": { + "@type": "xsd:boolean", + "@id": "skip" + }, + "skip_reason": { + "@id": "skip_reason" + }, "source_input_category": { "@type": "@id", "@id": "source_input_category" diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index 76e18e4..0a8c879 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -1567,6 +1567,39 @@ "range": "boolean", "@type": "SlotDefinition" }, + { + "name": "skip", + "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/skip", + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", + "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/skip", + "ifabsent": "false", + "owner": "PathfinderTestCase", + "domain_of": [ + "TestAsset", + "PathfinderTestAsset", + "TestCase", + "PathfinderTestCase" + ], + "range": "boolean", + "@type": "SlotDefinition" + }, + { + "name": "skip_reason", + "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/skip_reason", + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", + "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/skip_reason", + "owner": "PathfinderTestCase", + "domain_of": [ + "TestAsset", + "PathfinderTestAsset", + "TestCase", + "PathfinderTestCase" + ], + "range": "string", + "@type": "SlotDefinition" + }, { "name": "test_runner_settings", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_runner_settings", @@ -2514,6 +2547,8 @@ "well_known", "test_reference", "test_metadata", + "skip", + "skip_reason", "TestAsset_id", "TestAsset_tags", "TestAsset_test_runner_settings" @@ -2545,7 +2580,9 @@ "qualifiers", "minimum_required_path_nodes", "path_nodes", - "expected_output" + "expected_output", + "skip", + "skip_reason" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/PathfinderTestAsset", @@ -2577,6 +2614,8 @@ "well_known", "test_reference", "test_metadata", + "skip", + "skip_reason", "TestAsset_id", "TestAsset_tags", "TestAsset_test_runner_settings", @@ -2621,6 +2660,8 @@ "well_known", "test_reference", "test_metadata", + "skip", + "skip_reason", "TestAsset_id", "TestAsset_tags", "TestAsset_test_runner_settings" @@ -2670,6 +2711,8 @@ "input_category", "output_category", "components", + "skip", + "skip_reason", "TestCase_tags" ], "slot_usage": {}, @@ -2689,7 +2732,9 @@ "test_runner_settings", "PathfinderTestCase_test_assets", "test_case_objective", - "components" + "components", + "skip", + "skip_reason" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/PathfinderTestCase", @@ -2718,6 +2763,8 @@ "input_category", "output_category", "components", + "skip", + "skip_reason", "TestCase_tags", "AcceptanceTestCase_test_assets" ], @@ -2749,6 +2796,8 @@ "input_category", "output_category", "components", + "skip", + "skip_reason", "TestCase_tags" ], "slot_usage": {}, @@ -2778,6 +2827,8 @@ "input_category", "output_category", "components", + "skip", + "skip_reason", "TestCase_tags", "performanceTestCase__test_run_time", "performanceTestCase__spawn_rate", @@ -3034,9 +3085,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2026-10-29T16:38:03", - "source_file_size": 32498, - "generation_date": "2026-10-29T16:38:18", + "source_file_date": "2026-10-30T15:05:58", + "source_file_size": 33114, + "generation_date": "2026-10-30T15:06:04", "@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 575c41f..b61c92c 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -97,6 +97,14 @@ "semantic_severity": { "$ref": "#/$defs/SemanticSeverityEnum" }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "string_entry": { "description": "The object of the core triple to be tested", "type": "string" @@ -186,6 +194,14 @@ "$ref": "#/$defs/QueryTypeEnum", "description": "Type of TestCase query." }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "tags": { "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.", "items": { @@ -604,6 +620,14 @@ }, "type": "array" }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "source_input_category": { "type": "string" }, @@ -668,6 +692,14 @@ "description": "A human-readable name for a Test Entity", "type": "string" }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "tags": { "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.", "items": { @@ -747,6 +779,14 @@ "$ref": "#/$defs/QueryTypeEnum", "description": "Type of TestCase query." }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "spawn_rate": { "type": "number" }, @@ -851,6 +891,14 @@ "$ref": "#/$defs/QueryTypeEnum", "description": "Type of TestCase query." }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "spawn_rate": { "type": "number" }, @@ -1063,6 +1111,14 @@ "$ref": "#/$defs/QueryTypeEnum", "description": "Type of TestCase query." }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "tags": { "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.", "items": { @@ -1273,6 +1329,14 @@ "semantic_severity": { "$ref": "#/$defs/SemanticSeverityEnum" }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "tags": { "description": "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection", "items": { @@ -1354,6 +1418,14 @@ "$ref": "#/$defs/QueryTypeEnum", "description": "Type of TestCase query." }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "tags": { "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.", "items": { @@ -1556,6 +1628,14 @@ "$ref": "#/$defs/QueryTypeEnum", "description": "Type of TestCase query." }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "tags": { "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.", "items": { @@ -1669,6 +1749,14 @@ "semantic_severity": { "$ref": "#/$defs/SemanticSeverityEnum" }, + "skip": { + "description": "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.", + "type": "boolean" + }, + "skip_reason": { + "description": "Why the test is skipped, eg the issue it waits on, for the reports.", + "type": "string" + }, "tags": { "description": "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection", "items": { diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index 607a188..c079cf8 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -13,10 +13,10 @@ ttm:AcceptanceTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:AcceptanceTestAsset ; + owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom ttm:AcceptanceTestAsset ; owl:onProperty ttm:test_assets ], ttm:TestCase ; skos:definition "See AcceptanceTestAsset above for more details." ; @@ -79,11 +79,14 @@ ttm:TestRunSession a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunSession" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], + owl:minCardinality 0 ; + owl:onProperty ttm:components ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_run_parameters ], + owl:maxCardinality 1 ; + owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEntity ; + owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCaseResult ; owl:onProperty ttm:test_case_results ], @@ -91,47 +94,44 @@ ttm:TestRunSession a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_name ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_results ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty ttm:timestamp ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEntity ; owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:test_run_parameters ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Datetime ; owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_run_parameters ], + owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_entities ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:components ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_runner_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ttm:timestamp ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_run_parameters ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], 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 . @@ -204,95 +204,95 @@ ttm:AcceptanceTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:query_node ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:allValuesFrom ttm:DirectionEnum ; - owl:onProperty ttm:direction ], + owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:scientific_question ], + owl:onProperty ttm:must_pass_environment ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:direction ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:allValuesFrom ttm:NodeEnum ; + owl:maxCardinality 1 ; owl:onProperty ttm:query_node ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:scientific_question ], + owl:maxCardinality 1 ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:NodeEnum ; owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:top_level ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:scientific_question ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ttm:direction ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_result ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_environment ], + owl:onProperty ttm:must_pass_date ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:must_pass_environment ], + owl:allValuesFrom ttm:DirectionEnum ; + owl:onProperty ttm:direction ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:top_level ], + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:notes ], + owl:minCardinality 0 ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:answer_informal_concept ], + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; + owl:maxCardinality 1 ; owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_environment ], + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; - owl:onProperty ttm:must_pass_date ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:answer_informal_concept ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:notes ], + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:direction ], ttm:TestAsset ; skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; skos:inScheme . @@ -301,107 +301,125 @@ ttm:PathfinderTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:PathfinderPathNode ; - owl:onProperty ttm:path_nodes ], - [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:target_input_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:source_input_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_name ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:target_input_name ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], + owl:maxCardinality 1 ; + owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:source_input_category ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_name ], + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:target_input_name ], + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:source_input_category ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:target_input_category ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:target_input_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:target_input_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:source_input_category ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:source_input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:source_input_category ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:target_input_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:source_input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:source_input_id ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:minimum_required_path_nodes ], + owl:onProperty ttm:skip ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty ttm:source_input_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:predicate_type ; owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], + owl:minCardinality 1 ; + owl:onProperty ttm:path_nodes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:source_input_category ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:target_input_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:target_input_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:skip ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:path_nodes ], + owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_id ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:source_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:target_input_id ], + owl:onProperty ttm:source_input_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:skip_reason ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:source_input_id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:target_input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:target_input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:source_input_name ], + owl:onProperty ttm:skip_reason ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:source_input_id ], + owl:allValuesFrom ttm:PathfinderPathNode ; + owl:onProperty ttm:path_nodes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_category ], + owl:onProperty ttm:skip_reason ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:qualifiers ], 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 . @@ -415,20 +433,20 @@ ttm:TestOutput a owl:Class, linkml:ClassDefinition ; rdfs:label "TestOutput" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:pks ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + 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:allValuesFrom ttm:TestResultPKSet ; - owl:onProperty ttm:pks ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_id ], ttm:TestEntity ; skos:definition "The output of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -507,10 +525,10 @@ ttm:PathfinderPathNode a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderPathNode" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:name ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty ttm:ids ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:name ], [ a owl:Restriction ; owl:minCardinality 0 ; @@ -520,7 +538,7 @@ ttm:PathfinderPathNode a owl:Class, owl:onProperty ttm:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:ids ] ; + owl:onProperty ttm:name ] ; skos:definition "Represents an output path node" ; skos:inScheme . @@ -550,32 +568,32 @@ ttm:TestCaseResult a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCaseResult" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; - owl:onProperty ttm:test_case ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_result ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_id ], + 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:maxCardinality 1 ; owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:TestCase ; owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_result ], ttm:TestEntity ; skos:definition "The outcome of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -599,23 +617,23 @@ ttm:TestEntityParameter a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntityParameter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:parameter ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:parameter ], + owl:onProperty ttm:value ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; 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 ] ; + owl:maxCardinality 1 ; + owl:onProperty ttm:parameter ] ; skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; skos:inScheme . @@ -720,66 +738,66 @@ ttm:TestResultPKSet a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:bte ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:arax ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:unsecret ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:merged_pk ], + owl:minCardinality 0 ; + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:merged_pk ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:arax ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:bte ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:improving ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:arax ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:parent_pk ], + owl:onProperty ttm:arax ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:merged_pk ], + owl:minCardinality 0 ; + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:parent_pk ], + owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:bte ], ttm:TestEntity ; skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . @@ -822,8 +840,8 @@ ttm:TestSuiteSpecification a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_data_file_locator ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; owl:allValuesFrom ttm:FileFormatEnum ; owl:onProperty ttm:test_data_file_format ], @@ -831,11 +849,11 @@ ttm:TestSuiteSpecification a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_data_file_format ], + owl:onProperty ttm:test_data_file_locator ], ttm:TestEntity ; skos:definition "Parameters for a Test Case instances either dynamically generated from some external source of Test Assets." ; skos:inScheme . @@ -1021,11 +1039,26 @@ ttm:PathfinderTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderTestCase" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_case_objective ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:skip_reason ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:skip_reason ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], @@ -1033,14 +1066,17 @@ ttm:PathfinderTestCase a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:components ], [ a owl:Restriction ; - owl:allValuesFrom ttm:PathfinderTestAsset ; - owl:onProperty ttm:test_assets ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:skip_reason ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:allValuesFrom ttm:PathfinderTestAsset ; + owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_objective ], ttm:TestEntity ; skos:inScheme . @@ -1048,29 +1084,29 @@ ttm:PerformanceTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "PerformanceTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:spawn_rate ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_run_time ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Float ; - owl:onProperty ttm:spawn_rate ], - [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:test_run_time ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:test_run_time ], + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:Float ; owl:onProperty ttm:spawn_rate ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], + owl:onProperty ttm:spawn_rate ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:spawn_rate ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestAsset ; owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_run_time ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_run_time ], ttm:TestCase ; skos:definition "Represents a performance test case." ; skos:inScheme . @@ -1079,26 +1115,29 @@ ttm:TestMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_annotations ], + 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:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_source ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_objective ], + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_source ], @@ -1106,13 +1145,10 @@ ttm:TestMetadata a owl:Class, owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_objective ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_source ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:test_annotations ], 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." ; @@ -1497,22 +1533,22 @@ ttm:Qualifier a owl:Class, linkml:ClassDefinition ; rdfs:label "Qualifier" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:value ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; 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:maxCardinality 1 ; owl:onProperty ttm:parameter ], ttm:TestEntityParameter ; skos:inScheme . @@ -1540,172 +1576,190 @@ ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:association_category ; - owl:onProperty ttm:association ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_name ], - [ a owl:Restriction ; owl:allValuesFrom ttm:TestMetadata ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_name ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:association ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:maxCardinality 1 ; owl:onProperty ttm:in_v1 ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:output_category ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:output_ids ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_issue ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:semantic_severity ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:SemanticSeverityEnum ; owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty ttm:well_known ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:output_name ], + owl:maxCardinality 1 ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:maxCardinality 1 ; + owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:well_known ], + owl:maxCardinality 1 ; + owl:onProperty ttm:skip_reason ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:output_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_name ], + owl:allValuesFrom ttm:association_category ; + owl:onProperty ttm:association ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:well_known ], + owl:minCardinality 0 ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], + owl:onProperty ttm:input_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_category ], + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:output_ids ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:test_runner_settings ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_issue ], + owl:onProperty ttm:skip_reason ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:output_ids ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:association ], + owl:minCardinality 0 ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:semantic_severity ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:skip_reason ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestIssueEnum ; owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_ids ], + owl:onProperty ttm:skip ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_settings ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ 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:well_known ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:skip ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty ttm:in_v1 ], 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." ; @@ -1715,38 +1769,38 @@ ttm:TestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuite" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_persona ], - [ a owl:Restriction ; owl:allValuesFrom [ owl:intersectionOf ( [ owl:unionOf ( ttm:PathfinderTestCase ttm:TestCase ttm:PerformanceTestCase ) ] ttm:TestCase ) ] ; owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + 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:maxCardinality 1 ; + owl:allValuesFrom ttm:TestPersonaEnum ; owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_suite_specification ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestPersonaEnum ; - owl:onProperty ttm:test_persona ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_cases ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_specification ], + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], + owl:maxCardinality 1 ; + 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." ; skos:inScheme . @@ -1903,114 +1957,132 @@ ttm:TestCase a owl:Class, rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:preconditions ], + owl:onProperty ttm:skip_reason ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:QueryTypeEnum ; - owl:onProperty ttm:query_type ], + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:allValuesFrom ttm:TrapiTemplateEnum ; owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_category ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_template ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:test_case_source ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestAsset ; - owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], + owl:minCardinality 0 ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:query_type ], + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestSourceEnum ; owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], + owl:maxCardinality 1 ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:test_case_predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:QueryTypeEnum ; owl:onProperty ttm:query_type ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty ttm:skip_reason ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:components ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:skip_reason ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_source ], + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:TestAsset ; + owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:skip ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; + owl:minCardinality 0 ; owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_case_objective ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:components ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Precondition ; owl:onProperty ttm:preconditions ], 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." ; @@ -2054,48 +2126,62 @@ ttm:TrapiTemplateEnum a owl:Class, , . +ttm:skip a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "skip" ; + rdfs:range linkml:Boolean ; + skos:definition "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; + skos:inScheme . + +ttm:skip_reason a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "skip_reason" ; + rdfs:range linkml:String ; + skos:definition "Why the test is skipped, eg the issue it waits on, for the reports." ; + skos:inScheme . + ttm:TestEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:onProperty ttm:name ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_settings ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:description ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:name ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; + owl:onProperty ttm:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:description ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:description ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:minCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:name ] ; + owl:onProperty ttm:description ] ; 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/protobuf/translator_testing_model.proto b/project/protobuf/translator_testing_model.proto index 4d604fd..6bf7d75 100644 --- a/project/protobuf/translator_testing_model.proto +++ b/project/protobuf/translator_testing_model.proto @@ -20,6 +20,8 @@ message AcceptanceTestAsset boolean wellKnown = 0 uriorcurie testReference = 0 testMetadata testMetadata = 0 + boolean skip = 0 + string skipReason = 0 uriorcurie id = 0 repeated string tags = 0 repeated string testRunnerSettings = 0 @@ -53,6 +55,8 @@ message AcceptanceTestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 + boolean skip = 0 + string skipReason = 0 repeated string tags = 0 repeated acceptanceTestAsset testAssets = 0 } @@ -119,6 +123,8 @@ message PathfinderTestAsset integer minimumRequiredPathNodes = 0 repeated pathfinderPathNode pathNodes = 0 string expectedOutput = 0 + boolean skip = 0 + string skipReason = 0 } message PathfinderTestCase { @@ -130,6 +136,8 @@ message PathfinderTestCase repeated pathfinderTestAsset testAssets = 0 testObjectiveEnum testCaseObjective = 0 repeated componentEnum components = 0 + boolean skip = 0 + string skipReason = 0 } // Represents a performance test case. message PerformanceTestCase @@ -150,6 +158,8 @@ message PerformanceTestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 + boolean skip = 0 + string skipReason = 0 repeated string tags = 0 integer testRunTime = 0 float spawnRate = 0 @@ -202,6 +212,8 @@ message QuantitativeTestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 + boolean skip = 0 + string skipReason = 0 repeated string tags = 0 } // Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model. @@ -239,6 +251,8 @@ message TestAsset boolean wellKnown = 0 uriorcurie testReference = 0 testMetadata testMetadata = 0 + boolean skip = 0 + string skipReason = 0 uriorcurie id = 0 repeated string tags = 0 repeated string testRunnerSettings = 0 @@ -263,6 +277,8 @@ message TestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 + boolean skip = 0 + string skipReason = 0 repeated string tags = 0 } // The outcome of a TestRunner run of one specific TestCase. @@ -299,6 +315,8 @@ message TestEdgeData boolean wellKnown = 0 uriorcurie testReference = 0 testMetadata testMetadata = 0 + boolean skip = 0 + string skipReason = 0 uriorcurie id = 0 repeated string tags = 0 repeated string testRunnerSettings = 0 diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index 6ca8410..9c59ae4 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -9,22 +9,28 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; 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:property [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_category ], + [ 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 "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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; sh:order 12 ; sh:path ttm:components ], - [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 17 ; - sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 7 ; @@ -33,11 +39,47 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_predicate_name ], + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:skip ], + [ sh:datatype xsd:string ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:skip_reason ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 16 ; + 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 18 ; + sh:path schema1:additionalType ], + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 13 ; + sh:order 15 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path schema1:description ], + [ 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:maxCount 1 ; + sh:order 11 ; + sh:path ttm:output_category ], [ 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 ; @@ -47,47 +89,16 @@ ttm:AcceptanceTestCase a sh:NodeShape ; 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 16 ; - sh:path schema1:additionalType ], - [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], [ 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: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:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:name ], - [ 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 "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:description ] ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 19 ; + sh:path ttm:test_runner_settings ] ; sh:targetClass ttm:AcceptanceTestCase . ttm:AcceptanceTestSuite a sh:NodeShape ; @@ -98,45 +109,45 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:maxCount 1 ; 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: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 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 "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 name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], + [ sh:description "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; + sh:order 2 ; + sh:path ttm:test_cases ], [ 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: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 "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], - [ sh:description "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - sh:order 2 ; - sh:path ttm:test_cases ] ; + [ 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: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:targetClass ttm:AcceptanceTestSuite . ttm:BenchmarkTestSuite a sh:NodeShape ; @@ -147,28 +158,19 @@ ttm:BenchmarkTestSuite a sh:NodeShape ; 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 "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:description "List of explicitly enumerated Test Cases." ; sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; sh:path ttm:test_cases ], [ 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 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:order 6 ; + sh:path schema1:description ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -182,78 +184,40 @@ ttm:BenchmarkTestSuite a sh:NodeShape ; sh:order 3 ; sh:path ttm:test_suite_specification ], [ 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:order 5 ; + sh:path schema1:name ], + [ 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:targetClass ttm:BenchmarkTestSuite . 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: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:datatype xsd:string ; + 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: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 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: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 "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - sh:order 2 ; - sh:path ttm:test_cases ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ] ; - sh:targetClass ttm:OneHopTestSuite . - -ttm:PerformanceTestSuite a sh:NodeShape ; - sh:closed true ; - sh:description "A small test suite designed to test the performance of the Translator system." ; - 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: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:PerformanceTestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; + [ sh:description "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; sh:path ttm:test_cases ], [ sh:class ttm:TestMetadata ; @@ -262,6 +226,11 @@ ttm:PerformanceTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], + [ 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 ; @@ -272,121 +241,166 @@ ttm:PerformanceTestSuite a sh:NodeShape ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], + [ 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:targetClass ttm:OneHopTestSuite . + +ttm:PerformanceTestSuite a sh:NodeShape ; + sh:closed true ; + sh:description "A small test suite designed to test the performance of the Translator system." ; + sh:ignoredProperties ( rdf:type ) ; + 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: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 name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], [ 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:class ttm:PerformanceTestCase ; + 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 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 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: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:targetClass ttm:PerformanceTestSuite . 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:maxCount 1 ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path schema1:name ], + [ 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + 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:maxCount 1 ; sh:order 10 ; sh:path ttm:input_category ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 17 ; - sh:path ttm:test_runner_settings ], + [ 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 "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 16 ; + sh:order 18 ; sh:path schema1:additionalType ], - [ 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:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 19 ; + sh:path ttm:test_runner_settings ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:test_case_source ], + sh:order 0 ; + sh:path ttm:query_type ], [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], + sh:order 8 ; + sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:string ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:skip_reason ], + [ 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 description for a Test Entity" ; sh:maxCount 1 ; - sh:order 15 ; + sh:order 17 ; sh:path schema1:description ], - [ 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:datatype xsd:string ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], - [ sh:description "A unique identifier for a Test Entity" ; + 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:maxCount 1 ; + sh:order 5 ; + sh:path ttm:test_case_source ], + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:order 13 ; - sh:path schema1:identifier ], + sh:path ttm:skip ], [ 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:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_predicate_name ], - [ 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: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:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:name ], - [ 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 12 ; - sh:path ttm:components ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], + sh:minCount 1 ; + sh:order 15 ; + sh:path schema1:identifier ], [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ] ; + sh:order 11 ; + sh:path ttm:output_category ] ; 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:description "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - 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:property [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; @@ -395,139 +409,172 @@ ttm:StandardsComplianceTestSuite 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: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: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 unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ], + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], + [ sh:description "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; + sh:order 2 ; + sh:path ttm:test_cases ], [ 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: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 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:path ttm:test_persona ], + [ 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 name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ] ; 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: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:property [ sh:maxCount 1 ; sh:order 7 ; sh:path ttm:output_category ], - [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; - sh:order 5 ; - sh:path ttm:output_ids ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:well_known ], - [ 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: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: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 16 ; - sh:path ttm:test_metadata ], [ 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:datatype xsd:string ; sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], + sh:order 4 ; + sh:path ttm:predicate_name ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 13 ; sh:path ttm:in_v1 ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 20 ; + 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:order 17 ; - sh:path schema1:identifier ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path ttm:test_metadata ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], + sh:order 11 ; + sh:path ttm:test_issue ], + [ 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 22 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path ttm:skip ], [ 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 0 ; + sh:path ttm:input_id ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], + sh:order 12 ; + sh:path ttm:semantic_severity ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_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:order 8 ; + sh:path ttm:association ], + [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; + sh:order 5 ; + sh:path ttm:output_ids ], + [ 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:description "A human-readable name for a Test Entity" ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 23 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; sh:maxCount 1 ; sh:order 18 ; - sh:path schema1:name ], + sh:path ttm:skip_reason ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:output_name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 10 ; sh:path ttm:expected_output ], [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; sh:order 21 ; - sh:path ttm:test_runner_settings ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ] ; + sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 19 ; + sh:path schema1:identifier ] ; 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:description "A unique identifier for a Test Entity" ; + 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: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:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 2 ; sh:path schema1:identifier ], + [ 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 "CURIE id of a TestCase registered in the system." ; sh:maxCount 1 ; @@ -541,117 +588,77 @@ ttm:TestOutput a sh:NodeShape ; [ 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 "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:path ttm:test_runner_settings ] ; sh:targetClass ttm:TestOutput . ttm:TestRunSession a sh:NodeShape ; sh:closed true ; sh:description "Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite)." ; 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 10 ; - sh:path schema1:additionalType ], + sh:property [ 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: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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 0 ; + 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 8 ; - sh:path schema1:name ], + 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:description "Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_env ], [ sh:class ttm:TestEntityParameter ; sh:description "Different TestRunners could expect additional global test configuration parameters, like the applicable TRAPI version (\"trapi_version\") or Biolink Model versions (\"biolink_version\")." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ttm:test_run_parameters ], - [ 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:TestCaseResult ; sh:description "One or more instances of TestCaseResult." ; sh:nodeKind sh:IRI ; sh:order 5 ; sh:path ttm:test_case_results ], [ 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:description "Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_env ], - [ sh:datatype xsd:string ; - sh:description "Global system name of a TestRunner." ; + sh:order 8 ; + sh:path schema1:name ], + [ sh:datatype xsd:dateTime ; + sh:description "Date time when a given entity was created." ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_runner_name ], + sh:order 6 ; + sh:path ttm:timestamp ], [ 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 "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:minCount 1 ; sh:order 7 ; sh:path schema1:identifier ], - [ 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 0 ; - sh:path ttm:components ], - [ 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:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 11 ; + sh:path ttm:test_runner_settings ] ; sh:targetClass ttm:TestRunSession . ttm:TestSuite a sh:NodeShape ; sh:closed true ; 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: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: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 description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ 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:description "List of explicitly enumerated Test Cases." ; + sh:property [ sh:description "List of explicitly enumerated Test Cases." ; sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; sh:path ttm:test_cases ], @@ -665,53 +672,70 @@ ttm:TestSuite a sh:NodeShape ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; sh:path ttm:test_runner_settings ], + [ 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: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: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 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 name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestSuite . ttm:AcceptanceTestAsset a sh:NodeShape ; sh:closed true ; 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:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_id ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], - [ 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:datatype xsd:date ; - sh:description "The date by which this test must pass" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:must_pass_date ], - [ sh:datatype xsd:integer ; + sh:property [ 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 "Document URL where original test source particulars are registered (e.g. Github repo)" ; - sh:maxCount 1 ; - sh:order 25 ; - sh:path ttm:test_reference ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 20 ; - sh:path ttm:expected_output ], [ 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:maxCount 1 ; - sh:order 17 ; - sh:path ttm:output_category ], + 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:datatype xsd:date ; + sh:description "The date by which this test must pass" ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:must_pass_date ], + [ 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:description "The node of the (templated) TRAPI query to replace" ; sh:in ( "subject" "object" ) ; sh:maxCount 1 ; @@ -722,98 +746,118 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:maxCount 1 ; sh:order 9 ; sh:path ttm:notes ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], - [ 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 "A human-readable description for a Test Entity" ; + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; sh:maxCount 1 ; - sh:order 29 ; - sh:path schema1:description ], + sh:order 27 ; + sh:path ttm:skip ], [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:input_category ], + sh:order 10 ; + sh:path ttm:input_id ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 23 ; + sh:path ttm:in_v1 ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 23 ; - sh:path ttm:in_v1 ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:order 24 ; + sh:path ttm:well_known ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:input_name ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path ttm:output_name ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], - [ sh:description "The deployment environment within which this test must pass." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:order 25 ; + sh:path ttm:test_reference ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:must_pass_environment ], + sh:order 18 ; + sh:path ttm:association ], [ 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:description "A unique identifier for a Test Entity" ; + [ sh:datatype xsd:string ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 27 ; - sh:path schema1:identifier ], + sh:order 28 ; + sh:path ttm:skip_reason ], + [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; + sh:order 15 ; + sh:path ttm:output_ids ], [ 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:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; - sh:order 15 ; - sh:path ttm:output_ids ], [ 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:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; sh:order 30 ; - sh:path schema1:additionalType ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_id ], + sh:path schema1:name ], [ 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:order 20 ; + sh:path ttm:expected_output ], + [ 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 "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 32 ; + sh:path schema1:additionalType ], + [ sh:description "The deployment environment within which this test must pass." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 28 ; - sh:path schema1:name ], + sh:order 1 ; + sh:path ttm:must_pass_environment ], + [ sh:maxCount 1 ; + sh:order 17 ; + sh:path ttm:output_category ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 22 ; + sh:path ttm:semantic_severity ], [ 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 26 ; sh:path ttm:test_metadata ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 24 ; - sh:path ttm:well_known ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 22 ; - sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 33 ; + sh:path ttm:test_runner_settings ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:input_name ], + 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 29 ; + sh:path schema1:identifier ], [ 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:order 14 ; + 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 19 ; - sh:path ttm:qualifiers ] ; + sh:path ttm:qualifiers ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 31 ; + sh:path schema1:description ] ; sh:targetClass ttm:AcceptanceTestAsset . ttm:PathfinderPathNode a sh:NodeShape ; @@ -834,105 +878,121 @@ ttm:PathfinderTestAsset 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:property [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:source_input_id ], + [ sh:class ttm:PathfinderPathNode ; + sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:target_input_name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:predicate_name ], - [ sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:predicate_id ], + sh:order 10 ; + sh:path ttm:path_nodes ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 12 ; + 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 8 ; + sh:path ttm:qualifiers ], [ sh:maxCount 1 ; sh:order 5 ; sh:path ttm:target_input_category ], - [ sh:class ttm:PathfinderPathNode ; - sh:minCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 10 ; - sh:path ttm:path_nodes ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 16 ; - sh:path ttm:test_runner_settings ], + sh:order 7 ; + sh:path ttm:predicate_name ], [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:expected_output ], + 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 17 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:integer ; sh:description "The number of nodes required in a path to pass this test." ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 9 ; sh:path ttm:minimum_required_path_nodes ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:source_input_category ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:target_input_id ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:expected_output ], + [ 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 1 ; sh:path ttm:source_input_name ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:source_input_id ], [ 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:description "Why the test is skipped, eg the issue it waits on, for the reports." ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:skip_reason ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; sh:order 15 ; - sh:path schema1:additionalType ], + sh:path schema1:name ], + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:skip ], + [ sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:predicate_id ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 14 ; + sh:order 16 ; sh:path schema1:description ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:source_input_category ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:target_input_id ] ; + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:target_input_name ] ; sh:targetClass ttm:PathfinderTestAsset . ttm:TestCaseResult a sh:NodeShape ; sh:closed true ; sh:description "The outcome of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "CURIE id of a TestSuite registered in the system." ; + sh:property [ 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: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 "CURIE id of a TestSuite registered in the system." ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_suite_id ], + [ 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 "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: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 name for a Test Entity" ; sh:maxCount 1 ; sh:order 4 ; sh:path schema1:name ], - [ 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 "Encoded result of a single test run of a given test case" ; sh:in ( "PASSED" "FAILED" "SKIPPED" ) ; sh:maxCount 1 ; @@ -942,40 +1002,35 @@ ttm:TestCaseResult a sh:NodeShape ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ] ; + sh:path schema1:description ] ; 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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 4 ; - sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ], + sh:order 0 ; + 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 3 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 2 ; 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 3 ; - sh:path schema1:additionalType ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 4 ; + 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 0 ; - sh:path schema1:identifier ] ; + sh:order 1 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestEntity . ttm:TestResultPKSet a sh:NodeShape ; @@ -983,26 +1038,27 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given 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 9 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:merged_pk ], [ 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:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:arax ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:parent_pk ], + sh:order 9 ; + 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 10 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:arax ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 5 ; @@ -1014,25 +1070,24 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:aragorn ], - [ 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:order 4 ; + sh:path ttm:unsecret ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], + sh:order 2 ; + sh:path ttm:aragorn ], [ 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 4 ; - sh:path ttm:unsecret ] ; + sh:order 0 ; + sh:path ttm:parent_pk ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:improving ] ; sh:targetClass ttm:TestResultPKSet . ttm:TestEntityParameter a sh:NodeShape ; @@ -1058,103 +1113,123 @@ ttm:TestAsset a sh:NodeShape ; sh:property [ sh:maxCount 1 ; sh:order 7 ; sh:path ttm:output_category ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 15 ; + sh:path ttm:test_reference ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ 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 22 ; + sh:path schema1:additionalType ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 17 ; - sh:path schema1:identifier ], + sh:order 12 ; + sh:path ttm:semantic_severity ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 23 ; + sh:path ttm:test_runner_settings ], [ 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 10 ; - sh:path ttm:expected_output ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ], - [ 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:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ], + sh:order 11 ; + sh:path ttm:test_issue ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:predicate_name ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], + sh:minCount 1 ; + sh:order 19 ; + sh:path schema1:identifier ], [ 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 16 ; sh:path ttm:test_metadata ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:order 6 ; + sh:path ttm:output_name ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], - [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; - sh:order 5 ; - sh:path ttm:output_ids ], + sh:order 8 ; + sh:path ttm:association ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; sh:maxCount 1 ; sh:order 18 ; - sh:path schema1:name ], + sh:path ttm:skip_reason ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:well_known ], [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:order 21 ; - sh:path ttm:test_runner_settings ], - [ 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:order 1 ; + sh:path ttm:input_name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 21 ; + sh:path schema1:description ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 13 ; - sh:path ttm:in_v1 ] ; + sh:path ttm:in_v1 ], + [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; + sh:order 5 ; + sh:path ttm:output_ids ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:expected_output ], + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path ttm:skip ], + [ 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:maxCount 1 ; + sh:order 20 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestAsset . ttm:Precondition a sh:NodeShape ; sh:closed true ; sh:description "Represents a precondition for a TestCase" ; 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:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 0 ; 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 3 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -1163,40 +1238,41 @@ ttm:Precondition a sh:NodeShape ; [ 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: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 "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ] ; + sh:path ttm:test_runner_settings ] ; sh:targetClass ttm:Precondition . ttm:PathfinderTestCase a sh:NodeShape ; sh:closed true ; 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 4 ; - sh:path schema1:name ], - [ 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 "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:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_case_objective ], + sh:order 4 ; + sh:path ttm:skip_reason ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 3 ; + sh:order 5 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 9 ; + sh:path ttm:test_runner_settings ], + [ 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 8 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:skip ], [ sh:class ttm:PathfinderTestAsset ; sh:description "List of explicitly enumerated Test Assets. The class attributes of TestAsset would be included in the TestCase versus being referred to by the identifier (curie) of the TestAsset. That is, this would be a list of objects (in JSONSchema serialization) versus a list of strings (where each string is an identifier pointing to another class)." ; sh:minCount 1 ; @@ -1204,14 +1280,15 @@ ttm:PathfinderTestCase a sh:NodeShape ; sh:order 0 ; sh:path ttm:test_assets ], [ 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:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; sh:order 6 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + 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:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ], + sh:order 1 ; + sh:path ttm:test_case_objective ], [ 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; sh:order 2 ; @@ -1222,95 +1299,106 @@ ttm:PerformanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a performance test case." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ 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 7 ; + sh:path ttm:test_case_source ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:order 15 ; + sh:path ttm:skip ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 17 ; sh:path schema1:identifier ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:query_type ], [ 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 18 ; + sh:order 20 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:integer ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path ttm:test_run_time ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 19 ; - sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_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:maxCount 1 ; - sh:order 6 ; - 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 11 ; sh:path ttm:qualifiers ], [ 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 17 ; - sh:path schema1:description ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path ttm:preconditions ], + sh:order 18 ; + sh:path schema1:name ], [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 1 ; sh:path ttm:spawn_rate ], - [ 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 14 ; - sh:path ttm:components ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; sh:maxCount 1 ; sh:order 16 ; - sh:path schema1:name ], - [ 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 7 ; - sh:path ttm:test_case_source ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:query_type ], + sh:path ttm:skip_reason ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path ttm:preconditions ], [ 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 3 ; sh:path ttm:test_assets ], + [ 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 6 ; + sh:path ttm:test_case_objective ], + [ 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 14 ; + sh:path ttm:components ], [ sh:maxCount 1 ; sh:order 12 ; sh:path ttm:input_category ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:output_category ], + sh:order 8 ; + sh:path ttm:test_case_predicate_name ], [ 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 5 ; - sh:path ttm:trapi_template ] ; + sh:path ttm:trapi_template ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:output_category ], + [ sh:datatype xsd:integer ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path ttm:test_run_time ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path ttm:test_case_predicate_id ], + [ 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:targetClass ttm:PerformanceTestCase . ttm:TestCase a sh:NodeShape ; @@ -1318,42 +1406,11 @@ ttm:TestCase a sh:NodeShape ; 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:maxCount 1 ; + sh:order 11 ; + sh:path ttm:output_category ], + [ 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - 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 16 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_predicate_id ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:name ], - [ 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 8 ; - sh:path ttm:test_case_input_id ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 13 ; - sh:path schema1:identifier ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], [ 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 ; @@ -1365,137 +1422,179 @@ ttm:TestCase a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_assets ], - [ 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:datatype xsd:boolean ; + sh:defaultValue false ; + sh:description "Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway." ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:order 13 ; + sh:path ttm:skip ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:description ], - [ 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:order 0 ; + sh:path ttm:query_type ], + [ sh:datatype xsd:string ; + sh:description "Why the test is skipped, eg the issue it waits on, for the reports." ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:trapi_template ], + sh:order 14 ; + sh:path ttm:skip_reason ], + [ 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 18 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_predicate_name ], + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_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:maxCount 1 ; sh:order 5 ; sh:path ttm:test_case_source ], - [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], + [ 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 "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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 12 ; + sh:path ttm:components ], + [ 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:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 15 ; + sh:path schema1:identifier ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 19 ; + 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 16 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; sh:order 17 ; - sh:path ttm:test_runner_settings ] ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:test_case_predicate_id ] ; sh:targetClass ttm:TestCase . 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:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ], + 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 5 ; + sh:path schema1:additionalType ], [ 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 3 ; - sh:path schema1:name ], + sh:order 4 ; + sh:path schema1:description ], + [ 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: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 unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path schema1:identifier ], [ 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:order 0 ; sh:path ttm:test_data_file_locator ], [ 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 "File format of test entity data (e.g. TSV, YAML or JSON)" ; - sh:in ( "TSV" "YAML" "JSON" ) ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_data_file_format ], - [ 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:order 3 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestSuiteSpecification . ttm:Qualifier a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ 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: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: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:targetClass ttm:Qualifier . ttm:TestMetadata a sh:NodeShape ; sh:closed true ; sh:description "Represents metadata related to (external SME, SMURF, Translator feedback, large scale batch, etc.) like the provenance of test assets, cases and/or suites." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + 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: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 1 ; - sh:path ttm:test_reference ], + sh:order 0 ; + sh:path ttm:test_source ], [ 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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], + sh:order 6 ; + sh:path schema1:description ], [ 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: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 "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_source ], - [ 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 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 "A human-readable description for a Test Entity" ; + 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 name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ] ; + sh:order 5 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestMetadata . diff --git a/project/shex/translator_testing_model.shex b/project/shex/translator_testing_model.shex index 18033a4..783f398 100644 --- a/project/shex/translator_testing_model.shex +++ b/project/shex/translator_testing_model.shex @@ -131,7 +131,9 @@ linkml:Sparqlpath xsd:string @ * ; @linkml:Integer ; @ + ; - @linkml:String ? + @linkml:String ? ; + @linkml:Boolean ? ; + @linkml:String ? ) ; rdf:type [ ] ) @@ -149,7 +151,9 @@ linkml:Sparqlpath xsd:string [ infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict - infores:knowledge-collaboratory infores:connections-hypothesis ] * + infores:knowledge-collaboratory infores:connections-hypothesis ] * ; + @linkml:Boolean ? ; + @linkml:String ? ) ; rdf:type [ ] ) @@ -237,6 +241,8 @@ linkml:Sparqlpath xsd:string @linkml:Boolean ? ; @linkml:Uriorcurie ? ; @ ? ; + @linkml:Boolean ? ; + @linkml:String ? ; schema1:additionalType @linkml:String * ; @linkml:String * ) ; @@ -279,6 +285,8 @@ linkml:Sparqlpath xsd:string infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ] * ; + @linkml:Boolean ? ; + @linkml:String ? ; schema1:additionalType @linkml:String * ) ; rdf:type [ ] diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index a5d2fc2..f325b32 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -46,6 +46,8 @@ -- * Slot: in_v1 Description: -- * Slot: well_known Description: -- * Slot: test_reference Description: Document URL where original test source particulars are registered (e.g. Github repo) +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -64,6 +66,8 @@ -- * Slot: predicate_name Description: -- * Slot: minimum_required_path_nodes Description: The number of nodes required in a path to pass this test. -- * Slot: expected_output Description: +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -93,6 +97,8 @@ -- * Slot: in_v1 Description: -- * Slot: well_known Description: -- * Slot: test_reference Description: Document URL where original test source particulars are registered (e.g. Github repo) +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -113,6 +119,8 @@ -- * Slot: in_v1 Description: -- * Slot: well_known Description: -- * Slot: test_reference Description: Document URL where original test source particulars are registered (e.g. Github repo) +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -131,6 +139,8 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -141,6 +151,8 @@ -- * Slot: OneHopTestSuite_id Description: Autocreated FK slot -- # Class: "PathfinderTestCase" Description: "" -- * Slot: test_case_objective Description: Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity) +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -154,6 +166,8 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -167,6 +181,8 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -182,6 +198,8 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: +-- * Slot: skip Description: Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway. +-- * Slot: skip_reason Description: Why the test is skipped, eg the issue it waits on, for the reports. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -474,6 +492,8 @@ CREATE TABLE "Precondition" ( ); CREATE TABLE "PathfinderTestCase" ( test_case_objective VARCHAR(23), + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -489,6 +509,8 @@ CREATE TABLE "AcceptanceTestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -504,6 +526,8 @@ CREATE TABLE "QuantitativeTestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -575,6 +599,8 @@ CREATE TABLE "PathfinderTestAsset" ( predicate_name TEXT, minimum_required_path_nodes INTEGER NOT NULL, expected_output TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -607,6 +633,8 @@ CREATE TABLE "AcceptanceTestAsset" ( in_v1 BOOLEAN, well_known BOOLEAN, test_reference TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -631,6 +659,8 @@ CREATE TABLE "TestEdgeData" ( in_v1 BOOLEAN, well_known BOOLEAN, test_reference TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -873,6 +903,8 @@ CREATE TABLE "TestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -900,6 +932,8 @@ CREATE TABLE "PerformanceTestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, @@ -1061,6 +1095,8 @@ CREATE TABLE "TestAsset" ( in_v1 BOOLEAN, well_known BOOLEAN, test_reference TEXT, + skip BOOLEAN, + skip_reason TEXT, id TEXT NOT NULL, name TEXT, description TEXT, diff --git a/pyproject.toml b/pyproject.toml index 9804307..3927c57 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "translator_testing_model" -version = "0.6.0" +version = "0.7.0" description = "This is the project description." authors = ["Sierra Moxon ", "Richard Bruskiewich "] license = "MIT" diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index 93c50dc..71907b8 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -299,6 +299,8 @@ class TestAsset(TestEntity): 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: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -322,6 +324,8 @@ class PathfinderTestAsset(TestEntity): minimum_required_path_nodes: int = Field(..., description="""The number of nodes required in a path to pass this test.""") path_nodes: List[PathfinderPathNode] = Field(default_factory=list) expected_output: Optional[str] = Field(None) + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -360,6 +364,8 @@ class AcceptanceTestAsset(TestAsset): 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: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -388,6 +394,8 @@ class TestEdgeData(TestAsset): 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: Optional[TestMetadata] = Field(None, description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -423,6 +431,8 @@ class TestCase(TestEntity): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, 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.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -434,6 +444,8 @@ class PathfinderTestCase(TestEntity): test_assets: List[PathfinderTestAsset] = Field(default_factory=list, description="""List of explicitly enumerated Test Assets. The class attributes of TestAsset would be included in the TestCase versus being referred to by the identifier (curie) of the TestAsset. That is, this would be a list of objects (in JSONSchema serialization) versus a list of strings (where each string is an identifier pointing to another class).""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)""") components: Optional[List[ComponentEnum]] = Field(default_factory=list, 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.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -458,6 +470,8 @@ class AcceptanceTestCase(TestCase): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, 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.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -482,6 +496,8 @@ class QuantitativeTestCase(TestCase): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, 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.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") @@ -508,6 +524,8 @@ class PerformanceTestCase(TestCase): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, 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.""") + skip: Optional[bool] = Field(False, description="""Don't run this test (for a test case, any of its assets) until the issue behind it is fixed, eg one that always fails for a known reason. The Test Harness reports a skipped test as skipped rather than leaving it out, and can be told to run skipped tests anyway.""") + skip_reason: Optional[str] = Field(None, description="""Why the test is skipped, eg the issue it waits on, for the reports.""") 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""") diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index 9cba5ee..3f308da 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: 2026-10-29T16:38:20 +# Generation date: 2026-10-30T15:06:05 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -356,6 +356,8 @@ class TestAsset(TestEntity): well_known: Optional[Union[bool, Bool]] = None test_reference: Optional[Union[str, URIorCURIE]] = None test_metadata: Optional[Union[dict, TestMetadata]] = None + skip: Optional[Union[bool, Bool]] = False + skip_reason: Optional[str] = None tags: Optional[Union[str, List[str]]] = empty_list() test_runner_settings: Optional[Union[str, List[str]]] = empty_list() @@ -418,6 +420,12 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): 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.skip is not None and not isinstance(self.skip, Bool): + self.skip = Bool(self.skip) + + if self.skip_reason is not None and not isinstance(self.skip_reason, str): + self.skip_reason = str(self.skip_reason) + 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] @@ -455,6 +463,8 @@ class PathfinderTestAsset(TestEntity): predicate_name: Optional[str] = None qualifiers: Optional[Union[Union[dict, Qualifier], List[Union[dict, Qualifier]]]] = empty_list() expected_output: Optional[str] = None + skip: Optional[Union[bool, Bool]] = False + skip_reason: Optional[str] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -504,6 +514,12 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.expected_output is not None and not isinstance(self.expected_output, str): self.expected_output = str(self.expected_output) + if self.skip is not None and not isinstance(self.skip, Bool): + self.skip = Bool(self.skip) + + if self.skip_reason is not None and not isinstance(self.skip_reason, str): + self.skip_reason = str(self.skip_reason) + super().__post_init__(**kwargs) @@ -645,6 +661,8 @@ class TestCase(TestEntity): input_category: Optional[Union[str, ConceptCategory]] = None output_category: Optional[Union[str, ConceptCategory]] = None components: Optional[Union[Union[str, "ComponentEnum"], List[Union[str, "ComponentEnum"]]]] = empty_list() + skip: Optional[Union[bool, Bool]] = False + skip_reason: Optional[str] = None tags: Optional[Union[str, List[str]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -696,6 +714,12 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.components = [self.components] if self.components is not None else [] self.components = [v if isinstance(v, ComponentEnum) else ComponentEnum(v) for v in self.components] + if self.skip is not None and not isinstance(self.skip, Bool): + self.skip = Bool(self.skip) + + if self.skip_reason is not None and not isinstance(self.skip_reason, str): + self.skip_reason = str(self.skip_reason) + 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] @@ -716,6 +740,8 @@ class PathfinderTestCase(TestEntity): test_assets: Union[Dict[Union[str, PathfinderTestAssetId], Union[dict, PathfinderTestAsset]], List[Union[dict, PathfinderTestAsset]]] = empty_dict() test_case_objective: Optional[Union[str, "TestObjectiveEnum"]] = None components: Optional[Union[Union[str, "ComponentEnum"], List[Union[str, "ComponentEnum"]]]] = empty_list() + skip: Optional[Union[bool, Bool]] = False + skip_reason: Optional[str] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -734,6 +760,12 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.components = [self.components] if self.components is not None else [] self.components = [v if isinstance(v, ComponentEnum) else ComponentEnum(v) for v in self.components] + if self.skip is not None and not isinstance(self.skip, Bool): + self.skip = Bool(self.skip) + + if self.skip_reason is not None and not isinstance(self.skip_reason, str): + self.skip_reason = str(self.skip_reason) + super().__post_init__(**kwargs) @@ -1675,6 +1707,12 @@ class slots: slots.well_known = Slot(uri=TTM.well_known, name="well_known", curie=TTM.curie('well_known'), model_uri=TTM.well_known, domain=None, range=Optional[Union[bool, Bool]]) +slots.skip = Slot(uri=TTM.skip, name="skip", curie=TTM.curie('skip'), + model_uri=TTM.skip, domain=None, range=Optional[Union[bool, Bool]]) + +slots.skip_reason = Slot(uri=TTM.skip_reason, name="skip_reason", curie=TTM.curie('skip_reason'), + model_uri=TTM.skip_reason, domain=None, range=Optional[str]) + slots.test_runner_settings = Slot(uri=TTM.test_runner_settings, name="test_runner_settings", curie=TTM.curie('test_runner_settings'), model_uri=TTM.test_runner_settings, domain=None, range=Optional[Union[str, List[str]]]) diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index ef525e3..0f59c2f 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -137,6 +137,8 @@ classes: - well_known - test_reference - test_metadata + - skip + - skip_reason slot_usage: id: aliases: ["AssetIdentifier"] @@ -168,6 +170,8 @@ classes: - minimum_required_path_nodes - path_nodes - expected_output + - skip + - skip_reason AcceptanceTestAsset: is_a: TestAsset @@ -231,6 +235,8 @@ classes: - input_category - output_category - components + - skip + - skip_reason slot_usage: test_assets: aliases: ["Block List"] @@ -249,6 +255,8 @@ classes: - test_assets - test_case_objective - components + - skip + - skip_reason slot_usage: test_assets: range: PathfinderTestAsset @@ -648,6 +656,20 @@ slots: aliases: ["Well Known"] range: boolean + skip: + description: >- + Don't run this test (for a test case, any of its assets) until the + issue behind it is fixed, eg one that always fails for a known reason. + The Test Harness reports a skipped test as skipped rather than leaving + it out, and can be told to run skipped tests anyway. + range: boolean + ifabsent: "false" + + skip_reason: + description: >- + Why the test is skipped, eg the issue it waits on, for the reports. + range: string + test_runner_settings: aliases: ["Settings"] description: >- diff --git a/tests/test_skip.py b/tests/test_skip.py new file mode 100644 index 0000000..2900dac --- /dev/null +++ b/tests/test_skip.py @@ -0,0 +1,37 @@ +"""Test that assets and test cases can be skipped.""" +import unittest + +from src.translator_testing_model.datamodel.pydanticmodel import ( + PathfinderTestAsset, + PathfinderTestCase, + PerformanceTestCase, + TestAsset, + TestCase, +) + + +class TestSkip(unittest.TestCase): + """skip defaults to false, and skip_reason says why a test is skipped.""" + + def test_not_skipped_by_default(self): + for entity in ( + TestAsset(id="Asset_1"), + PathfinderTestAsset(id="Asset_2", minimum_required_path_nodes=1), + TestCase(id="TestCase_1"), + PathfinderTestCase(id="TestCase_2"), + ): + assert entity.skip is False + assert entity.skip_reason is None + + def test_skipped_with_a_reason(self): + asset = TestAsset.model_validate( + {"id": "Asset_1", "skip": True, "skip_reason": "always fails: Tests#140"} + ) + assert asset.skip is True + assert asset.skip_reason == "always fails: Tests#140" + + def test_subclasses_can_be_skipped(self): + case = PerformanceTestCase( + id="TestCase_1", test_run_time=20, spawn_rate=0.1, skip=True + ) + assert case.skip is True