From c2a1cc687055238387a0453b42b7e583de055586 Mon Sep 17 00:00:00 2001 From: Richard Bruskiewich Date: Mon, 4 Mar 2024 12:48:12 -0800 Subject: [PATCH 1/6] Added OneHopTests and StandardsValidation to TestObjectiveEnum; regenerate artifacts --- project/excel/translator_testing_model.xlsx | Bin 21360 -> 21329 bytes .../translator_testing_model.context.jsonld | 2 +- .../jsonld/translator_testing_model.jsonld | 38 +- .../translator_testing_model.schema.json | 13 +- project/owl/translator_testing_model.owl.ttl | 2020 +++++++++++------ .../shacl/translator_testing_model.shacl.ttl | 1448 ++++++------ .../sqlschema/translator_testing_model.sql | 26 +- .../datamodel/pydanticmodel.py | 23 +- .../datamodel/pydanticmodel_v2.py | 39 +- .../datamodel/translator_testing_model.py | 77 +- .../schema/translator_testing_model.yaml | 4 + 11 files changed, 2172 insertions(+), 1518 deletions(-) diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index 6a69d10771386959f1833d9fd93235d2230862a6..b61d5fe0a23dde6db9beef5c1cf570873a3d6e22 100644 GIT binary patch delta 7046 zcmeHMc{r5o-=D=A#*)M{qp@#U##oLeODDn@3}wlZEy|KCk;sgYO7^FabYyos;^qU+;Cj&2`N@_j5m=?|Oef*K^H2n50gx#xP!E(P&B`^HtANoIU1g(5|otPAeNix?hJ6fqYORc3Eez||_`dgV10 z5A=a)CCDg_mgTQ&JvRC5jSIZl?r2OZr5uRplXPt?)Zk%;CbvTC%&n!WQPZpAYNN;d z4|KdcFvANp`#lo(x@|&{kf*rGo8x>0JeK395guH=+%e1?TXvV>PEw@~-DiClk_1G}x^+01n({hB8`nS|kf zaX}xS%uH8uU+}ggD+(#~g!N%8gDeN@E$*P#cjwHM^gZ}0r1=p03p1|qF6of-_7q%q z%o68efk3jPA&{NqaVUm`X(JLeGZ z)Q}{&yGp6Rkp+qBqhEwxMxy_YI_cLp2Vf%VikEGTp1uLPkn%B&P8w*TjX zvnGouXEmq#A`RwPiHgIludkR5y;NFD87hu{n7_-R;aXM`d){z%qTCHPRH+1Mh$<6N zkkJ0ZfYV;p=sHNo_pUX*^Gn1O9l!3vsl415Y*bZQR3)c9q@z80@|H$g&w%V#PA6~c z39{DDH?sMeYAnRW&Q?~soj_y3nVl!D-Or4^Dkt8sN*yaX5U|LacXa9Lv(d$C{Ep^} zFRe5SdY6ZMBf}5b)asArvm)M>knSJTi@H@nY6e>CCxnQy%w11Pvp$5AUv!u@z8b0^ z+wW66epCBD^WO909c?^huKdq!VX8;YG+T+Rz<$pVi0^!Ktc%U?xI+7c8nK|9m#6u; zs2^&5@ATDf6B1^H|k z&ajV-5@C+or6a%@T%7)}jrXna0ELKCeY_n2-b38wKPio^moTW5gT!M@UJZHSk-RB~9ZTlY=OF{)LdN#+NW^`!w+-0KIo zOSo(G%N|#LjxY&1)tM0BlMQ!yZ<|v-W2l)sC3SgBlfM-WaAew~HSgl|nzXrGiO49{ zzkt)4`eb5-`8AJd-&1%eJCpC)OH8nWvj8(Gh#OAu?7WhgD@`eJ9JLclC3^Sl@Qgf@ z22nK&A;!q-hkKoV+EBLprf_hPgTejb8!-taWj|(R4)@otfs$dC+Ws(RR5Zsy(vm*{ z$86CwGM3jlu6aVg9;NpHZM}N=P1IS9pC)VgGnR5YizQti<1SQss>B+ZwY2jq36>E_ zldXlLQQgER6p@(x1gnb&GIPXh@{PNVW;4#$TkMn&Xh@qiYQ4oiPi9(5rbb@?UamNc zE6+e9xIW~vAGB>x5Wu2N2>W*nwkz*diD{IJ4aOUp8T;+O((r-nJB}Om!Yqo zbvLtI-PaL!TCdi|1T)w@<@pS?zgfQLFHFam^b)q}&1u1k)!4GHF zW}e$+S_8b8_(k}>Ue+GczMSgR8_zDNd}{PPUA+GqRnD=IskX?fQU!5SWx61RBr6BP z|FcjnmmvCUcuMLX*+7|w0ym>|<3|y#9;j)VindEKW+7L+K1x%hnxoCn+|z3|cII4| zp=y3Oeev_Ki3P!ASf=k>?I_B98dBEZZC4d|?PSSycLY{chY)v|gY^W$<`z{4FuFN? zf&>gwX3IM3`q31Xwg$0I)H~{B61V<*R#4SF5j~o9eO4Cx;D*wyAMhQIfB!K2eRlo%<`m9`lawxG#+&nYq9_*_V(g4&;dl zFV1PH9I$us>iXbzdi_Zk5QP#WeJ7S|k%aV}Sh7VD(syFX7D-6oi6vVkA$=#7Y>|ZY zomjF(64C#eC9Y`kA1wJk?~)%ZVZ2KI&$6UQ>$R#dZR^zux}uR_q&YK*w($z;)u3&> z;pK~Fwo*n>c`^W{l25VD*SpoxN7aQ!}XXEY{-kJa3ztFg(+fox&5hX za@C?HB>0Og$1tm<`N*otkO!h*7F`0T?De@)Ao9zQ)Er`eF>qMG zg*fD3nZwoZ(qii&JNt!%+EIfvkba)$dgmw2SFy)3v`Wu2ca*q8EWl`Vfhp#wL+5@w z?p!kX~lnPL-9#x2j<~faLa; zq-iCeb^IyGeeu3?hxR^UeV$&N=c4di)Vq+M&a;|j|00vfeAzWFgw)j_5|Z%*!zOw* zPo0`95aZj0x*QwRIPn32IbpujP0m#`h5OOG`dgfX`bp>WiT3VMMVzfpaL@kO6>I35 zdry`vy8Z-v-)o>S0ePKuIh?z_UdzsXfZlQa(HFMe3sG!K-Gv^;BkJm!rM5$jw*!pvmr6i?n-RwYxr&E6MuM?))VybOP$U-Wg=UbihuIM?~ z^P!+TnJU%n-HpEQ15tYxMdZq*6H!ly)|Wun{I`l}T8K0J+U0UMkm8oPmhOri4!EnQ zyT^U#F8|8XZ0+RY-NY8~(7g_UmHR89?V5!sXjy-?o$LL_pI&n^|6EwkN)%gcWGzFh zyS&u_r0c$ngaU&kihu8Wi=>uWJkDPtKE}g%E(n7i)Aev@ueWVXmg1EQJGt!X;^ri{ z8rmQuNm!9)pGgTHc<+q1n05={Rr0Kyf4Yq8%(ov1dt?f^&liYPYCrgNoxOFLX-IO% z@Ct`_0DEqH^dzCI-hKt?<}A2Y-{bxe`ONT6q*_^2Rd_84* z-u0h`#d6iwSEM1pjymDhZtBB-+m6vFM8f_!y!<%4{5ZV)FAgsoY*G2amLF{S|H~G+ zty9du9b&|fSg#F3ArMw35GnEDv$P0k_Y)m`^Qz(od{#Q#M z+<1P49Zccb1+w9JMYc7qnIRBCTJwMF6M3GUgAO#u^D>mr-~m`77k%#PrZCy2SUZ)r z-Hqq^Rydl61_Z!CJm+7+ru=ka5i?%&hUH^QF3xte#VDq=%(q+C2MK1U+ApdPH{w^T26*TP{dEOXJPoSnbL-U_odYTK{fw5wAV5B)C zo`2Wa3*IxA`A0n4l?lqyl_4w`R{yHhZ>`$M(|}0O-eNPer4|6pUy&}HWwE(b8*_yi zkcvTq;})EB%h$B?m3V2{{)6`2Zn+;z7nURZO;|#8V{R9{b^LASK$>=_J(xp~VJz)4 z0su?aps&VT4VHf-I>J)Ab&_V(km*~)7%jR`q!tTkYPlJWgCzj7+((~}x8$RH-qZ$- z^Q9@^rWM+D&$)H!KxbVRu*Z@SCensjn?(b2{li+B9vuu=@iE-SSOL%rps5v#aqD9R zXu}L>P4hqx-ykK$jo)tr7v=83htrC6l#S-h-%AGi-T-`LCCpGnwE|$E5!hyg0)-B7 f(kuN6Fp?iYb4rbe_CL}#K^SOoNQxyNw=wx&?oVj& delta 7062 zcmeHMXH-+^7ES07AOtCrpwg6T2rYCF1!AmAk+4u}P5Ql)n^ z2!tXs6lJ7{8AQs6(iMak0?df>X3cxQ_%V~Ul6%))`<$=b@2s=$PG>swQ#zF0)R2~r z3j%>KL0}f)mT~Mk%xhPbM;OMBam0NmQ+Emxk7cXW9-|MtO*rDjsF#PSyn2)u_<2Txs3e87OMav@;zGODuc$VcZQ7(=j?Hi&mzF{AnW>L>w zCE`AExhTNNfa^h9d2?j=ep>@i(J#}E7ruR{V@WBS%Uek`yN)93+>=gtD#Sg@~iN2WTJ=KTrUM1t2!y z#TZ&gxk4VRS&_<AWJB`fu#t{n=EFlT^O1%3E285rDb&W7?8hwYVzen`rv! z31^+o94dwIbh!yzT8HKca;uE{R#}=sTSE2w?cmsmEQefHjo0-@b)fS;QFq4eU&Ds3 z>Xx)uKp%*p?QaGUm*+lBELn>e~vPFHj48 zn8~lnrj9Kdbj?%rqM0QzB1y}AjBG>jxwe>zvQI^a>(a^?!gu_vd9?8hrkXi~RngQr zFzxcqD@KV^;>JOO5&L_B<{Ut!IT(TSr8<&&-!NAq z0Iz#?1`M`a($N-~n#Z&LcIfnU07LE*ymzemDUoBE%auN2c`J6^6MRTeI$3 zOJp2D*(S4jxVJ>|en_6JhgO#W36r`U#j_p9Li!ZciTRJ-S}P}j0q%I@W&QFK{TCB% zWHecg8h@^~)>JN*Yj9y3%PT?};Zq8^^lBlJ>GWiIOdt2bPAii4<>(=CSGrKo3)fM) zsn1h5Rmb4_R!t_wj0&A%gBL2wTAZFtA}4g|!wAytiKmyUlcleo7rk{twF^%YKHuMr z@|Dhel<)fHUGCE(SmwNlq{!1rtxnn#yPSYS4UEK?+r$E+73kJuSCq{5nP&Z{#c?#y zt{=5zHsKfT4eeKZc-8-BBr-eXlSU^D-AGo@c3GjY{WnGcfP=8DyAMd(r zGH;Xo+OxE>l{4c?cPE#NXF3yi=)3nr@c12yt@@<>@IZuq?4HE{5vbsRplblMz9#jN zPaqd}TMtIR8h!7`iZK4I)9L6V5($E?oVJL}YA6BAH@lRfpA~hZ(b=&o-7`|*IQi|J z%e81j9r%udasZ_x+6fLfy0Eyhl9Y108Qg-VB%sY0#}-urJdIt(#GvsP$@JcWhpKj z*Jz5zd!o9mc+DNH?$f?9n4LZvV2zd}_GrHB_lNnfVEY}7D%q~gVe!V2iq^BIjR~$A zfvcJt0B-Qza7>x{PRpMDn=4$O?&5zNey#hf@~hdySJ*4ohdSD?4G-RL555N4iEWNRsp) z(M*qF{S~nxNaE4*PsbyHB zcOSbimu2Xs_$b9 zmT&31`z%9je*9o#YthWe$>D=sjfUngT32^CGiOJI)W;UoK5(O}M$cb+I@OB)TqSes zom9?V;+$q+!nZ#}sBQo1;#3?UzVfre%RS1x7cAYh^xU=N?(K-CABhl#Ckx zza{f;$^4^BM*M#+8SwL76o5hdxw_Qg&9DYSqZBSIv<3FG?IMmOC}86zuby!)4k;V(Gjd zC360JWtQpEQx%uoD(gctLqjbh@`;6{6TAHi(+IT#Q(ZB0jjCzUt&sAW$IZDYIzI2d z7@-U~vG}Fydygeq335lC(wk@|&`IQK>Fl1X9GJ;8ZDb&pmkxAd8Y8_Ohi|F?c@iu- zF^REcH;!cbj<5==Gbd0F>`!DX^wVm_)5O|e_ypde$&ov&O7~dH!?QPa3NaVChvDK! zojUS!DTHDm#)whtm3J_|{1u8k+aD#+QA3euGbHCvs+qdAlbTg^d2_IuM_!m`%kH2T zmZ_F5g$tkEa_MFjvzqhQ*`MA4#|n{+p;hdc3W>*-ZomwWnlp(%SNy>!N8*mZ|2Ity+%IqK=SvwKTO)t!92z`qacaM*5bw2U8^x5Twyws= zLxUx`Zha4?Tqi6%?%+u6CN6{7xEdaWzJcEhxh4L%mWA+^=;D>TzVdi{atdR9#@(6T z%vXC-d{!5y$7U*ieZuPN_{3aL?q1!>;w@$(vC56%w4-*W})wU4^y2oB? zj%&rDnmGG1zDZb~Aqre`%{2PZAtuG#C2*4+^qjQ~bB$`MSy{XgWwl~HIY^vIe^sZv z%cLT>LhIJ6_s`TvW94Y{WTlAl**;Io_N6i1>Q;&sH8=6MTP|RLO?4`b0du0F-FoAe zVyOzZ2))+~!(MWE#g$Ii4-tW1CQMA4Ru7&Rv$A4?twPXG$8p)Wjnu!M6mJb9bSw;h z+O1qxv+~>6ul*f)&zAa#%PQ3}YFPeH~*hl1E-AXf$h_3RH+6~T!C%UYE-EPP+Wm+ z(rQ$x22fmqZPIE~sRmG7fo;-iRH?S+3T%^Bqe?X?iYxGUT20vM=rS1!fiQxeSX9w< zsp)lxw!}0PPIF%KJ-DKTWO5Vt$p|Wcu(pIf< z1KXvMx^Y*p*|Bj4YF*kGk3)N8-2?ohowgBrU-$e5jYI$5`W;wopz?=L4=xyB*X=?X zLnO2v#2E?+tht16f{~maWp(-#dwM6u;@|vS4Ps{k5oX-rLqo*h5TlqWL>_S5kb_G6 z-R!3SF(V6%no$~uSf9yD9FpcL8x^Z#qX#eJSl97L3hu)}#jC#Os&lPj80?x{HZ_FO zaMAwpr-YNVo$WEoIx_#X4p~sfNR&FWKkS_!XI8(HI@;<^dZ`~1|8)>OKQ*Y!Xnlje zC-QA>BjtKE$Y2kZ$Y;z+oyPCtp9KQhN{khv677sR_iS}=eni6T;F~HQzT6cnu_^pTpRKdmKt??Gb)dQ_`f6rK8V@yUoSWJDqiJ{njdY>Jt=ZvQr;65~5=+cBj${iZxKopgEpK87b0jnk zlrraE&yO=lstRgDAhuqoT)d^xYrj9989{g-?h54~jxbTi{Qf9FS#-er=DVm*&MP4> nPLVPxWeNkih4e%h%-7`yznX8<1B(R`DhTei*vCLLSR?)i#@96a diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index 4267351..3b595f2 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": "2023-12-07T10:24:07", + "generation_date": "2024-03-04T12:12:52", "source": "translator_testing_model.yaml" }, "@context": { diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index 1269edf..3802833 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -442,6 +442,14 @@ { "text": "QuantitativeTest", "description": "Quantitative test" + }, + { + "text": "OneHopTests", + "description": "One Hop Tests of knowledge graph navigation" + }, + { + "text": "StandardsValidation", + "description": "TRAPI and Biolink Model (\"reasoner-validator\") validation" } ] }, @@ -631,24 +639,14 @@ { "name": "ComponentEnum", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/ComponentEnum", + "description": "Translator components are identified by their InfoRes identifiers.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "permissible_values": [ - { - "text": "arax" - }, - { - "text": "aragorn" - }, - { - "text": "ars" - }, - { - "text": "bte" - }, - { - "text": "improving" - } - ] + "reachable_from": { + "source_ontology": "biolink", + "source_nodes": [ + "biolink:infores" + ] + } }, { "name": "TestPersonaEnum", @@ -2599,9 +2597,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2023-12-07T10:23:17", - "source_file_size": 26460, - "generation_date": "2023-12-07T10:24:08", + "source_file_date": "2024-03-04T11:51:57", + "source_file_size": 27771, + "generation_date": "2024-03-04T12:12:52", "@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 b5b6a5c..8dd0305 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -379,14 +379,7 @@ "type": "object" }, "ComponentEnum": { - "description": "", - "enum": [ - "arax", - "aragorn", - "ars", - "bte", - "improving" - ], + "description": "Translator components are identified by their InfoRes identifiers.", "title": "ComponentEnum", "type": "string" }, @@ -1421,7 +1414,9 @@ "enum": [ "AcceptanceTest", "BenchmarkTest", - "QuantitativeTest" + "QuantitativeTest", + "OneHopTests", + "StandardsValidation" ], "title": "TestObjectiveEnum", "type": "string" diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index 5d5f710..2ad48b4 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -12,10 +12,10 @@ ttm:AcceptanceTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom ttm:AcceptanceTestAsset ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:allValuesFrom ttm:AcceptanceTestAsset ; + owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], ttm:TestCase ; skos:definition "See AcceptanceTestAsset above for more details." ; @@ -36,7 +36,25 @@ ttm:BenchmarkTestSuite a owl:Class, ttm:ComplianceTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "ComplianceTestCase" ; - rdfs:subClassOf ttm:TestCase ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:biolink_version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:trapi_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:biolink_version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:biolink_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:trapi_version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:trapi_version ], + ttm:TestCase ; skos:definition "TRAPI and Biolink Model standards compliance test" ; skos:inScheme . @@ -79,10 +97,34 @@ ttm:TestRunSession a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunSession" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_runner_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCaseResult ; + owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_runner_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:test_entities ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; owl:onProperty ttm:test_entities ], ttm:TestEntity ; skos:definition "A single invocation of a TestRunner." ; @@ -92,8 +134,17 @@ ttm:TestRunnerConfiguration a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunnerConfiguration" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_run_parameters ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_run_parameters ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], @@ -101,298 +152,622 @@ ttm:TestRunnerConfiguration a owl:Class, skos:definition "General configuration parameters and test data input for a single invocation of a TestRunner." ; skos:inScheme . -ttm:answer_informal_concept a owl:ObjectProperty, +ttm:results a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "answer_informal_concept" ; - rdfs:range linkml:String ; - skos:definition "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" ; + rdfs:label "results" ; + rdfs:range ttm:TestOutput ; + skos:definition "The results of a TestRunner run of one specific TestCase." ; skos:inScheme . -ttm:aragorn a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "aragorn" ; +ttm:AcceptanceTestAsset a owl:Class, + linkml:ClassDefinition ; + rdfs:label "AcceptanceTestAsset" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:answer_informal_concept ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:scientific_question ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:top_level ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:top_level ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty ttm:top_level ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:scientific_question ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:query_node ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:must_pass_environment ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:direction ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:notes ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:must_pass_environment ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:must_pass_date ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:NodeEnum ; + owl:onProperty ttm:query_node ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:onProperty ttm:expected_result ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:scientific_question ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:notes ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:direction ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:answer_informal_concept ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_result ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:notes ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:must_pass_environment ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:query_node ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:answer_informal_concept ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:must_pass_date ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:expected_result ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:DirectionEnum ; + 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 . -ttm:arax a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "arax" ; +ttm:KnowledgeGraphNavigationTestCase a owl:Class, + linkml:ClassDefinition ; + rdfs:label "KnowledgeGraphNavigationTestCase" ; + rdfs:subClassOf ttm:TestCase ; + skos:definition "Knowledge Graph navigation integration test" ; skos:inScheme . -ttm:association a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "association" ; - rdfs:range ttm:association_category ; - skos:definition "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; - skos:inScheme . + a owl:Class, + ttm:QueryTypeEnum ; + rdfs:label "treats" ; + rdfs:subClassOf ttm:QueryTypeEnum . -ttm:biolink_version a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "biolink_version" ; - skos:definition "Biolink Model release (SemVer string)" ; +ttm:TestOutput a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestOutput" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom ttm:TestResultPKSet ; + owl:onProperty ttm:pks ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:pks ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_id ], + ttm:TestEntity ; + skos:definition "The output of a TestRunner run of one specific TestCase." ; skos:inScheme . -ttm:bte a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "bte" ; - skos:inScheme . +ttm:ComponentEnum a owl:Class, + linkml:EnumDefinition . -ttm:components a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "components" ; - rdfs:range ttm:ComponentEnum ; - skos:definition "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." ; - skos:inScheme . + a owl:Class, + ttm:DirectionEnum ; + rdfs:label "decreased" ; + rdfs:subClassOf ttm:DirectionEnum . -ttm:description a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "description" ; - skos:definition "A human-readable description for a Test Entity" ; - skos:inScheme . + a owl:Class, + ttm:DirectionEnum ; + rdfs:label "increased" ; + rdfs:subClassOf ttm:DirectionEnum . -ttm:direction a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "direction" ; - rdfs:range ttm:DirectionEnum ; - skos:definition "The direction of the expected query result triple" ; - skos:inScheme . + a owl:Class, + ttm:ExpectedOutputEnum ; + rdfs:label "Acceptable" ; + rdfs:subClassOf ttm:ExpectedOutputEnum . -ttm:expected_output a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "expected_output" ; - skos:altLabel "Expected Output" ; - skos:inScheme . + a owl:Class, + ttm:ExpectedOutputEnum ; + rdfs:label "BadButForgivable" ; + rdfs:subClassOf ttm:ExpectedOutputEnum . -ttm:expected_result a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "expected_result" ; - rdfs:range ttm:ExpectedResultsEnum ; - skos:definition "The expected result of the query" ; - skos:inScheme . + a owl:Class, + ttm:ExpectedOutputEnum ; + rdfs:label "NeverShow" ; + rdfs:subClassOf ttm:ExpectedOutputEnum . -ttm:improving a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "improving" ; - skos:inScheme . + a owl:Class, + ttm:ExpectedOutputEnum ; + rdfs:label "TopAnswer" ; + rdfs:subClassOf ttm:ExpectedOutputEnum . -ttm:in_v1 a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "in_v1" ; - rdfs:range linkml:Boolean ; - skos:altLabel "In v1" ; - skos:inScheme . + a owl:Class, + ttm:ExpectedResultsEnum ; + rdfs:label "exclude_bad" ; + rdfs:subClassOf ttm:ExpectedResultsEnum . -ttm:input_category a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "input_category" ; - rdfs:range ttm:concept_category ; - skos:altLabel "SubjectCategory" ; - skos:inScheme . + a owl:Class, + ttm:ExpectedResultsEnum ; + rdfs:label "include_good" ; + rdfs:subClassOf ttm:ExpectedResultsEnum . -ttm:input_id a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "input_id" ; - rdfs:range linkml:Uriorcurie ; - skos:altLabel "InputID, node normalized", - "SubjectID" ; - skos:inScheme . + a owl:Class, + ttm:FileFormatEnum ; + rdfs:label "JSON" ; + rdfs:subClassOf ttm:FileFormatEnum . -ttm:input_name a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "input_name" ; - skos:altLabel "InputName (user choice)", - "SubjectName" ; - skos:inScheme . + a owl:Class, + ttm:FileFormatEnum ; + rdfs:label "TSV" ; + rdfs:subClassOf ttm:FileFormatEnum . -ttm:merged_pk a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "merged_pk" ; - skos:inScheme . + a owl:Class, + ttm:FileFormatEnum ; + rdfs:label "YAML" ; + rdfs:subClassOf ttm:FileFormatEnum . -ttm:must_pass_date a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "must_pass_date" ; - rdfs:range linkml:Date ; - skos:definition "The date by which this test must pass" ; - skos:inScheme . + a owl:Class, + ttm:NodeEnum ; + rdfs:label "object" ; + rdfs:subClassOf ttm:NodeEnum . -ttm:must_pass_environment a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "must_pass_environment" ; - rdfs:range ttm:TestEnvEnum ; - skos:definition "The deployment environment within which this test must pass." ; - skos:inScheme . + a owl:Class, + ttm:NodeEnum ; + rdfs:label "subject" ; + rdfs:subClassOf ttm:NodeEnum . -ttm:name a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "name" ; - skos:definition "A human-readable name for a Test Entity" ; +ttm:Precondition a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Precondition" ; + rdfs:subClassOf ttm:TestEntity ; + skos:definition "Represents a precondition for a TestCase" ; skos:inScheme . -ttm:notes a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "notes" ; - rdfs:range linkml:String ; - skos:definition "The notes of the query" ; +ttm:Qualifier a owl:Class, + linkml:ClassDefinition ; + rdfs:label "Qualifier" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:parameter ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:parameter ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:parameter ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:value ], + ttm:TestEntityParameter ; skos:inScheme . -ttm:output_category a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "output_category" ; - rdfs:range ttm:concept_category ; - skos:altLabel "ObjectCategory" ; - skos:inScheme . + a owl:Class, + ttm:SemanticSeverityEnum ; + rdfs:label "High" ; + rdfs:subClassOf ttm:SemanticSeverityEnum . -ttm:output_id a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "output_id" ; - rdfs:range linkml:Uriorcurie ; - skos:altLabel "ObjectID", - "OutputID" ; - skos:inScheme . + a owl:Class, + ttm:SemanticSeverityEnum ; + rdfs:label "Low" ; + rdfs:subClassOf ttm:SemanticSeverityEnum . -ttm:output_name a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "output_name" ; - skos:altLabel "ObjectName", - "OutputName" ; + a owl:Class, + ttm:SemanticSeverityEnum ; + rdfs:label "NotApplicable" ; + rdfs:subClassOf ttm:SemanticSeverityEnum . + +ttm:TestCaseResult a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestCaseResult" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_suite_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_result ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_suite_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCaseResultEnum ; + owl:onProperty ttm:test_case_result ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_suite_id ], + [ 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 . -ttm:parent_pk a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "parent_pk" ; + a owl:Class, + ttm:TestCaseResultEnum ; + rdfs:label "test_failed" ; + rdfs:subClassOf ttm:TestCaseResultEnum . + + a owl:Class, + ttm:TestCaseResultEnum ; + rdfs:label "test_passed" ; + rdfs:subClassOf ttm:TestCaseResultEnum . + + a owl:Class, + ttm:TestCaseResultEnum ; + rdfs:label "test_skipped" ; + rdfs:subClassOf ttm:TestCaseResultEnum . + +ttm:TestEntityParameter a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestEntityParameter" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:parameter ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:parameter ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:parameter ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:value ] ; + skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; skos:inScheme . -ttm:pks a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "pks" ; - rdfs:range ttm:TestResultPKSet ; + a owl:Class, + ttm:TestEnvEnum ; + rdfs:label "ci" ; + rdfs:subClassOf ttm:TestEnvEnum . + + a owl:Class, + ttm:TestEnvEnum ; + rdfs:label "dev" ; + rdfs:subClassOf ttm:TestEnvEnum . + + a owl:Class, + ttm:TestEnvEnum ; + rdfs:label "prod" ; + rdfs:subClassOf ttm:TestEnvEnum . + + a owl:Class, + ttm:TestEnvEnum ; + rdfs:label "test" ; + rdfs:subClassOf ttm:TestEnvEnum . + + a owl:Class, + ttm:TestIssueEnum ; + rdfs:label "TMKP" ; + rdfs:subClassOf ttm:TestIssueEnum . + + a owl:Class, + ttm:TestIssueEnum ; + rdfs:label "category too generic" ; + rdfs:subClassOf ttm:TestIssueEnum . + + a owl:Class, + ttm:TestIssueEnum ; + rdfs:label "causes not treats" ; + rdfs:subClassOf ttm:TestIssueEnum . + + a owl:Class, + ttm:TestIssueEnum ; + rdfs:label "chemical roles" ; + rdfs:subClassOf ttm:TestIssueEnum . + + a owl:Class, + ttm:TestIssueEnum ; + rdfs:label "contraindications" ; + rdfs:subClassOf ttm:TestIssueEnum . + + a owl:Class, + ttm:TestIssueEnum ; + rdfs:label "test_issue" ; + rdfs:subClassOf ttm:TestIssueEnum . + + a owl:Class, + ttm:TestObjectiveEnum ; + rdfs:label "AcceptanceTest" ; + rdfs:subClassOf ttm:TestObjectiveEnum . + + a owl:Class, + ttm:TestObjectiveEnum ; + rdfs:label "BenchmarkTest" ; + rdfs:subClassOf ttm:TestObjectiveEnum . + + a owl:Class, + ttm:TestObjectiveEnum ; + rdfs:label "OneHopTests" ; + rdfs:subClassOf ttm:TestObjectiveEnum . + + a owl:Class, + ttm:TestObjectiveEnum ; + rdfs:label "QuantitativeTest" ; + rdfs:subClassOf ttm:TestObjectiveEnum . + + a owl:Class, + ttm:TestObjectiveEnum ; + rdfs:label "StandardsValidation" ; + rdfs:subClassOf ttm:TestObjectiveEnum . + + a owl:Class, + ttm:TestPersonaEnum ; + rdfs:label "All" ; + rdfs:subClassOf ttm:TestPersonaEnum . + + a owl:Class, + ttm:TestPersonaEnum ; + rdfs:label "Clinical" ; + rdfs:subClassOf ttm:TestPersonaEnum . + + a owl:Class, + ttm:TestPersonaEnum ; + rdfs:label "LookUp" ; + rdfs:subClassOf ttm:TestPersonaEnum . + + a owl:Class, + ttm:TestPersonaEnum ; + rdfs:label "Mechanistic" ; + rdfs:subClassOf ttm:TestPersonaEnum . + +ttm:TestResultPKSet a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestResultPKSet" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:arax ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:bte ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:aragorn ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:arax ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:merged_pk ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:improving ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:bte ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:improving ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:bte ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:aragorn ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:merged_pk ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:merged_pk ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:aragorn ], + [ 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:minCardinality 0 ; + owl:onProperty ttm:improving ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:arax ], + ttm:TestEntity ; skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . -ttm:preconditions a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "preconditions" ; - rdfs:range ttm:Precondition ; - skos:inScheme . + a owl:Class, + ttm:TestSourceEnum ; + rdfs:label "BenchMark" ; + rdfs:subClassOf ttm:TestSourceEnum . -ttm:predicate_id a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "predicate_id" ; - rdfs:range ttm:predicate_type ; - skos:altLabel "Predicate" ; - skos:inScheme . + a owl:Class, + ttm:TestSourceEnum ; + rdfs:label "SME" ; + rdfs:subClassOf ttm:TestSourceEnum . -ttm:predicate_name a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "predicate_name" ; - skos:altLabel "Query", - "Relationship" ; - skos:inScheme . + a owl:Class, + ttm:TestSourceEnum ; + rdfs:label "SMURF" ; + rdfs:subClassOf ttm:TestSourceEnum . -ttm:qualifiers a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "qualifiers" ; - rdfs:range ttm:Qualifier ; - skos:definition "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." ; - skos:inScheme . + a owl:Class, + ttm:TestSourceEnum ; + rdfs:label "TACT" ; + rdfs:subClassOf ttm:TestSourceEnum, + . -ttm:query_node a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "query_node" ; - rdfs:range ttm:NodeEnum ; - skos:definition "The node of the (templated) TRAPI query to replace" ; - skos:inScheme . + a owl:Class, + ttm:TestSourceEnum ; + rdfs:label "TestDataLocation" ; + rdfs:subClassOf ttm:TestSourceEnum . -ttm:query_type a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "query_type" ; - rdfs:range ttm:QueryTypeEnum ; - skos:definition "Type of TestCase query." ; - skos:inScheme . + a owl:Class, + ttm:TestSourceEnum ; + rdfs:label "TranslatorTeam" ; + rdfs:subClassOf ttm:TestSourceEnum . -ttm:results a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "results" ; - rdfs:range ttm:TestOutput ; - skos:definition "The results of a TestRunner run of one specific TestCase." ; +ttm:TestSuiteSpecification a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestSuiteSpecification" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_data_file_format ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_data_file_locator ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_data_file_format ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_data_file_locator ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:FileFormatEnum ; + owl:onProperty ttm:test_data_file_format ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + 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 . -ttm:scientific_question a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "scientific_question" ; - rdfs:range linkml:String ; - skos:definition "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; - skos:inScheme . + a owl:Class, + ttm:TrapiTemplateEnum ; + rdfs:label "ameliorates" ; + rdfs:subClassOf ttm:TrapiTemplateEnum . -ttm:semantic_severity a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "semantic_severity" ; - rdfs:range ttm:SemanticSeverityEnum ; - skos:altLabel "Semantic Severity" ; - skos:inScheme . + a owl:Class, + ttm:TrapiTemplateEnum ; + rdfs:label "drug-to-gene" ; + rdfs:subClassOf ttm:TrapiTemplateEnum . -ttm:string_entry a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "string_entry" ; - rdfs:range linkml:String ; - skos:altLabel "disease", - "trapi node 2" ; - skos:definition "The object of the core triple to be tested" ; - skos:inScheme . + a owl:Class, + ttm:TrapiTemplateEnum ; + rdfs:label "drug_treats_rare_disease" ; + rdfs:subClassOf ttm:TrapiTemplateEnum . -ttm:test_annotations a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_annotations" ; - rdfs:subPropertyOf ttm:test_entity_parameters ; - skos:definition "Metadata annotation." ; - skos:inScheme . + a owl:Class, + ttm:TrapiTemplateEnum ; + rdfs:label "three_hop" ; + rdfs:subClassOf ttm:TrapiTemplateEnum . -ttm:test_case a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_case" ; - rdfs:range ttm:TestCase ; - skos:definition "Slot referencing a single TestCase." ; - skos:inScheme . + a owl:Class, + ttm:TrapiTemplateEnum ; + rdfs:label "treats" ; + rdfs:subClassOf ttm:TrapiTemplateEnum . + +ttm:association_category a owl:Class, + linkml:TypeDefinition ; + rdfs:subClassOf ttm:category_type . -ttm:test_case_id a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_case_id" ; - rdfs:range linkml:String ; - skos:definition "CURIE id of a TestCase registered in the system." ; - skos:inScheme . +ttm:category_type a owl:Class, + linkml:TypeDefinition ; + rdfs:subClassOf linkml:Uriorcurie . -ttm:test_case_input_id a owl:ObjectProperty, +ttm:components a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_case_input_id" ; - rdfs:range linkml:Uriorcurie ; - skos:altLabel "InputID, node normalized", - "SubjectID" ; + rdfs:label "components" ; + rdfs:range ttm:ComponentEnum ; + skos:definition "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." ; skos:inScheme . -ttm:test_case_objective a owl:ObjectProperty, +ttm:pks a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_case_objective" ; - rdfs:range ttm:TestObjectiveEnum ; - skos:definition "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + rdfs:label "pks" ; + rdfs:range ttm:TestResultPKSet ; + skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . -ttm:test_case_predicate_id a owl:ObjectProperty, +ttm:preconditions a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_case_predicate_id" ; - skos:altLabel "Predicate" ; + rdfs:label "preconditions" ; + rdfs:range ttm:Precondition ; skos:inScheme . -ttm:test_case_predicate_name a owl:ObjectProperty, +ttm:predicate_type a owl:Class, + linkml:TypeDefinition ; + rdfs:subClassOf linkml:Uriorcurie . + +ttm:qualifiers a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_case_predicate_name" ; - skos:altLabel "Predicate" ; + rdfs:label "qualifiers" ; + rdfs:range ttm:Qualifier ; + skos:definition "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." ; skos:inScheme . -ttm:test_case_result a owl:ObjectProperty, +ttm:runner_settings a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_case_result" ; - rdfs:range ttm:TestCaseResultEnum ; - skos:definition "Encoded result of a single test run of a given test case" ; + rdfs:label "runner_settings" ; + rdfs:range linkml:String ; + skos:altLabel "Settings" ; + skos:definition "Settings for the test harness for TestAsset" ; skos:inScheme . ttm:test_case_results a owl:ObjectProperty, @@ -410,13 +785,6 @@ ttm:test_case_runner_settings a owl:ObjectProperty, skos:definition "Settings for the test harness for TestCase" ; skos:inScheme . -ttm:test_case_source a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_case_source" ; - rdfs:range ttm:TestSourceEnum ; - skos:definition "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." ; - skos:inScheme . - ttm:test_cases a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "test_cases" ; @@ -424,478 +792,681 @@ ttm:test_cases a owl:ObjectProperty, skos:definition "List of explicitly enumerated Test Cases." ; skos:inScheme . -ttm:test_data_file_format a owl:ObjectProperty, +ttm:test_entities a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_data_file_format" ; - rdfs:range ttm:FileFormatEnum ; - skos:definition "File format of test entity data (e.g. TSV, YAML or JSON)" ; + rdfs:label "test_entities" ; + rdfs:range ttm:TestEntity ; + skos:definition "One or more instances of TestEntity, generally of class TestAsset, TestCase or TestSuite." ; skos:inScheme . -ttm:test_data_file_locator a owl:ObjectProperty, +ttm:test_entity_parameters a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_data_file_locator" ; - rdfs:range linkml:Uriorcurie ; - skos:definition "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)" ; + rdfs:label "test_entity_parameters" ; + rdfs:range ttm:TestEntityParameter ; + skos:definition "One or more parameters documenting target characteristics of a TestEntity." ; skos:inScheme . -ttm:test_env a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_env" ; - rdfs:range ttm:TestEnvEnum ; - skos:definition "Deployment environment within which the associated TestSuite is run." ; +ttm:TestAsset a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestAsset" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom ttm:association_category ; + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestIssueEnum ; + owl:onProperty ttm:test_issue ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:association ], + [ 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:output_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:output_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:SemanticSeverityEnum ; + owl:onProperty ttm:semantic_severity ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:well_known ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:output_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:semantic_severity ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:input_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:semantic_severity ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:well_known ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:runner_settings ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_issue ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:input_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_issue ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:runner_settings ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:output_id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:output_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:well_known ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:input_name ], + ttm:TestEntity ; + skos:definition "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; skos:inScheme . -ttm:test_issue a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_issue" ; - rdfs:range ttm:TestIssueEnum ; - skos:altLabel "issue label" ; +ttm:TestMetadata a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestMetadata" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_annotations ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_source ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_objective ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_annotations ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_objective ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_source ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_source ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_annotations ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_objective ], + ttm:TestEntity ; + skos:definition "Represents metadata related to (external SME, SMURF, Translator feedback, large scale batch, etc.) like the provenance of test assets, cases and/or suites." ; + skos:inScheme . + + a owl:Class, + ttm:TestSourceEnum ; + rdfs:label "GitHubUserFeedback" ; + rdfs:subClassOf ttm:TestSourceEnum . + +ttm:TestSuite a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestSuite" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_cases ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_suite_specification ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_cases ], + [ a owl:Restriction ; + 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:allValuesFrom ttm:TestSuiteSpecification ; + owl:onProperty ttm:test_suite_specification ], + 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 . -ttm:test_metadata a owl:ObjectProperty, +ttm:answer_informal_concept a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_metadata" ; - rdfs:range ttm:TestMetadata ; - skos:definition "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + rdfs:label "answer_informal_concept" ; + rdfs:range linkml:String ; + skos:definition "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" ; skos:inScheme . -ttm:test_objective a owl:ObjectProperty, +ttm:aragorn a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_objective" ; - rdfs:range ttm:TestObjectiveEnum ; - skos:definition "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + rdfs:label "aragorn" ; skos:inScheme . -ttm:test_persona a owl:ObjectProperty, +ttm:arax a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_persona" ; - rdfs:range ttm:TestPersonaEnum ; - skos:definition "A Test persona describes the user or operational context of a given test." ; + rdfs:label "arax" ; skos:inScheme . -ttm:test_reference a owl:ObjectProperty, +ttm:association a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_reference" ; - rdfs:range linkml:Uriorcurie ; - skos:altLabel "GitHubIssue" ; - skos:definition "Document URL where original test source particulars are registered (e.g. Github repo)" ; + rdfs:label "association" ; + rdfs:range ttm:association_category ; + skos:definition "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; skos:inScheme . -ttm:test_run_parameters a owl:ObjectProperty, +ttm:biolink_version a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_run_parameters" ; - rdfs:subPropertyOf ttm:test_entity_parameters ; - skos:definition "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run." ; + rdfs:label "biolink_version" ; + skos:definition "Biolink Model release (SemVer string)" ; skos:inScheme . -ttm:test_runner_name a owl:ObjectProperty, +ttm:bte a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_runner_name" ; - skos:definition "Global system name of a TestRunner." ; + rdfs:label "bte" ; skos:inScheme . -ttm:test_source a owl:ObjectProperty, +ttm:description a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_source" ; - rdfs:range ttm:TestSourceEnum ; - skos:definition "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." ; + rdfs:label "description" ; + skos:definition "A human-readable description for a Test Entity" ; skos:inScheme . -ttm:test_suite_id a owl:ObjectProperty, +ttm:direction a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_suite_id" ; - rdfs:range linkml:Uriorcurie ; - skos:definition "CURIE id of a TestSuite registered in the system." ; + rdfs:label "direction" ; + rdfs:range ttm:DirectionEnum ; + skos:definition "The direction of the expected query result triple" ; skos:inScheme . -ttm:test_suite_specification a owl:ObjectProperty, +ttm:expected_output a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_suite_specification" ; - rdfs:range ttm:TestSuiteSpecification ; - skos:definition "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." ; + rdfs:label "expected_output" ; + skos:altLabel "Expected Output" ; skos:inScheme . -ttm:timestamp a owl:ObjectProperty, +ttm:expected_result a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "timestamp" ; - rdfs:range linkml:Datetime ; - skos:definition "Date time when a given entity was created." ; + rdfs:label "expected_result" ; + rdfs:range ttm:ExpectedResultsEnum ; + skos:definition "The expected result of the query" ; skos:inScheme . -ttm:top_level a owl:ObjectProperty, +ttm:improving a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "top_level" ; - rdfs:range linkml:Integer ; - skos:definition "The answer must return in these many results" ; + rdfs:label "improving" ; skos:inScheme . -ttm:trapi_template a owl:ObjectProperty, +ttm:in_v1 a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "trapi_template" ; - rdfs:range ttm:TrapiTemplateEnum ; - skos:definition "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." ; + rdfs:label "in_v1" ; + rdfs:range linkml:Boolean ; + skos:altLabel "In v1" ; skos:inScheme . -ttm:trapi_version a owl:ObjectProperty, +ttm:input_category a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "trapi_version" ; - skos:definition "TRAPI version (SemVer string)" ; + rdfs:label "input_category" ; + rdfs:range ttm:concept_category ; + skos:altLabel "SubjectCategory" ; skos:inScheme . -ttm:unsecret a owl:ObjectProperty, +ttm:input_id a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "unsecret" ; + rdfs:label "input_id" ; + rdfs:range linkml:Uriorcurie ; + skos:altLabel "InputID, node normalized", + "SubjectID" ; skos:inScheme . -ttm:well_known a owl:ObjectProperty, +ttm:input_name a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "well_known" ; - rdfs:range linkml:Boolean ; - skos:altLabel "Well Known" ; - skos:inScheme . - -ttm:AcceptanceTestAsset a owl:Class, - linkml:ClassDefinition ; - rdfs:label "AcceptanceTestAsset" ; - rdfs:subClassOf ttm:TestAsset ; - skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; - skos:inScheme . - -ttm:KnowledgeGraphNavigationTestCase a owl:Class, - linkml:ClassDefinition ; - rdfs:label "KnowledgeGraphNavigationTestCase" ; - rdfs:subClassOf ttm:TestCase ; - skos:definition "Knowledge Graph navigation integration test" ; - skos:inScheme . - -ttm:Precondition a owl:Class, - linkml:ClassDefinition ; - rdfs:label "Precondition" ; - rdfs:subClassOf ttm:TestEntity ; - skos:definition "Represents a precondition for a TestCase" ; - skos:inScheme . - -ttm:Qualifier a owl:Class, - linkml:ClassDefinition ; - rdfs:label "Qualifier" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - 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 ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:value ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:parameter ], - ttm:TestEntityParameter ; - skos:inScheme . - - a owl:Class, - ttm:QueryTypeEnum ; - rdfs:label "treats" . - -ttm:TestCaseResult a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestCaseResult" ; - rdfs:subClassOf ttm:TestEntity ; - skos:definition "The outcome of a TestRunner run of one specific TestCase." ; - skos:inScheme . - -ttm:TestMetadata a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestMetadata" ; - rdfs:subClassOf ttm:TestEntity ; - skos:definition "Represents metadata related to (external SME, SMURF, Translator feedback, large scale batch, etc.) like the provenance of test assets, cases and/or suites." ; - skos:inScheme . - -ttm:TestOutput a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestOutput" ; - rdfs:subClassOf ttm:TestEntity ; - skos:definition "The output of a TestRunner run of one specific TestCase." ; + rdfs:label "input_name" ; + skos:altLabel "InputName (user choice)", + "SubjectName" ; skos:inScheme . -ttm:TestResultPKSet a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestResultPKSet" ; - rdfs:subClassOf ttm:TestEntity ; - skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; +ttm:merged_pk a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "merged_pk" ; skos:inScheme . -ttm:TestSuiteSpecification a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestSuiteSpecification" ; - rdfs:subClassOf ttm:TestEntity ; - skos:definition "Parameters for a Test Case instances either dynamically generated from some external source of Test Assets." ; +ttm:must_pass_date a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "must_pass_date" ; + rdfs:range linkml:Date ; + skos:definition "The date by which this test must pass" ; skos:inScheme . -ttm:association_category a owl:Class, - linkml:TypeDefinition ; - rdfs:subClassOf ttm:category_type . - -ttm:predicate_type a owl:Class, - linkml:TypeDefinition ; - rdfs:subClassOf linkml:Uriorcurie . - - a owl:Class, - ttm:ComponentEnum ; - rdfs:label "aragorn" . - - a owl:Class, - ttm:ComponentEnum ; - rdfs:label "arax" . - - a owl:Class, - ttm:ComponentEnum ; - rdfs:label "ars" . - - a owl:Class, - ttm:ComponentEnum ; - rdfs:label "bte" . - - a owl:Class, - ttm:ComponentEnum ; - rdfs:label "improving" . - - a owl:Class, - ttm:DirectionEnum ; - rdfs:label "decreased" . - - a owl:Class, - ttm:DirectionEnum ; - rdfs:label "increased" . - - a owl:Class, - ttm:ExpectedOutputEnum ; - rdfs:label "Acceptable" . - - a owl:Class, - ttm:ExpectedOutputEnum ; - rdfs:label "BadButForgivable" . - - a owl:Class, - ttm:ExpectedOutputEnum ; - rdfs:label "NeverShow" . - - a owl:Class, - ttm:ExpectedOutputEnum ; - rdfs:label "TopAnswer" . - - a owl:Class, - ttm:ExpectedResultsEnum ; - rdfs:label "exclude_bad" . - - a owl:Class, - ttm:ExpectedResultsEnum ; - rdfs:label "include_good" . - - a owl:Class, - ttm:FileFormatEnum ; - rdfs:label "JSON" . - - a owl:Class, - ttm:FileFormatEnum ; - rdfs:label "TSV" . - - a owl:Class, - ttm:FileFormatEnum ; - rdfs:label "YAML" . - - a owl:Class, - ttm:NodeEnum ; - rdfs:label "object" . - - a owl:Class, - ttm:NodeEnum ; - rdfs:label "subject" . - -ttm:QueryTypeEnum a owl:Class, - linkml:EnumDefinition ; - linkml:permissible_values . - - a owl:Class, - ttm:SemanticSeverityEnum ; - rdfs:label "High" . +ttm:must_pass_environment a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "must_pass_environment" ; + rdfs:range ttm:TestEnvEnum ; + skos:definition "The deployment environment within which this test must pass." ; + skos:inScheme . - a owl:Class, - ttm:SemanticSeverityEnum ; - rdfs:label "Low" . +ttm:name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "name" ; + skos:definition "A human-readable name for a Test Entity" ; + skos:inScheme . - a owl:Class, - ttm:SemanticSeverityEnum ; - rdfs:label "NotApplicable" . +ttm:notes a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "notes" ; + rdfs:range linkml:String ; + skos:definition "The notes of the query" ; + skos:inScheme . - a owl:Class, - ttm:TestCaseResultEnum ; - rdfs:label "test_failed" . +ttm:output_category a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "output_category" ; + rdfs:range ttm:concept_category ; + skos:altLabel "ObjectCategory" ; + skos:inScheme . - a owl:Class, - ttm:TestCaseResultEnum ; - rdfs:label "test_passed" . +ttm:output_id a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "output_id" ; + rdfs:range linkml:Uriorcurie ; + skos:altLabel "ObjectID", + "OutputID" ; + skos:inScheme . - a owl:Class, - ttm:TestCaseResultEnum ; - rdfs:label "test_skipped" . +ttm:output_name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "output_name" ; + skos:altLabel "ObjectName", + "OutputName" ; + skos:inScheme . -ttm:TestEntityParameter a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestEntityParameter" ; - skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; +ttm:parent_pk a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "parent_pk" ; skos:inScheme . - a owl:Class, - ttm:TestEnvEnum ; - rdfs:label "ci" . +ttm:predicate_id a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "predicate_id" ; + rdfs:range ttm:predicate_type ; + skos:altLabel "Predicate" ; + skos:inScheme . - a owl:Class, - ttm:TestEnvEnum ; - rdfs:label "dev" . +ttm:predicate_name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "predicate_name" ; + skos:altLabel "Query", + "Relationship" ; + skos:inScheme . - a owl:Class, - ttm:TestEnvEnum ; - rdfs:label "prod" . +ttm:query_node a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "query_node" ; + rdfs:range ttm:NodeEnum ; + skos:definition "The node of the (templated) TRAPI query to replace" ; + skos:inScheme . - a owl:Class, - ttm:TestEnvEnum ; - rdfs:label "test" . +ttm:query_type a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "query_type" ; + rdfs:range ttm:QueryTypeEnum ; + skos:definition "Type of TestCase query." ; + skos:inScheme . - a owl:Class, - ttm:TestIssueEnum ; - rdfs:label "TMKP" . +ttm:scientific_question a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "scientific_question" ; + rdfs:range linkml:String ; + skos:definition "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; + skos:inScheme . - a owl:Class, - ttm:TestIssueEnum ; - rdfs:label "category too generic" . +ttm:semantic_severity a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "semantic_severity" ; + rdfs:range ttm:SemanticSeverityEnum ; + skos:altLabel "Semantic Severity" ; + skos:inScheme . - a owl:Class, - ttm:TestIssueEnum ; - rdfs:label "causes not treats" . +ttm:string_entry a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "string_entry" ; + rdfs:range linkml:String ; + skos:altLabel "disease", + "trapi node 2" ; + skos:definition "The object of the core triple to be tested" ; + skos:inScheme . - a owl:Class, - ttm:TestIssueEnum ; - rdfs:label "chemical roles" . +ttm:test_annotations a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_annotations" ; + rdfs:subPropertyOf ttm:test_entity_parameters ; + skos:definition "Metadata annotation." ; + skos:inScheme . - a owl:Class, - ttm:TestIssueEnum ; - rdfs:label "contraindications" . +ttm:test_case a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case" ; + rdfs:range ttm:TestCase ; + skos:definition "Slot referencing a single TestCase." ; + skos:inScheme . - a owl:Class, - ttm:TestIssueEnum ; - rdfs:label "test_issue" . +ttm:test_case_id a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case_id" ; + rdfs:range linkml:String ; + skos:definition "CURIE id of a TestCase registered in the system." ; + skos:inScheme . - a owl:Class, - ttm:TestObjectiveEnum ; - rdfs:label "AcceptanceTest" . +ttm:test_case_input_id a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case_input_id" ; + rdfs:range linkml:Uriorcurie ; + skos:altLabel "InputID, node normalized", + "SubjectID" ; + skos:inScheme . - a owl:Class, - ttm:TestObjectiveEnum ; - rdfs:label "BenchmarkTest" . +ttm:test_case_objective a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case_objective" ; + rdfs:range ttm:TestObjectiveEnum ; + skos:definition "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + skos:inScheme . - a owl:Class, - ttm:TestObjectiveEnum ; - rdfs:label "QuantitativeTest" . +ttm:test_case_predicate_id a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case_predicate_id" ; + skos:altLabel "Predicate" ; + skos:inScheme . - a owl:Class, - ttm:TestPersonaEnum ; - rdfs:label "All" . +ttm:test_case_predicate_name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case_predicate_name" ; + skos:altLabel "Predicate" ; + skos:inScheme . - a owl:Class, - ttm:TestPersonaEnum ; - rdfs:label "Clinical" . +ttm:test_case_result a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case_result" ; + rdfs:range ttm:TestCaseResultEnum ; + skos:definition "Encoded result of a single test run of a given test case" ; + skos:inScheme . - a owl:Class, - ttm:TestPersonaEnum ; - rdfs:label "LookUp" . +ttm:test_case_source a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_case_source" ; + rdfs:range ttm:TestSourceEnum ; + skos:definition "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." ; + skos:inScheme . - a owl:Class, - ttm:TestPersonaEnum ; - rdfs:label "Mechanistic" . +ttm:test_data_file_format a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_data_file_format" ; + rdfs:range ttm:FileFormatEnum ; + skos:definition "File format of test entity data (e.g. TSV, YAML or JSON)" ; + skos:inScheme . - a owl:Class, - ttm:TestSourceEnum ; - rdfs:label "BenchMark" . +ttm:test_data_file_locator a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_data_file_locator" ; + rdfs:range linkml:Uriorcurie ; + skos:definition "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)" ; + skos:inScheme . - a owl:Class, - ttm:TestSourceEnum ; - rdfs:label "GitHubUserFeedback" . +ttm:test_env a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_env" ; + rdfs:range ttm:TestEnvEnum ; + skos:definition "Deployment environment within which the associated TestSuite is run." ; + skos:inScheme . - a owl:Class, - ttm:TestSourceEnum ; - rdfs:label "SME" . +ttm:test_issue a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_issue" ; + rdfs:range ttm:TestIssueEnum ; + skos:altLabel "issue label" ; + skos:inScheme . - a owl:Class, - ttm:TestSourceEnum ; - rdfs:label "SMURF" . +ttm:test_objective a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_objective" ; + rdfs:range ttm:TestObjectiveEnum ; + skos:definition "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + skos:inScheme . - a owl:Class, - ttm:TestSourceEnum ; - rdfs:label "TACT" . +ttm:test_persona a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_persona" ; + rdfs:range ttm:TestPersonaEnum ; + skos:definition "A Test persona describes the user or operational context of a given test." ; + skos:inScheme . - a owl:Class, - ttm:TestSourceEnum ; - rdfs:label "TestDataLocation" . +ttm:test_run_parameters a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_run_parameters" ; + rdfs:subPropertyOf ttm:test_entity_parameters ; + skos:definition "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run." ; + skos:inScheme . - a owl:Class, - ttm:TestSourceEnum ; - rdfs:label "TranslatorTeam" . +ttm:test_runner_name a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_runner_name" ; + skos:definition "Global system name of a TestRunner." ; + skos:inScheme . - a owl:Class, - ttm:TrapiTemplateEnum ; - rdfs:label "ameliorates" . +ttm:test_source a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_source" ; + rdfs:range ttm:TestSourceEnum ; + skos:definition "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." ; + skos:inScheme . - a owl:Class, - ttm:TrapiTemplateEnum ; - rdfs:label "drug-to-gene" . +ttm:test_suite_id a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_suite_id" ; + rdfs:range linkml:Uriorcurie ; + skos:definition "CURIE id of a TestSuite registered in the system." ; + skos:inScheme . - a owl:Class, - ttm:TrapiTemplateEnum ; - rdfs:label "drug_treats_rare_disease" . +ttm:test_suite_specification a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_suite_specification" ; + rdfs:range ttm:TestSuiteSpecification ; + skos:definition "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." ; + skos:inScheme . - a owl:Class, - ttm:TrapiTemplateEnum ; - rdfs:label "three_hop" . +ttm:timestamp a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "timestamp" ; + rdfs:range linkml:Datetime ; + skos:definition "Date time when a given entity was created." ; + skos:inScheme . - a owl:Class, - ttm:TrapiTemplateEnum ; - rdfs:label "treats" . +ttm:top_level a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "top_level" ; + rdfs:range linkml:Integer ; + skos:definition "The answer must return in these many results" ; + skos:inScheme . -ttm:category_type a owl:Class, - linkml:TypeDefinition ; - rdfs:subClassOf linkml:Uriorcurie . +ttm:trapi_template a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "trapi_template" ; + rdfs:range ttm:TrapiTemplateEnum ; + skos:definition "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." ; + skos:inScheme . -ttm:concept_category a owl:Class, - linkml:TypeDefinition ; - rdfs:subClassOf ttm:category_type . +ttm:trapi_version a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "trapi_version" ; + skos:definition "TRAPI version (SemVer string)" ; + skos:inScheme . -ttm:runner_settings a owl:ObjectProperty, +ttm:unsecret a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "runner_settings" ; - rdfs:range linkml:String ; - skos:altLabel "Settings" ; - skos:definition "Settings for the test harness for TestAsset" ; + rdfs:label "unsecret" ; skos:inScheme . -ttm:test_entities a owl:ObjectProperty, +ttm:well_known a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_entities" ; - rdfs:range ttm:TestEntity ; - skos:definition "One or more instances of TestEntity, generally of class TestAsset, TestCase or TestSuite." ; + rdfs:label "well_known" ; + rdfs:range linkml:Boolean ; + skos:altLabel "Well Known" ; skos:inScheme . -ttm:test_entity_parameters a owl:ObjectProperty, +ttm:QueryTypeEnum a owl:Class, + linkml:EnumDefinition ; + linkml:permissible_values . + +ttm:concept_category a owl:Class, + linkml:TypeDefinition ; + rdfs:subClassOf ttm:category_type . + +ttm:test_assets a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_entity_parameters" ; - rdfs:range ttm:TestEntityParameter ; - skos:definition "One or more parameters documenting target characteristics of a TestEntity." ; + rdfs:label "test_assets" ; + rdfs:range ttm:TestAsset ; + skos:definition "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)." ; skos:inScheme . ttm:DirectionEnum a owl:Class, @@ -916,41 +1487,6 @@ ttm:NodeEnum a owl:Class, linkml:permissible_values , . -ttm:TestAsset a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestAsset" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:runner_settings ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:runner_settings ], - 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 . - -ttm:TestSuite a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestSuite" ; - rdfs:subClassOf 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 . - ttm:id a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "id" ; @@ -964,6 +1500,21 @@ ttm:parameter a owl:ObjectProperty, skos:definition "Name of a TestParameter." ; skos:inScheme . +ttm:test_metadata a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_metadata" ; + rdfs:range ttm:TestMetadata ; + skos:definition "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + skos:inScheme . + +ttm:test_reference a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_reference" ; + rdfs:range linkml:Uriorcurie ; + skos:altLabel "GitHubIssue" ; + skos:definition "Document URL where original test source particulars are registered (e.g. Github repo)" ; + skos:inScheme . + ttm:value a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "value" ; @@ -992,6 +1543,115 @@ ttm:SemanticSeverityEnum a owl:Class, , . +ttm:TestCase a owl:Class, + linkml:ClassDefinition ; + rdfs:label "TestCase" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_runner_settings ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:components ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_case_objective ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_predicate_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_predicate_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:preconditions ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_source ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:QueryTypeEnum ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_objective ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_predicate_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_case_source ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_case_runner_settings ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_objective ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_source ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:tags ], + ttm:TestEntity ; + skos:definition "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; + skos:inScheme . + ttm:TestCaseResultEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -999,20 +1659,12 @@ ttm:TestCaseResultEnum a owl:Class, , . -ttm:test_assets a owl:ObjectProperty, +ttm:tags a owl:ObjectProperty, linkml:SlotDefinition ; - rdfs:label "test_assets" ; - rdfs:range ttm:TestAsset ; - skos:definition "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)." ; + rdfs:label "tags" ; + skos:definition "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." ; skos:inScheme . -ttm:TestObjectiveEnum a owl:Class, - linkml:EnumDefinition ; - owl:unionOf ( ) ; - linkml:permissible_values , - , - . - ttm:TestPersonaEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -1021,32 +1673,43 @@ ttm:TestPersonaEnum a owl:Class, , . -ttm:ComponentEnum a owl:Class, - linkml:EnumDefinition ; - owl:unionOf ( ) ; - linkml:permissible_values , - , - , - , - . - -ttm:TestCase a owl:Class, +ttm:TestEntity a owl:Class, linkml:ClassDefinition ; - rdfs:label "TestCase" ; + rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:description ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:description ], + [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_assets ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], - 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." ; + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + 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 . ttm:TestEnvEnum a owl:Class, @@ -1066,12 +1729,6 @@ ttm:TrapiTemplateEnum a owl:Class, , . -ttm:tags a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "tags" ; - skos:definition "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." ; - skos:inScheme . - ttm:TestIssueEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -1082,6 +1739,15 @@ ttm:TestIssueEnum a owl:Class, , . +ttm:TestObjectiveEnum a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( ) ; + linkml:permissible_values , + , + , + , + . + ttm:TestSourceEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -1093,12 +1759,6 @@ ttm:TestSourceEnum a owl:Class, , . -ttm:TestEntity a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestEntity" ; - skos:definition "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; - skos:inScheme . - a owl:Ontology ; rdfs:label "Translator-Testing-Model" ; dcterms:license "MIT" ; diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index 747ba2d..fce96f0 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -8,44 +8,72 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ 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:property [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:preconditions ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path ttm:test_case_predicate_id ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_env ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:trapi_template ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], + sh:order 13 ; + 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:datatype xsd:string ; sh:maxCount 1 ; sh:order 8 ; sh:path ttm:test_case_predicate_name ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], + sh:order 1 ; + 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 15 ; sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path schema1:description ], [ 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 2 ; sh:path ttm:test_assets ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_input_id ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" ) ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_objective ], @@ -53,54 +81,37 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:description "Settings for the test harness for TestCase" ; sh:minCount 1 ; sh:order 11 ; - sh:path ttm:test_case_runner_settings ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( "arax" "aragorn" "ars" "bte" "improving" ) ; - sh:order 5 ; - sh:path ttm:components ], - [ 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: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 1 ; - sh:path ttm:query_type ] ; + sh:path ttm:test_case_runner_settings ] ; sh:targetClass ttm:AcceptanceTestCase . ttm:AcceptanceTestSuite 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 5 ; - sh:path schema1:name ], + sh:order 6 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 7 ; sh:path schema1:additionalType ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + [ 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:order 1 ; - sh:path ttm:test_persona ], + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], + [ 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:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -113,22 +124,11 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:test_cases ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:class ttm:TestSuiteSpecification ; - sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; + [ sh:description "A Test persona describes the user or operational context of a given test." ; + sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ] ; + sh:order 1 ; + sh:path ttm:test_persona ] ; sh:targetClass ttm:AcceptanceTestSuite . ttm:BenchmarkTestSuite a sh:NodeShape ; @@ -141,170 +141,170 @@ ttm:ComplianceTestCase a sh:NodeShape ; sh:closed true ; sh:description "TRAPI and Biolink Model standards compliance test" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:test_case_input_id ], + sh:property [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + 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 4 ; + sh:path ttm:test_assets ], + [ sh:datatype xsd:string ; + sh:description "Biolink Model release (SemVer string)" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:biolink_version ], [ sh:datatype xsd:string ; sh:description "Settings for the test harness for TestCase" ; sh:minCount 1 ; sh:order 13 ; sh:path ttm:test_case_runner_settings ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path ttm:preconditions ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:query_type ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 14 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 17 ; + sh:path schema1:additionalType ], [ sh:description "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 9 ; sh:path ttm:test_case_source ], [ sh:datatype xsd:string ; + sh:description "TRAPI version (SemVer string)" ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_predicate_id ], - [ 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 ( "arax" "aragorn" "ars" "bte" "improving" ) ; - sh:order 7 ; - sh:path ttm:components ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" ) ; + sh:order 0 ; + sh:path ttm:trapi_version ], + [ 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 8 ; - sh:path ttm:test_case_objective ], + sh:order 6 ; + sh:path ttm:trapi_template ], + [ sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:test_case_input_id ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 15 ; sh:path schema1:name ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_env ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], + sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_predicate_name ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 16 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_predicate_name ], - [ sh:datatype xsd:string ; - sh:description "Biolink Model release (SemVer string)" ; + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:biolink_version ], - [ 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 4 ; - sh:path ttm:test_assets ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; + sh:order 2 ; + sh:path ttm:test_env ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:query_type ], + sh:order 8 ; + 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 [ rdf:rest () ] ; + sh:order 7 ; + sh:path ttm:components ], [ sh:datatype xsd:string ; - sh:description "TRAPI version (SemVer string)" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:trapi_version ], - [ 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 6 ; - sh:path ttm:trapi_template ] ; + sh:order 11 ; + sh:path ttm:test_case_predicate_id ] ; sh:targetClass ttm:ComplianceTestCase . ttm:KnowledgeGraphNavigationTestCase a sh:NodeShape ; sh:closed true ; sh:description "Knowledge Graph navigation integration test" ; sh:ignoredProperties ( rdf:type ) ; - 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:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_source ], + sh:order 13 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 9 ; sh:path ttm:test_case_predicate_id ], - [ 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:datatype xsd:string ; + sh:description "Settings for the test harness for TestCase" ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_assets ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], - [ 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 11 ; + sh:path ttm:test_case_runner_settings ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm: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 ( "arax" "aragorn" "ars" "bte" "improving" ) ; - sh:order 5 ; - sh:path ttm:components ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], + sh:order 0 ; + sh:path ttm:test_env ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_input_id ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:query_type ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ 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:maxCount 1 ; 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 4 ; + sh:path ttm:trapi_template ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" ) ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_objective ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:preconditions ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], [ 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 15 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; + [ 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:order 11 ; - sh:path ttm:test_case_runner_settings ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ] ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_assets ], + [ 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:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path schema1:description ] ; sh:targetClass ttm:KnowledgeGraphNavigationTestCase . ttm:OneHopTestCase a sh:NodeShape ; @@ -315,15 +315,6 @@ ttm:OneHopTestCase a sh:NodeShape ; sh:maxCount 1 ; sh:order 8 ; sh:path ttm:test_case_predicate_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 ( "arax" "aragorn" "ars" "bte" "improving" ) ; - sh:order 5 ; - sh:path ttm:components ], - [ 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 4 ; - sh:path ttm:trapi_template ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -333,101 +324,110 @@ ttm:OneHopTestCase a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 3 ; 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 2 ; - sh:path ttm:test_assets ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], - [ 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 "Deployment environment within which the associated TestSuite is run." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_env ], + [ 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 15 ; + sh:path schema1:additionalType ], + [ 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 4 ; + sh:path ttm:trapi_template ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 9 ; 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 7 ; + 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 [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "Settings for the test harness for TestCase" ; + sh:minCount 1 ; + sh:order 11 ; + sh:path ttm:test_case_runner_settings ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], + [ sh:class ttm:TestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_assets ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:query_type ], [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_runner_settings ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" ) ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - 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 15 ; - sh:path schema1:additionalType ], + sh:order 13 ; + sh:path schema1:name ], [ sh:maxCount 1 ; sh:order 10 ; - sh:path ttm:test_case_input_id ] ; + sh:path ttm:test_case_input_id ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:test_case_objective ] ; sh:targetClass ttm:OneHopTestCase . 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:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:class ttm:TestMetadata ; + sh:property [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_cases ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ], + sh:order 5 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 7 ; sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], [ sh: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: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 5 ; - sh:path schema1:name ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], + sh:order 1 ; + sh:path ttm:test_persona ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -440,224 +440,224 @@ ttm:QuantitativeTestCase a sh:NodeShape ; 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:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 9 ; - 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 13 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_runner_settings ], - [ 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 ( "arax" "aragorn" "ars" "bte" "improving" ) ; - sh:order 5 ; - sh:path ttm:components ], + sh:order 14 ; + sh:path schema1:description ], [ sh:description "Deployment environment within which the associated TestSuite is run." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_env ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:preconditions ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:trapi_template ], - [ 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 "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" ) ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_objective ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_input_id ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:query_type ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_assets ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_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 15 ; sh:path schema1:additionalType ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ] ; - 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: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:order 9 ; + sh:path ttm:test_case_predicate_id ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; sh:order 6 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:path ttm:test_case_objective ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_predicate_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 [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ], + [ sh:datatype xsd:string ; + sh:description "Settings for the test harness for TestCase" ; 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:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:order 11 ; + sh:path ttm:test_case_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 7 ; + sh:path ttm:test_case_source ], + [ sh:class ttm:TestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ], - [ sh:class ttm:TestSuiteSpecification ; + sh:order 2 ; + sh:path ttm:test_assets ], + [ 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:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ] ; + sh:targetClass ttm:QuantitativeTestCase . + +ttm:StandardsComplianceTestSuite a sh:NodeShape ; + sh:closed true ; + sh:description "Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class ttm:TestSuiteSpecification ; sh: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 unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + 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 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], [ sh:class ttm:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path ttm:test_cases ] ; + sh: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:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], + [ sh:description "A Test persona describes the user or operational context of a given test." ; + sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_persona ] ; sh: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 "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 21 ; - sh:path schema1:additionalType ], - [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ 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 18 ; - sh:path schema1:identifier ], + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path ttm:test_metadata ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 13 ; sh:path ttm:in_v1 ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], [ sh:datatype xsd:string ; sh:description "Settings for the test harness, e.g. \"inferred\"" ; sh:minCount 1 ; sh:order 16 ; sh:path ttm:runner_settings ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:expected_output ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:datatype xsd:string ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:minCount 1 ; + sh:order 18 ; + sh:path schema1:identifier ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 20 ; - sh:path schema1:description ], + sh:order 15 ; + sh:path ttm:test_reference ], [ 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:BlankNode ; sh:order 9 ; sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], + sh:order 14 ; + sh:path ttm:well_known ], [ sh:maxCount 1 ; sh:order 5 ; sh:path ttm:output_id ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 20 ; + sh:path schema1:description ], [ 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:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path ttm:test_metadata ], + sh:order 12 ; + sh:path ttm:semantic_severity ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:name ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:order 10 ; + sh:path ttm:expected_output ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], + sh:order 1 ; + sh:path ttm:input_name ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:association ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:output_name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:predicate_name ], - [ sh:datatype xsd:boolean ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ] ; + sh:order 19 ; + sh:path schema1:name ], + [ 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 21 ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:TestEdgeData . ttm:TestOutput a sh:NodeShape ; @@ -665,50 +665,59 @@ ttm:TestOutput a sh:NodeShape ; sh:description "The output of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable 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 "CURIE id of a TestCase registered in the system." ; sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:name ], + sh:order 0 ; + sh:path ttm:test_case_id ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 2 ; sh:path schema1:identifier ], [ sh: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 5 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ], + sh:order 3 ; + sh:path schema1:name ], [ sh:class ttm:TestResultPKSet ; sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:pks ], [ sh:datatype xsd:string ; - sh:description "CURIE id of a TestCase registered in the system." ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_case_id ] ; + sh:order 4 ; + sh:path schema1:description ] ; sh:targetClass ttm:TestOutput . ttm:TestRunSession a sh:NodeShape ; sh:closed true ; sh:description "A single invocation of a TestRunner." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:TestCaseResult ; - sh:description "One or more instances of TestCaseResult." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_case_results ], - [ sh:datatype xsd:dateTime ; + sh:property [ sh:datatype xsd:dateTime ; sh:description "Date time when a given entity was created." ; sh:maxCount 1 ; sh:order 3 ; sh:path ttm:timestamp ], + [ sh:datatype xsd:string ; + sh:description "Global system name of a TestRunner." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_runner_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: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 unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -719,75 +728,57 @@ ttm:TestRunSession a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_entities ], - [ sh:datatype xsd:string ; - sh:description "Global system name of a TestRunner." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_runner_name ], + [ sh:class ttm:TestCaseResult ; + sh:description "One or more instances of TestCaseResult." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_case_results ], [ 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: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:name ] ; sh:targetClass ttm:TestRunSession . ttm:TestRunnerConfiguration a sh:NodeShape ; sh:closed true ; sh:description "General configuration parameters and test data input for a single invocation of a TestRunner." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration." ; - sh:order 4 ; - sh:path schema1:additionalType ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 1 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration." ; + sh:order 4 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:description ], + sh:order 2 ; + sh:path schema1:name ], [ sh:class ttm:TestEntityParameter ; sh:description "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run." ; sh:nodeKind sh:BlankNode ; sh:order 0 ; sh:path ttm:test_run_parameters ], [ 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 2 ; - sh:path schema1:name ] ; + sh:order 3 ; + sh:path schema1:description ] ; sh:targetClass ttm:TestRunnerConfiguration . 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: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: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:property [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_cases ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -795,11 +786,16 @@ ttm:TestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:description "A Test persona describes the user or operational context of a given test." ; sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; sh:maxCount 1 ; @@ -811,11 +807,15 @@ ttm:TestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], - [ sh:description "A unique identifier for a Test Entity" ; + [ 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:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ] ; + sh:order 5 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestSuite . ttm:AcceptanceTestAsset a sh:NodeShape ; @@ -823,31 +823,31 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:description "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_id ], + sh:order 15 ; + sh:path ttm:output_id ], [ sh:datatype xsd:string ; - sh:description "The notes of the query" ; + sh:description "Settings for the test harness, e.g. \"inferred\"" ; + sh:minCount 1 ; + sh:order 26 ; + sh:path ttm:runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:notes ], - [ sh:datatype xsd:integer ; - sh:description "The answer must return in these many results" ; + sh:order 30 ; + sh:path schema1:description ], + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:top_level ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_id ], - [ sh:datatype xsd:date ; - sh:description "The date by which this test must pass" ; + sh:order 23 ; + sh:path ttm:in_v1 ], + [ sh:description "The direction of the expected query result triple" ; + sh:in ( "increased" "decreased" ) ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:must_pass_date ], - [ 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:BlankNode ; - sh:order 19 ; - sh:path ttm:qualifiers ], + sh:order 4 ; + sh:path ttm:direction ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 20 ; + sh:path ttm:expected_output ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -855,139 +855,139 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 27 ; sh:path ttm:test_metadata ], - [ sh:maxCount 1 ; - sh:order 17 ; - sh:path ttm:output_category ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 20 ; - sh:path ttm:expected_output ], - [ sh:description "The node of the (templated) TRAPI query to replace" ; - sh:in ( "subject" "object" ) ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:query_node ], - [ sh:description "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:boolean ; - sh:maxCount 1 ; - sh:order 23 ; - sh:path ttm:in_v1 ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 22 ; - sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 11 ; sh:path ttm:input_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:BlankNode ; + sh:order 19 ; + sh:path ttm:qualifiers ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 28 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "The notes of the query" ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path ttm:notes ], [ 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 31 ; sh:path schema1:additionalType ], + [ 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:description "The node of the (templated) TRAPI query to replace" ; + sh:in ( "subject" "object" ) ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:query_node ], [ sh:datatype xsd:string ; sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:scientific_question ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], - [ sh:description "The direction of the expected query result triple" ; - sh:in ( "increased" "decreased" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:direction ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 29 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 26 ; - sh:path ttm:runner_settings ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:predicate_id ], [ sh:description "The deployment environment within which this test must pass." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:must_pass_environment ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], + sh:order 29 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; + sh:description "The object of the core triple to be tested" ; 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:order 3 ; + sh:path ttm:string_entry ], + [ sh:datatype xsd:integer ; + sh:description "The answer must return in these many results" ; sh:maxCount 1 ; - sh:order 25 ; - sh:path ttm:test_reference ], + sh:order 7 ; + sh:path ttm:top_level ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:maxCount 1 ; + sh:order 18 ; + sh:path ttm:association ], + [ sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:input_category ], [ sh:datatype xsd:string ; sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; sh:maxCount 1 ; sh:order 5 ; sh:path ttm:answer_informal_concept ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path ttm:output_name ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 24 ; + sh:path ttm:well_known ], [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:input_category ], + sh:order 17 ; + sh:path ttm:output_category ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_id ], [ 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:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 22 ; + sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 30 ; - sh:path schema1:description ], - [ sh:datatype xsd:boolean ; + sh:order 14 ; + sh:path ttm:predicate_name ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 24 ; - sh:path ttm:well_known ], - [ sh:datatype xsd:string ; - sh:description "The object of the core triple to be tested" ; + sh:order 21 ; + sh:path ttm:test_issue ], + [ sh:datatype xsd:date ; + sh:description "The date by which this test must pass" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:string_entry ], - [ sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:output_id ] ; + sh:order 0 ; + sh:path ttm:must_pass_date ] ; sh:targetClass ttm:AcceptanceTestAsset . 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 "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:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], - [ sh:description "Encoded result of a single test run of a given test case" ; - sh:in ( "test_passed" "test_failed" "test_skipped" ) ; + sh:order 5 ; + sh:path schema1:description ], + [ sh:description "CURIE id of a TestSuite registered in the system." ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_case_result ], + sh:order 0 ; + sh:path ttm:test_suite_id ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 4 ; sh:path schema1:name ], - [ sh:description "CURIE id of a TestSuite registered in the system." ; + [ sh:description "Encoded result of a single test run of a given test case" ; + sh:in ( "test_passed" "test_failed" "test_skipped" ) ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_suite_id ], + sh:order 2 ; + sh:path ttm:test_case_result ], [ sh:class ttm:TestCase ; sh:description "Slot referencing a single TestCase." ; sh:maxCount 1 ; @@ -998,35 +998,35 @@ ttm:TestCaseResult a sh:NodeShape ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 6 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ] ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ] ; 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 "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:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:order 0 ; sh:path schema1:identifier ], + [ 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: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 2 ; - sh:path schema1:description ] ; + sh:order 1 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestEntity . ttm:TestResultPKSet a sh:NodeShape ; @@ -1035,51 +1035,51 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:arax ], + sh:order 0 ; + sh:path ttm:parent_pk ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:bte ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 10 ; - sh:path schema1:additionalType ], + sh:order 6 ; + sh:path ttm:improving ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:unsecret ], + sh:order 2 ; + sh:path ttm:aragorn ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 7 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:parent_pk ], + sh:order 8 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:aragorn ], + sh:order 4 ; + sh:path ttm:unsecret ], [ 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:order 5 ; + sh:path ttm:bte ], [ 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:path schema1:description ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:arax ], + [ 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:targetClass ttm:TestResultPKSet . ttm:TestEntityParameter a sh:NodeShape ; @@ -1087,15 +1087,15 @@ ttm:TestEntityParameter a sh:NodeShape ; sh:description "A single 'tag = value' pair (where 'value' is a simple string)." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "(String) value of a TestParameter." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:value ], - [ sh:datatype xsd:string ; sh:description "Name of a TestParameter." ; sh:maxCount 1 ; sh:order 0 ; - sh:path ttm:parameter ] ; + sh:path ttm:parameter ], + [ sh:datatype xsd:string ; + sh:description "(String) value of a TestParameter." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:value ] ; sh:targetClass ttm:TestEntityParameter . ttm:Qualifier a sh:NodeShape ; @@ -1117,16 +1117,7 @@ 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 "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 "A unique identifier for a Test Entity" ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 2 ; @@ -1136,260 +1127,269 @@ ttm:TestSuiteSpecification a sh:NodeShape ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:name ], - [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; - sh:in ( "TSV" "YAML" "JSON" ) ; + [ 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 1 ; - sh:path ttm:test_data_file_format ], + sh:order 0 ; + sh:path ttm:test_data_file_locator ], [ 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:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:description ], + [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; + sh:in ( "TSV" "YAML" "JSON" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_data_file_format ] ; sh:targetClass ttm:TestSuiteSpecification . ttm:TestAsset a sh:NodeShape ; sh:closed true ; sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path ttm:test_metadata ], + [ 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:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:output_id ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:output_name ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_issue ], + [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 20 ; sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 21 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "Settings for the test harness, e.g. \"inferred\"" ; + sh:minCount 1 ; + sh:order 16 ; + sh:path ttm:runner_settings ], [ sh:maxCount 1 ; sh:order 7 ; sh:path ttm:output_category ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:predicate_name ], + [ 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:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], - [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], + sh:order 13 ; + sh:path ttm:in_v1 ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 18 ; sh:path schema1:identifier ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 16 ; - sh:path ttm:runner_settings ], + sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:expected_output ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 19 ; sh:path schema1:name ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:expected_output ], - [ 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 15 ; sh:path ttm:test_reference ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 21 ; - sh:path schema1:additionalType ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], + sh:order 1 ; + sh:path ttm:input_name ], [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; sh:order 8 ; - sh:path ttm:association ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path ttm:test_metadata ], - [ 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:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ] ; + sh:path ttm:association ] ; sh:targetClass ttm:TestAsset . ttm:TestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" ) ; + sh:property [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:preconditions ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_objective ], + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], + [ 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:maxCount 1 ; sh:order 9 ; sh:path ttm:test_case_predicate_id ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_predicate_name ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:query_type ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 14 ; sh:path schema1:description ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_assets ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( "arax" "aragorn" "ars" "bte" "improving" ) ; - sh:order 5 ; - sh:path ttm:components ], [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_name ], + sh:description "Settings for the test harness for TestCase" ; + sh:minCount 1 ; + sh:order 11 ; + sh:path ttm:test_case_runner_settings ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_input_id ], [ sh:description "Deployment environment within which the associated TestSuite is run." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_env ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:trapi_template ], [ 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:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:query_type ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ], + [ 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:order 11 ; - sh:path ttm:test_case_runner_settings ], - [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], + sh:order 2 ; + sh:path ttm:test_assets ], [ 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 15 ; sh:path schema1:additionalType ], - [ 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 4 ; - sh:path ttm:trapi_template ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ] ; + sh:order 6 ; + sh:path ttm:test_case_objective ] ; sh:targetClass ttm:TestCase . ttm:Precondition a sh:NodeShape ; sh:closed true ; sh:description "Represents a precondition for a TestCase" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 3 ; - sh:path schema1:additionalType ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ 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 name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ], + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 3 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 2 ; - sh:path schema1:description ] ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ] ; sh:targetClass ttm:Precondition . 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 "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" ) ; + sh:property [ sh:class ttm:TestEntityParameter ; + sh:description "Metadata annotation." ; + sh:nodeKind sh:BlankNode ; + sh:order 3 ; + sh:path ttm:test_annotations ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_objective ], + sh:order 6 ; + sh:path schema1:description ], [ 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 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: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:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], + sh:order 2 ; + sh:path ttm:test_objective ], [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; sh:order 1 ; - sh:path ttm:test_reference ], - [ sh:class ttm:TestEntityParameter ; - sh:description "Metadata annotation." ; - sh:nodeKind sh:BlankNode ; - sh:order 3 ; - sh:path ttm:test_annotations ], - [ 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 ttm:test_reference ] ; sh:targetClass ttm:TestMetadata . diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index 19c20b3..f00d30d 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -8,7 +8,7 @@ CREATE TABLE "AcceptanceTestCase" ( query_type VARCHAR(6), preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(16), + test_case_objective VARCHAR(19), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -25,7 +25,7 @@ CREATE TABLE "ComplianceTestCase" ( test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(16), + test_case_objective VARCHAR(19), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -44,7 +44,7 @@ CREATE TABLE "KnowledgeGraphNavigationTestCase" ( test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(16), + test_case_objective VARCHAR(19), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -61,7 +61,7 @@ CREATE TABLE "OneHopTestCase" ( test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(16), + test_case_objective VARCHAR(19), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -91,7 +91,7 @@ CREATE TABLE "QuantitativeTestCase" ( test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(16), + test_case_objective VARCHAR(19), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -108,7 +108,7 @@ CREATE TABLE "TestCase" ( test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(16), + test_case_objective VARCHAR(19), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -128,7 +128,7 @@ CREATE TABLE "TestMetadata" ( description TEXT, test_source VARCHAR(18), test_reference TEXT, - test_objective VARCHAR(16), + test_objective VARCHAR(19), test_annotations TEXT, PRIMARY KEY (id) ); @@ -337,7 +337,7 @@ CREATE TABLE "TestSuite" ( CREATE TABLE "AcceptanceTestCase_components" ( backref_id TEXT, - components VARCHAR(9), + components VARCHAR, PRIMARY KEY (backref_id, components), FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestCase" (id) ); @@ -358,7 +358,7 @@ CREATE TABLE "AcceptanceTestCase_tags" ( CREATE TABLE "ComplianceTestCase_components" ( backref_id TEXT, - components VARCHAR(9), + components VARCHAR, PRIMARY KEY (backref_id, components), FOREIGN KEY(backref_id) REFERENCES "ComplianceTestCase" (id) ); @@ -379,7 +379,7 @@ CREATE TABLE "ComplianceTestCase_tags" ( CREATE TABLE "KnowledgeGraphNavigationTestCase_components" ( backref_id TEXT, - components VARCHAR(9), + components VARCHAR, PRIMARY KEY (backref_id, components), FOREIGN KEY(backref_id) REFERENCES "KnowledgeGraphNavigationTestCase" (id) ); @@ -400,7 +400,7 @@ CREATE TABLE "KnowledgeGraphNavigationTestCase_tags" ( CREATE TABLE "OneHopTestCase_components" ( backref_id TEXT, - components VARCHAR(9), + components VARCHAR, PRIMARY KEY (backref_id, components), FOREIGN KEY(backref_id) REFERENCES "OneHopTestCase" (id) ); @@ -428,7 +428,7 @@ CREATE TABLE "Precondition_tags" ( CREATE TABLE "QuantitativeTestCase_components" ( backref_id TEXT, - components VARCHAR(9), + components VARCHAR, PRIMARY KEY (backref_id, components), FOREIGN KEY(backref_id) REFERENCES "QuantitativeTestCase" (id) ); @@ -449,7 +449,7 @@ CREATE TABLE "QuantitativeTestCase_tags" ( CREATE TABLE "TestCase_components" ( backref_id TEXT, - components VARCHAR(9), + components VARCHAR, PRIMARY KEY (backref_id, components), FOREIGN KEY(backref_id) REFERENCES "TestCase" (id) ); diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index 9f24818..77ce4de 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -2,7 +2,7 @@ from datetime import datetime, date from enum import Enum from typing import List, Dict, Optional, Any, Union -from pydantic import BaseModel as BaseModel, Field +from pydantic import BaseModel as BaseModel, ConfigDict, Field import sys if sys.version_info >= (3, 8): from typing import Literal @@ -53,6 +53,10 @@ class TestObjectiveEnum(str, Enum): BenchmarkTest = "BenchmarkTest" # Quantitative test QuantitativeTest = "QuantitativeTest" + # One Hop Tests of knowledge graph navigation + OneHopTests = "OneHopTests" + # TRAPI and Biolink Model ("reasoner-validator") validation + StandardsValidation = "StandardsValidation" @@ -184,19 +188,12 @@ class TrapiTemplateEnum(str, Enum): -class ComponentEnum(str, Enum): - - - arax = "arax" - - aragorn = "aragorn" - - ars = "ars" - - bte = "bte" - - improving = "improving" +class ComponentEnum(str): + """ + Translator components are identified by their InfoRes identifiers. + """ + dummy = "dummy" class TestPersonaEnum(str, Enum): diff --git a/src/translator_testing_model/datamodel/pydanticmodel_v2.py b/src/translator_testing_model/datamodel/pydanticmodel_v2.py index 27c58b2..21f650b 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel_v2.py +++ b/src/translator_testing_model/datamodel/pydanticmodel_v2.py @@ -2,7 +2,7 @@ from datetime import datetime, date from enum import Enum from typing import List, Dict, Optional, Any, Union -from pydantic import BaseModel as BaseModel, Field +from pydantic import BaseModel as BaseModel, ConfigDict, Field import sys if sys.version_info >= (3, 8): from typing import Literal @@ -13,13 +13,13 @@ metamodel_version = "None" version = "0.0.0" -class ConfiguredBaseModel(BaseModel, - validate_assignment = True, - validate_default = True, - extra = 'forbid', - arbitrary_types_allowed = True, - use_enum_values = True): - pass +class ConfiguredBaseModel(BaseModel): + model_config = ConfigDict( + validate_assignment=True, + validate_default=True, + extra='forbid', + arbitrary_types_allowed=True, + use_enum_values = True) class TestSourceEnum(str, Enum): @@ -49,6 +49,10 @@ class TestObjectiveEnum(str, Enum): BenchmarkTest = "BenchmarkTest" # Quantitative test QuantitativeTest = "QuantitativeTest" + # One Hop Tests of knowledge graph navigation + OneHopTests = "OneHopTests" + # TRAPI and Biolink Model ("reasoner-validator") validation + StandardsValidation = "StandardsValidation" @@ -180,19 +184,12 @@ class TrapiTemplateEnum(str, Enum): -class ComponentEnum(str, Enum): - - - arax = "arax" - - aragorn = "aragorn" - - ars = "ars" - - bte = "bte" - - improving = "improving" +class ComponentEnum(str): + """ + Translator components are identified by their InfoRes identifiers. + """ + dummy = "dummy" class TestPersonaEnum(str, Enum): @@ -665,4 +662,4 @@ class TestResultPKSet(TestEntity): TestRunSession.model_rebuild() TestOutput.model_rebuild() TestResultPKSet.model_rebuild() - + diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index a6192f1..94d5473 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: 2023-12-07T10:24:11 +# Generation date: 2024-03-04T12:12:57 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -44,7 +44,7 @@ # Types class CategoryType(Uriorcurie): """ A primitive type in which the value denotes a class within the biolink model. The value must be a URI or a CURIE within the 'biolink' namespace. """ - type_class_uri = XSD.anyURI + type_class_uri = XSD["anyURI"] type_class_curie = "xsd:anyURI" type_name = "category_type" type_model_uri = TTM.CategoryType @@ -52,7 +52,7 @@ class CategoryType(Uriorcurie): class PredicateType(Uriorcurie): """ A CURIE from the Biolink Model ('biolink' namespace) 'biolink:related_to' hierarchy. For example, biolink:related_to, biolink:causes, biolink:treats. """ - type_class_uri = XSD.anyURI + type_class_uri = XSD["anyURI"] type_class_curie = "xsd:anyURI" type_name = "predicate_type" type_model_uri = TTM.PredicateType @@ -60,7 +60,7 @@ class PredicateType(Uriorcurie): class ConceptCategory(CategoryType): """ A category type within the Biolink Model ('biolink' namespace) 'biolink:NamedThing' hierarchy. """ - type_class_uri = XSD.anyURI + type_class_uri = XSD["anyURI"] type_class_curie = "xsd:anyURI" type_name = "concept_category" type_model_uri = TTM.ConceptCategory @@ -68,7 +68,7 @@ class ConceptCategory(CategoryType): class AssociationCategory(CategoryType): """ A category type within the Biolink Model ('biolink' namespace) 'biolink:Association' hierarchy. """ - type_class_uri = XSD.anyURI + type_class_uri = XSD["anyURI"] type_class_curie = "xsd:anyURI" type_name = "association_category" type_model_uri = TTM.AssociationCategory @@ -170,7 +170,7 @@ class TestEntityParameter(YAMLRoot): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestEntityParameter + class_class_uri: ClassVar[URIRef] = TTM["TestEntityParameter"] class_class_curie: ClassVar[str] = "ttm:TestEntityParameter" class_name: ClassVar[str] = "TestEntityParameter" class_model_uri: ClassVar[URIRef] = TTM.TestEntityParameter @@ -192,7 +192,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): class Qualifier(TestEntityParameter): _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.Qualifier + class_class_uri: ClassVar[URIRef] = TTM["Qualifier"] class_class_curie: ClassVar[str] = "ttm:Qualifier" class_name: ClassVar[str] = "Qualifier" class_model_uri: ClassVar[URIRef] = TTM.Qualifier @@ -218,7 +218,7 @@ class TestEntity(YAMLRoot): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestEntity + class_class_uri: ClassVar[URIRef] = TTM["TestEntity"] class_class_curie: ClassVar[str] = "ttm:TestEntity" class_name: ClassVar[str] = "TestEntity" class_model_uri: ClassVar[URIRef] = TTM.TestEntity @@ -255,7 +255,7 @@ class TestMetadata(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestMetadata + class_class_uri: ClassVar[URIRef] = TTM["TestMetadata"] class_class_curie: ClassVar[str] = "ttm:TestMetadata" class_name: ClassVar[str] = "TestMetadata" class_model_uri: ClassVar[URIRef] = TTM.TestMetadata @@ -296,7 +296,7 @@ class TestAsset(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestAsset + class_class_uri: ClassVar[URIRef] = TTM["TestAsset"] class_class_curie: ClassVar[str] = "ttm:TestAsset" class_name: ClassVar[str] = "TestAsset" class_model_uri: ClassVar[URIRef] = TTM.TestAsset @@ -402,7 +402,7 @@ class AcceptanceTestAsset(TestAsset): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.AcceptanceTestAsset + class_class_uri: ClassVar[URIRef] = TTM["AcceptanceTestAsset"] class_class_curie: ClassVar[str] = "ttm:AcceptanceTestAsset" class_name: ClassVar[str] = "AcceptanceTestAsset" class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestAsset @@ -468,7 +468,7 @@ class TestEdgeData(TestAsset): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestEdgeData + class_class_uri: ClassVar[URIRef] = TTM["TestEdgeData"] class_class_curie: ClassVar[str] = "ttm:TestEdgeData" class_name: ClassVar[str] = "TestEdgeData" class_model_uri: ClassVar[URIRef] = TTM.TestEdgeData @@ -493,7 +493,7 @@ class Precondition(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.Precondition + class_class_uri: ClassVar[URIRef] = TTM["Precondition"] class_class_curie: ClassVar[str] = "ttm:Precondition" class_name: ClassVar[str] = "Precondition" class_model_uri: ClassVar[URIRef] = TTM.Precondition @@ -518,7 +518,7 @@ class TestCase(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestCase + class_class_uri: ClassVar[URIRef] = TTM["TestCase"] class_class_curie: ClassVar[str] = "ttm:TestCase" class_name: ClassVar[str] = "TestCase" class_model_uri: ClassVar[URIRef] = TTM.TestCase @@ -600,7 +600,7 @@ class AcceptanceTestCase(TestCase): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.AcceptanceTestCase + class_class_uri: ClassVar[URIRef] = TTM["AcceptanceTestCase"] class_class_curie: ClassVar[str] = "ttm:AcceptanceTestCase" class_name: ClassVar[str] = "AcceptanceTestCase" class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestCase @@ -629,7 +629,7 @@ class QuantitativeTestCase(TestCase): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.QuantitativeTestCase + class_class_uri: ClassVar[URIRef] = TTM["QuantitativeTestCase"] class_class_curie: ClassVar[str] = "ttm:QuantitativeTestCase" class_name: ClassVar[str] = "QuantitativeTestCase" class_model_uri: ClassVar[URIRef] = TTM.QuantitativeTestCase @@ -654,7 +654,7 @@ class ComplianceTestCase(TestCase): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.ComplianceTestCase + class_class_uri: ClassVar[URIRef] = TTM["ComplianceTestCase"] class_class_curie: ClassVar[str] = "ttm:ComplianceTestCase" class_name: ClassVar[str] = "ComplianceTestCase" class_model_uri: ClassVar[URIRef] = TTM.ComplianceTestCase @@ -687,7 +687,7 @@ class KnowledgeGraphNavigationTestCase(TestCase): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.KnowledgeGraphNavigationTestCase + class_class_uri: ClassVar[URIRef] = TTM["KnowledgeGraphNavigationTestCase"] class_class_curie: ClassVar[str] = "ttm:KnowledgeGraphNavigationTestCase" class_name: ClassVar[str] = "KnowledgeGraphNavigationTestCase" class_model_uri: ClassVar[URIRef] = TTM.KnowledgeGraphNavigationTestCase @@ -712,7 +712,7 @@ class OneHopTestCase(KnowledgeGraphNavigationTestCase): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.OneHopTestCase + class_class_uri: ClassVar[URIRef] = TTM["OneHopTestCase"] class_class_curie: ClassVar[str] = "ttm:OneHopTestCase" class_name: ClassVar[str] = "OneHopTestCase" class_model_uri: ClassVar[URIRef] = TTM.OneHopTestCase @@ -737,7 +737,7 @@ class TestSuiteSpecification(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestSuiteSpecification + class_class_uri: ClassVar[URIRef] = TTM["TestSuiteSpecification"] class_class_curie: ClassVar[str] = "ttm:TestSuiteSpecification" class_name: ClassVar[str] = "TestSuiteSpecification" class_model_uri: ClassVar[URIRef] = TTM.TestSuiteSpecification @@ -770,7 +770,7 @@ class TestSuite(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestSuite + class_class_uri: ClassVar[URIRef] = TTM["TestSuite"] class_class_curie: ClassVar[str] = "ttm:TestSuite" class_name: ClassVar[str] = "TestSuite" class_model_uri: ClassVar[URIRef] = TTM.TestSuite @@ -807,7 +807,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): class AcceptanceTestSuite(TestSuite): _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.AcceptanceTestSuite + class_class_uri: ClassVar[URIRef] = TTM["AcceptanceTestSuite"] class_class_curie: ClassVar[str] = "ttm:AcceptanceTestSuite" class_name: ClassVar[str] = "AcceptanceTestSuite" class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestSuite @@ -830,7 +830,7 @@ class BenchmarkTestSuite(YAMLRoot): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.BenchmarkTestSuite + class_class_uri: ClassVar[URIRef] = TTM["BenchmarkTestSuite"] class_class_curie: ClassVar[str] = "ttm:BenchmarkTestSuite" class_name: ClassVar[str] = "BenchmarkTestSuite" class_model_uri: ClassVar[URIRef] = TTM.BenchmarkTestSuite @@ -843,7 +843,7 @@ class StandardsComplianceTestSuite(TestSuite): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.StandardsComplianceTestSuite + class_class_uri: ClassVar[URIRef] = TTM["StandardsComplianceTestSuite"] class_class_curie: ClassVar[str] = "ttm:StandardsComplianceTestSuite" class_name: ClassVar[str] = "StandardsComplianceTestSuite" class_model_uri: ClassVar[URIRef] = TTM.StandardsComplianceTestSuite @@ -867,7 +867,7 @@ class OneHopTestSuite(TestSuite): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.OneHopTestSuite + class_class_uri: ClassVar[URIRef] = TTM["OneHopTestSuite"] class_class_curie: ClassVar[str] = "ttm:OneHopTestSuite" class_name: ClassVar[str] = "OneHopTestSuite" class_model_uri: ClassVar[URIRef] = TTM.OneHopTestSuite @@ -891,7 +891,7 @@ class TestRunnerConfiguration(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestRunnerConfiguration + class_class_uri: ClassVar[URIRef] = TTM["TestRunnerConfiguration"] class_class_curie: ClassVar[str] = "ttm:TestRunnerConfiguration" class_name: ClassVar[str] = "TestRunnerConfiguration" class_model_uri: ClassVar[URIRef] = TTM.TestRunnerConfiguration @@ -924,7 +924,7 @@ class TestCaseResult(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestCaseResult + class_class_uri: ClassVar[URIRef] = TTM["TestCaseResult"] class_class_curie: ClassVar[str] = "ttm:TestCaseResult" class_name: ClassVar[str] = "TestCaseResult" class_model_uri: ClassVar[URIRef] = TTM.TestCaseResult @@ -959,7 +959,7 @@ class TestRunSession(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestRunSession + class_class_uri: ClassVar[URIRef] = TTM["TestRunSession"] class_class_curie: ClassVar[str] = "ttm:TestRunSession" class_name: ClassVar[str] = "TestRunSession" class_model_uri: ClassVar[URIRef] = TTM.TestRunSession @@ -996,7 +996,7 @@ class TestOutput(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestOutput + class_class_uri: ClassVar[URIRef] = TTM["TestOutput"] class_class_curie: ClassVar[str] = "ttm:TestOutput" class_name: ClassVar[str] = "TestOutput" class_model_uri: ClassVar[URIRef] = TTM.TestOutput @@ -1028,7 +1028,7 @@ class TestResultPKSet(TestEntity): """ _inherited_slots: ClassVar[List[str]] = [] - class_class_uri: ClassVar[URIRef] = TTM.TestResultPKSet + class_class_uri: ClassVar[URIRef] = TTM["TestResultPKSet"] class_class_curie: ClassVar[str] = "ttm:TestResultPKSet" class_name: ClassVar[str] = "TestResultPKSet" class_model_uri: ClassVar[URIRef] = TTM.TestResultPKSet @@ -1112,6 +1112,12 @@ class TestObjectiveEnum(EnumDefinitionImpl): QuantitativeTest = PermissibleValue( text="QuantitativeTest", description="Quantitative test") + OneHopTests = PermissibleValue( + text="OneHopTests", + description="One Hop Tests of knowledge graph navigation") + StandardsValidation = PermissibleValue( + text="StandardsValidation", + description="TRAPI and Biolink Model (\"reasoner-validator\") validation") _defn = EnumDefinition( name="TestObjectiveEnum", @@ -1266,15 +1272,12 @@ def _addvals(cls): PermissibleValue(text="drug-to-gene")) class ComponentEnum(EnumDefinitionImpl): - - arax = PermissibleValue(text="arax") - aragorn = PermissibleValue(text="aragorn") - ars = PermissibleValue(text="ars") - bte = PermissibleValue(text="bte") - improving = PermissibleValue(text="improving") - + """ + Translator components are identified by their InfoRes identifiers. + """ _defn = EnumDefinition( name="ComponentEnum", + description="Translator components are identified by their InfoRes identifiers.", ) class TestPersonaEnum(EnumDefinitionImpl): diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index 2cd49c7..8c0f690 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -840,6 +840,10 @@ enums: description: Semantic benchmarking QuantitativeTest: description: Quantitative test + OneHopTests: + description: One Hop Tests of knowledge graph navigation + StandardsValidation: + description: TRAPI and Biolink Model ("reasoner-validator") validation TestEnvEnum: description: >- From d469c1a89aede64612f4f5bf12740257b82fe028 Mon Sep 17 00:00:00 2001 From: Richard Bruskiewich Date: Mon, 4 Mar 2024 17:23:00 -0800 Subject: [PATCH 2/6] Subclass KnowledgeGraphNavigationTestCase from ComplianceTestCase --- project/excel/translator_testing_model.xlsx | Bin 21329 -> 21376 bytes .../graphql/translator_testing_model.graphql | 4 + .../translator_testing_model.context.jsonld | 2 +- .../jsonld/translator_testing_model.jsonld | 16 +- .../translator_testing_model.schema.json | 16 + project/owl/translator_testing_model.owl.ttl | 674 ++++---- .../protobuf/translator_testing_model.proto | 4 + .../shacl/translator_testing_model.shacl.ttl | 1466 +++++++++-------- project/shex/translator_testing_model.shex | 26 +- .../sqlschema/translator_testing_model.sql | 4 + .../datamodel/pydanticmodel.py | 6 +- .../datamodel/pydanticmodel_v2.py | 6 +- .../datamodel/translator_testing_model.py | 6 +- .../schema/translator_testing_model.yaml | 2 +- 14 files changed, 1147 insertions(+), 1085 deletions(-) diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index b61d5fe0a23dde6db9beef5c1cf570873a3d6e22..2002163f2fde43404df398426f4ea3216a48671e 100644 GIT binary patch delta 1327 zcmcb(jIm)kBTs-gGm8iV0|N)c!LErs>o^Z~r9?3B?S1%R;$gM=Q+rEq@l9B?MqEIB z!h{(tkHl2(g{{q8bY#Wd+molQy=|f=^Z5Vg^yrDVxZg7EV|{KI&|GMEV_Ub=Z_(R= zm5c&k`POz-D(w=!!_=}OjRDUe>V+OjV z_^Xdf^%7B>;;xl*{zf}&_7G-~wOMyV^XCe=`Pa^`(W~5fref;H-KP33ksVJDUw^Ud zl|A=b}4` ztE3K*QjQG$^O%u=fqinJne^rkoljtQ8kK zh}h&;-U1+zKR`7+++a2OK43NHd}Np=@`6S7^RiB^^5Frg>i~+j34ld+Bh>kcfJ6+; z^eS?50=yZSM3`YIKP4hXKOsH>7;r0?7#Jjg`2hwR8l5K_`l^ErUEnLjbWs9q=zj@T zK2#IHvV1aN*~`9Qr|tHWVe*y-i%9wjflSZ^igYT0MH1j5jCUtb^wWSz8)|~3-}wnC zfD#5gK3NzTBw=m>(hZHRI$(vS{$P_Q_{%WO*8_{xAVjVjfJF}bLkyd0y+mIS=*JU4 zjA|ISF<2p2fDkAdfD8*Z0f~qhTA&9ORKC*;tYZd5$C>~cru`N`5wXb+0tDp`0bO1j zsD9=Z&>~k1m&Z>Q2-E=CV-+aF)L;YFl@}-o5@`gA*x7+awn9Ws07V|!gGK&8MEHYb z7`IH;36cS6@CuT#HgsWNh%ZXbDc08mk;w4^a)=`TO`mFDtUl#nVBkj%LPjaq$qR#I jLB<>andUxuy}QihUqL(|5sqLPM#IUf!D?)my+E1(N(jk~ delta 1418 zcmZoz&UkSdBTs-gGm8iV0|N)chQx_H>o_+grbH;SXuNnk@vvI`tG%VSd=y+G^%VRR z6b(6#=z8tZU6i@_$cnqSCr?`|-Nb$T$NxV!!9mM;Vn|Nw^b7lEwd0{ zWt?z^aj##f+Af)Qzh0O=O~2!O;hFP$L8)VT2b42cdmdKNIh>^9=ans%`lIKq&IYy( zuKlvAD^^SC=_G!6dA`ju@+=aQ^G8=%z0hKpH97hx1GN=D`K;rr2fsS+XjKff%o_Muao~P zzVQ9p+dKbDTJATR$Le)xeSL5|asZ@6%#4|%EWpOVFh`w%L3r~kMgumc4T+m&IBFPy z^kf+h)y?}k!$IuL65P#9AbKwEXD~fU;21MV&0Jp9$p*fxn_EOqg2nyCd%)`NN?3#C z?@Fj{wwDnDu{Vdy+knMvHPt3h@MGP4KuI0U50_V)%&*3=*>wiw)-_Q_ z0%Y>!hX!h!FY57uZFy*50;a`{-M}sd$+en*<-qE8n?cl_wwMQYO}3RhSbdMp9x&g_ zZXuX{Ykv_;A8@P&+hObS9OO_n*JWVk=iGC_(zc$9K=kB?UN(pnGg-~s3?vxmEyH+b za<#V-h%?_?hKZMB@f&q*QE3_ZLI3=+Tu3rPBuMk?jMZh8k zzJl@~ttt8m@ezy+3@ez>wK_~r@Kpy{c-~ir>6`>u*B)Q66F?%|GGGyV8CD%skEBGD z{rRoP4s=dD7XyPN%q>8=q0vJgs7Y+Hrytmu7(W@NHYKpg1V4y#aBICa`GB7W*tfXV zNN9o$lk*1~Z|E<>6s7|dk)E984-U-zK#>AHu$naxH6W2?29rM;NKgLZ&jU7os`V0m zL12iS0Af_v-!TGfwF&?m57Me)0um9nz!IH6X~w9@8v`^zL3lerhG~KYP_5|X4;E|~ z0ahERe&!X>I#(8SD-Eo`nkHDWO^yx(`yn$>hAGenEIKDp2xRyMpa{PmSR~($ZSu=N zh(Dym>h{b58p?}d=q7uxVyz&scDo=M#@5NvK{6n-DuZOKnOuNTSCpDltgiWDE`{aA>GLtofdB6#+Tk6S@LZEX@1%Raq QiZ-UnA;D^FOT0jW04X`Zy8r+H diff --git a/project/graphql/translator_testing_model.graphql b/project/graphql/translator_testing_model.graphql index 953a3b7..522e6ae 100644 --- a/project/graphql/translator_testing_model.graphql +++ b/project/graphql/translator_testing_model.graphql @@ -110,6 +110,8 @@ type KnowledgeGraphNavigationTestCase testCaseInputId: Uriorcurie testCaseRunnerSettings: [String]! tags: [String] + trapiVersion: String + biolinkVersion: String } type OneHopTestCase @@ -130,6 +132,8 @@ type OneHopTestCase testCaseInputId: Uriorcurie testCaseRunnerSettings: [String]! tags: [String] + trapiVersion: String + biolinkVersion: String } type OneHopTestSuite diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index 3b595f2..3409eca 100644 --- a/project/jsonld/translator_testing_model.context.jsonld +++ b/project/jsonld/translator_testing_model.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-03-04T12:12:52", + "generation_date": "2024-03-04T17:21:21", "source": "translator_testing_model.yaml" }, "@context": { diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index 3802833..d3701ac 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -2340,7 +2340,7 @@ "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/KnowledgeGraphNavigationTestCase", "description": "Knowledge Graph navigation integration test", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "is_a": "TestCase", + "is_a": "ComplianceTestCase", "slots": [ "id", "name", @@ -2357,7 +2357,9 @@ "test_case_predicate_id", "test_case_input_id", "test_case_runner_settings", - "TestCase_tags" + "TestCase_tags", + "trapi_version", + "biolink_version" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/KnowledgeGraphNavigationTestCase", @@ -2385,7 +2387,9 @@ "test_case_predicate_id", "test_case_input_id", "test_case_runner_settings", - "TestCase_tags" + "TestCase_tags", + "trapi_version", + "biolink_version" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/OneHopTestCase", @@ -2597,9 +2601,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2024-03-04T11:51:57", - "source_file_size": 27771, - "generation_date": "2024-03-04T12:12:52", + "source_file_date": "2024-03-04T17:20:51", + "source_file_size": 27781, + "generation_date": "2024-03-04T17:21:21", "@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 8dd0305..bbe0a38 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -426,6 +426,10 @@ "additionalProperties": false, "description": "Knowledge Graph navigation integration test", "properties": { + "biolink_version": { + "description": "Biolink Model release (SemVer string)", + "type": "string" + }, "components": { "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.", "items": { @@ -500,6 +504,10 @@ "trapi_template": { "$ref": "#/$defs/TrapiTemplateEnum", "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." + }, + "trapi_version": { + "description": "TRAPI version (SemVer string)", + "type": "string" } }, "required": [ @@ -523,6 +531,10 @@ "additionalProperties": false, "description": "'One Hop' Knowledge Graph navigation integration test", "properties": { + "biolink_version": { + "description": "Biolink Model release (SemVer string)", + "type": "string" + }, "components": { "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.", "items": { @@ -597,6 +609,10 @@ "trapi_template": { "$ref": "#/$defs/TrapiTemplateEnum", "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." + }, + "trapi_version": { + "description": "TRAPI version (SemVer string)", + "type": "string" } }, "required": [ diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index 2ad48b4..4ff1b21 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -33,31 +33,6 @@ ttm:BenchmarkTestSuite a owl:Class, skos:definition "JsonObj(is_a='TestSuite')" ; skos:inScheme . -ttm:ComplianceTestCase a owl:Class, - linkml:ClassDefinition ; - rdfs:label "ComplianceTestCase" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:biolink_version ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:trapi_version ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:biolink_version ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:biolink_version ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_version ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:trapi_version ], - ttm:TestCase ; - skos:definition "TRAPI and Biolink Model standards compliance test" ; - skos:inScheme . - ttm:OneHopTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "OneHopTestCase" ; @@ -97,35 +72,35 @@ ttm:TestRunSession a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunSession" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_name ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResult ; - owl:onProperty ttm:test_case_results ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_entities ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty ttm:timestamp ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; + owl:allValuesFrom ttm:TestCaseResult ; + owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:test_entities ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; + owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:timestamp ], ttm:TestEntity ; skos:definition "A single invocation of a TestRunner." ; skos:inScheme . @@ -134,11 +109,11 @@ ttm:TestRunnerConfiguration a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunnerConfiguration" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_run_parameters ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_run_parameters ], @@ -146,8 +121,8 @@ ttm:TestRunnerConfiguration a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_run_parameters ], ttm:TestEntity ; skos:definition "General configuration parameters and test data input for a single invocation of a TestRunner." ; skos:inScheme . @@ -163,59 +138,53 @@ ttm:AcceptanceTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:answer_informal_concept ], + owl:maxCardinality 1 ; + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:scientific_question ], + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:top_level ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:top_level ], + owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ttm:top_level ], + owl:minCardinality 0 ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:string_entry ], + owl:minCardinality 0 ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_node ], + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:direction ], + owl:maxCardinality 1 ; + owl:onProperty ttm:query_node ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; + owl:maxCardinality 1 ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:notes ], + owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:must_pass_environment ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_date ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:allValuesFrom ttm:NodeEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:query_node ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:ExpectedResultsEnum ; - owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:scientific_question ], + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:notes ], @@ -223,43 +192,74 @@ ttm:AcceptanceTestAsset a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:answer_informal_concept ], + owl:allValuesFrom ttm:NodeEnum ; + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:notes ], + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:TestEnvEnum ; owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:query_node ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:answer_informal_concept ], + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_date ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_result ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:allValuesFrom ttm:DirectionEnum ; owl:onProperty ttm:direction ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:notes ], ttm:TestAsset ; skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; skos:inScheme . +ttm:ComplianceTestCase a owl:Class, + linkml:ClassDefinition ; + rdfs:label "ComplianceTestCase" ; + rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:biolink_version ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:trapi_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:biolink_version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:trapi_version ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:trapi_version ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:biolink_version ], + ttm:TestCase ; + skos:definition "TRAPI and Biolink Model standards compliance test" ; + skos:inScheme . + ttm:KnowledgeGraphNavigationTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "KnowledgeGraphNavigationTestCase" ; - rdfs:subClassOf ttm:TestCase ; + rdfs:subClassOf ttm:ComplianceTestCase ; skos:definition "Knowledge Graph navigation integration test" ; skos:inScheme . @@ -272,20 +272,20 @@ ttm:TestOutput a owl:Class, linkml:ClassDefinition ; rdfs:label "TestOutput" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TestResultPKSet ; - owl:onProperty ttm:pks ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_id ], - [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:test_case_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestResultPKSet ; owl:onProperty ttm:pks ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:pks ], ttm:TestEntity ; skos:definition "The output of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -379,10 +379,10 @@ ttm:Qualifier a owl:Class, owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:value ], + owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:parameter ], + owl:onProperty ttm:value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:value ], @@ -408,10 +408,13 @@ ttm:TestCaseResult a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCaseResult" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:test_suite_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCase ; @@ -421,19 +424,16 @@ ttm:TestCaseResult a owl:Class, owl:onProperty ttm:test_case ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCaseResultEnum ; owl:onProperty ttm:test_case_result ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_result ], + owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_suite_id ], ttm:TestEntity ; skos:definition "The outcome of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -457,9 +457,6 @@ ttm:TestEntityParameter a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntityParameter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:parameter ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; @@ -471,6 +468,9 @@ ttm:TestEntityParameter a owl:Class, [ a owl:Restriction ; owl:maxCardinality 1 ; 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 ] ; @@ -576,68 +576,68 @@ ttm:TestResultPKSet a owl:Class, linkml:ClassDefinition ; rdfs:label "TestResultPKSet" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:arax ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:arax ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:parent_pk ], + owl:minCardinality 0 ; + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:improving ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:bte ], + owl:minCardinality 0 ; + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:merged_pk ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:merged_pk ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:aragorn ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:unsecret ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:arax ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:improving ], ttm:TestEntity ; skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . @@ -678,22 +678,22 @@ ttm:TestSuiteSpecification a owl:Class, rdfs:label "TestSuiteSpecification" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:test_data_file_locator ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_data_file_format ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_data_file_locator ], + owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; owl:allValuesFrom ttm:FileFormatEnum ; owl:onProperty ttm:test_data_file_format ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - 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 . @@ -810,173 +810,173 @@ ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:association_category ; - owl:onProperty ttm:association ], - [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:association ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestIssueEnum ; owl:onProperty ttm:test_issue ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], + owl:allValuesFrom ttm:association_category ; + owl:onProperty ttm:association ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:output_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:input_name ], + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_name ], + owl:onProperty ttm:output_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:runner_settings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:output_id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:semantic_severity ], + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:output_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_name ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:semantic_severity ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:minCardinality 1 ; + owl:onProperty ttm:runner_settings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:output_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:SemanticSeverityEnum ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:input_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:runner_settings ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestIssueEnum ; owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_issue ], + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:runner_settings ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; + owl:minCardinality 1 ; owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:input_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_id ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:output_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:input_name ], @@ -988,41 +988,41 @@ ttm:TestMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_annotations ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_source ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:TestSourceEnum ; owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_objective ], + owl:onProperty ttm:test_source ], ttm:TestEntity ; skos:definition "Represents metadata related to (external SME, SMURF, Translator feedback, large scale batch, etc.) like the provenance of test assets, cases and/or suites." ; skos:inScheme . @@ -1036,15 +1036,6 @@ ttm:TestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuite" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_cases ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_specification ], - [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; @@ -1052,19 +1043,28 @@ ttm:TestSuite a owl:Class, owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_persona ], + owl:onProperty ttm:test_suite_specification ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_cases ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; - owl:onProperty ttm:test_cases ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestPersonaEnum ; owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_cases ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_specification ], + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestSuiteSpecification ; owl:onProperty ttm:test_suite_specification ], @@ -1521,137 +1521,137 @@ ttm:value a owl:ObjectProperty, skos:definition "(String) value of a TestParameter." ; skos:inScheme . -ttm:ExpectedOutputEnum a owl:Class, - linkml:EnumDefinition ; - owl:unionOf ( ) ; - linkml:permissible_values , - , - , - . - -ttm:FileFormatEnum a owl:Class, - linkml:EnumDefinition ; - owl:unionOf ( ) ; - linkml:permissible_values , - , - . - -ttm:SemanticSeverityEnum a owl:Class, - linkml:EnumDefinition ; - owl:unionOf ( ) ; - linkml:permissible_values , - , - . - ttm:TestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TrapiTemplateEnum ; - owl:onProperty ttm:trapi_template ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_objective ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:allValuesFrom ttm:Precondition ; owl:onProperty ttm:preconditions ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom owl:Thing ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_runner_settings ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:components ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_name ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:query_type ], + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:preconditions ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_case_runner_settings ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_source ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_input_id ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:allValuesFrom ttm:QueryTypeEnum ; owl:onProperty ttm:query_type ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_name ], - [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty ttm:test_assets ], + owl:onProperty ttm:test_case_runner_settings ], [ a owl:Restriction ; owl:allValuesFrom ttm:ComponentEnum ; owl:onProperty ttm:components ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:preconditions ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_input_id ], + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_case_runner_settings ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_template ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_env ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_source ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:test_case_input_id ], ttm:TestEntity ; skos:definition "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; skos:inScheme . +ttm:ExpectedOutputEnum a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( ) ; + linkml:permissible_values , + , + , + . + +ttm:FileFormatEnum a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( ) ; + linkml:permissible_values , + , + . + +ttm:SemanticSeverityEnum a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( ) ; + linkml:permissible_values , + , + . + ttm:TestCaseResultEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -1677,14 +1677,26 @@ ttm:TestEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:name ], + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:description ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:description ], @@ -1696,19 +1708,7 @@ ttm:TestEntity a owl:Class, owl:onProperty ttm:name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:description ] ; + owl:onProperty ttm:tags ] ; 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 be7c114..be61a78 100644 --- a/project/protobuf/translator_testing_model.proto +++ b/project/protobuf/translator_testing_model.proto @@ -106,6 +106,8 @@ message KnowledgeGraphNavigationTestCase uriorcurie testCaseInputId = 0 repeated string testCaseRunnerSettings = 0 repeated string tags = 0 + string trapiVersion = 0 + string biolinkVersion = 0 } // 'One Hop' Knowledge Graph navigation integration test message OneHopTestCase @@ -126,6 +128,8 @@ message OneHopTestCase uriorcurie testCaseInputId = 0 repeated string testCaseRunnerSettings = 0 repeated string tags = 0 + string trapiVersion = 0 + string biolinkVersion = 0 } // Test case for testing the integrity of "One Hop" knowledge graph retrievals sensa legacy SRI_Testing harness. message OneHopTestSuite diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index fce96f0..04bea44 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -8,110 +8,106 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], - [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; - sh:maxCount 1 ; - sh:order 4 ; - 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 [ rdf:rest () ] ; - sh:order 5 ; - sh:path ttm:components ], - [ 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 13 ; - sh:path schema1:name ], + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], [ 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:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_name ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 1 ; 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 15 ; - sh:path schema1:additionalType ], + 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 14 ; sh:path schema1:description ], - [ 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 2 ; - sh:path ttm:test_assets ], [ sh:maxCount 1 ; sh:order 10 ; sh:path ttm:test_case_input_id ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], + sh:order 0 ; + sh:path ttm:test_env ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_objective ], + [ 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 "Settings for the test harness for TestCase" ; sh:minCount 1 ; sh:order 11 ; - sh:path ttm:test_case_runner_settings ] ; + sh:path ttm:test_case_runner_settings ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_predicate_name ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:preconditions ], + [ 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 2 ; + sh:path ttm:test_assets ], + [ 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 4 ; + sh:path ttm:trapi_template ], + [ 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 15 ; + sh:path schema1:additionalType ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ] ; sh:targetClass ttm:AcceptanceTestCase . ttm:AcceptanceTestSuite a sh:NodeShape ; sh:closed true ; 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 6 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], - [ sh:class ttm:TestSuiteSpecification ; + sh:property [ 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 unique identifier for a Test Entity" ; + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], + 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:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + 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 ; @@ -119,11 +115,15 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], + [ sh:datatype xsd:string ; + sh:description "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 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 ; @@ -141,339 +141,359 @@ ttm:ComplianceTestCase a sh:NodeShape ; sh:closed true ; sh:description "TRAPI and Biolink Model standards compliance test" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - 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 4 ; - sh:path ttm:test_assets ], - [ sh:datatype xsd:string ; - sh:description "Biolink Model release (SemVer string)" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:biolink_version ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "Settings for the test harness for TestCase" ; sh:minCount 1 ; sh:order 13 ; sh:path ttm:test_case_runner_settings ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:query_type ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_source ], + sh:order 15 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "TRAPI version (SemVer string)" ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:trapi_version ], - [ 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:datatype xsd:string ; + sh:description "Biolink Model release (SemVer string)" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:trapi_template ], + sh:order 1 ; + sh:path ttm:biolink_version ], [ sh:maxCount 1 ; sh:order 12 ; sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; + sh:order 2 ; + sh:path ttm:test_env ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_predicate_name ], + sh:order 6 ; + sh:path ttm:trapi_template ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:query_type ], + [ 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 4 ; + sh:path ttm:test_assets ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 16 ; sh:path schema1:description ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + [ 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 2 ; - sh:path ttm:test_env ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:order 9 ; + sh:path ttm:test_case_source ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_objective ], + sh:order 10 ; + sh:path ttm:test_case_predicate_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 [ rdf:rest () ] ; sh:order 7 ; sh:path ttm:components ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 14 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 17 ; + sh:path schema1:additionalType ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_objective ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 11 ; - sh:path ttm:test_case_predicate_id ] ; + sh:path ttm:test_case_predicate_id ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path ttm:preconditions ] ; sh:targetClass ttm:ComplianceTestCase . ttm:KnowledgeGraphNavigationTestCase a sh:NodeShape ; sh:closed true ; sh:description "Knowledge Graph navigation integration test" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ 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: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 9 ; - sh:path ttm:test_case_predicate_id ], + sh:path ttm:test_case_source ], [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_runner_settings ], + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:name ], [ sh:description "Deployment environment within which the associated TestSuite is run." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 0 ; + sh:order 2 ; sh:path ttm:test_env ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:query_type ], [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 17 ; + sh:path schema1:additionalType ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 7 ; + sh:path ttm:components ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_case_predicate_id ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 14 ; + sh:path schema1:identifier ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:query_type ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 10 ; 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 4 ; + sh:order 6 ; sh:path ttm:trapi_template ], + [ 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 4 ; + sh:path ttm:test_assets ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 6 ; + sh:order 8 ; sh:path ttm:test_case_objective ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; sh:order 5 ; - sh:path ttm:components ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], + 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 15 ; - sh:path schema1:additionalType ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:description "Settings for the test harness for TestCase" ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_assets ], - [ 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:order 13 ; + sh:path ttm:test_case_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "TRAPI version (SemVer string)" ; sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_source ], + sh:order 0 ; + sh:path ttm:trapi_version ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ] ; + sh:order 16 ; + sh:path schema1:description ], + [ sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:string ; + sh:description "Biolink Model release (SemVer string)" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:biolink_version ] ; sh:targetClass ttm:KnowledgeGraphNavigationTestCase . ttm:OneHopTestCase a sh:NodeShape ; sh:closed true ; sh:description "'One Hop' Knowledge Graph navigation integration test" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ sh:class ttm:Precondition ; + sh:property [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; - sh:order 3 ; + sh:order 5 ; sh:path ttm:preconditions ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], [ 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 15 ; + sh:order 17 ; sh:path schema1:additionalType ], - [ 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 4 ; - sh:path ttm:trapi_template ], - [ sh:datatype xsd:string ; + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], + sh:order 3 ; + 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 7 ; + sh:order 9 ; sh:path ttm:test_case_source ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:maxCount 1 ; + sh:order 8 ; + 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 [ rdf:rest () ] ; - sh:order 5 ; + sh:order 7 ; sh:path ttm:components ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_predicate_name ], [ sh:datatype xsd:string ; sh:description "Settings for the test harness for TestCase" ; sh:minCount 1 ; - sh:order 11 ; + sh:order 13 ; sh:path ttm:test_case_runner_settings ], [ 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: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 6 ; + sh:path ttm:trapi_template ], + [ sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:name ], [ sh:class ttm:TestAsset ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 2 ; + sh:order 4 ; sh:path ttm:test_assets ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_case_predicate_id ], + [ sh:datatype xsd:string ; + sh:description "Biolink Model release (SemVer string)" ; sh:maxCount 1 ; sh:order 1 ; - sh:path ttm:query_type ], + sh:path ttm:biolink_version ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "TRAPI version (SemVer string)" ; sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:order 0 ; + sh:path ttm:trapi_version ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_objective ] ; + sh:order 16 ; + sh:path schema1:description ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:test_env ] ; sh:targetClass ttm:OneHopTestCase . 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:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], + [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_cases ], [ 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:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ] ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:OneHopTestSuite . ttm:QuantitativeTestCase a sh:NodeShape ; sh:closed true ; sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:property [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:order 8 ; + sh:path ttm:test_case_predicate_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 0 ; - sh:path ttm:test_env ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], + sh:order 7 ; + sh:path ttm:test_case_source ], + [ sh:datatype xsd:string ; + sh:description "Settings for the test harness for TestCase" ; + sh:minCount 1 ; + sh:order 11 ; + sh:path ttm:test_case_runner_settings ], [ 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 4 ; sh:path ttm:trapi_template ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 1 ; - 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 15 ; sh:path schema1:additionalType ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], + sh:order 14 ; + sh:path schema1:description ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; @@ -481,60 +501,49 @@ ttm:QuantitativeTestCase a sh:NodeShape ; sh:path ttm:test_case_objective ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_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 [ rdf:rest () ] ; - sh:order 5 ; - sh:path ttm:components ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_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:order 9 ; + sh:path ttm:test_case_predicate_id ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:preconditions ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_source ], + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], [ sh:class ttm:TestAsset ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:test_assets ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:query_type ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_env ], [ 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:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ] ; + sh:path schema1:name ] ; sh:targetClass ttm:QuantitativeTestCase . ttm:StandardsComplianceTestSuite a sh:NodeShape ; sh:closed true ; sh:description "Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:TestSuiteSpecification ; - sh: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 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 description 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 6 ; - sh:path schema1:description ], + sh:order 5 ; + sh:path schema1:name ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -542,66 +551,43 @@ ttm:StandardsComplianceTestSuite a sh:NodeShape ; 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:class ttm:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:test_cases ], - [ sh:datatype xsd:string ; - sh:description "A human-readable 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: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:order 5 ; - sh:path schema1:name ], + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], + [ 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: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: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:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path ttm:test_metadata ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ], - [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 16 ; - sh:path ttm:runner_settings ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 18 ; - sh:path schema1:identifier ], - [ 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:class ttm:Qualifier ; + sh:property [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNode ; sh:order 9 ; @@ -610,54 +596,88 @@ ttm:TestEdgeData a sh:NodeShape ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:well_known ], - [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 20 ; sh:path schema1:description ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:order 13 ; + sh:path ttm:in_v1 ], + [ sh:datatype xsd:string ; + sh:description "Settings for the test harness, e.g. \"inferred\"" ; + sh:minCount 1 ; + sh:order 16 ; + sh:path ttm:runner_settings ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path ttm:test_metadata ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 10 ; sh:path ttm:expected_output ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:input_name ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], + sh:order 11 ; + sh:path ttm:test_issue ], + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:output_id ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; 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 15 ; + sh:path ttm:test_reference ], [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 21 ; + sh:path schema1:additionalType ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], + sh:minCount 1 ; + sh:order 18 ; + sh:path schema1:identifier ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ 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 19 ; sh:path schema1:name ], + [ 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: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 21 ; - sh:path schema1:additionalType ] ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:predicate_name ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:semantic_severity ] ; sh:targetClass ttm:TestEdgeData . ttm:TestOutput a sh:NodeShape ; @@ -665,59 +685,55 @@ ttm:TestOutput a sh:NodeShape ; sh:description "The output of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "CURIE id of a TestCase registered in the system." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_case_id ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ], + 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 name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:name ], [ sh:class ttm:TestResultPKSet ; sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:pks ], + [ sh:datatype xsd:string ; + sh:description "CURIE id of a TestCase registered in the system." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_case_id ], [ sh: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 schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path schema1:identifier ] ; sh:targetClass ttm:TestOutput . ttm:TestRunSession a sh:NodeShape ; sh:closed true ; sh:description "A single invocation of a TestRunner." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:dateTime ; - sh:description "Date time when a given entity was created." ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:timestamp ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "Global system name of a TestRunner." ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_runner_name ], + [ sh:class ttm:TestCaseResult ; + sh:description "One or more instances of TestCaseResult." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_case_results ], [ 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 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 unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -728,64 +744,71 @@ ttm:TestRunSession a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_entities ], - [ sh:class ttm:TestCaseResult ; - sh:description "One or more instances of TestCaseResult." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_case_results ], [ 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:path schema1:name ], + [ sh:datatype xsd:dateTime ; + sh:description "Date time when a given entity was created." ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:timestamp ], + [ 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:targetClass ttm:TestRunSession . ttm:TestRunnerConfiguration a sh:NodeShape ; sh:closed true ; sh:description "General configuration parameters and test data input for a single invocation of a TestRunner." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 1 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration." ; sh:order 4 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:name ], [ sh:class ttm:TestEntityParameter ; sh:description "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run." ; sh:nodeKind sh:BlankNode ; sh:order 0 ; sh:path ttm:test_run_parameters ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 1 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 3 ; - sh:path schema1:description ] ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestRunnerConfiguration . 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:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - 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: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 7 ; + sh:path schema1:additionalType ], + [ sh:class ttm:TestSuiteSpecification ; + sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; - sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ], + 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 "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -801,53 +824,86 @@ ttm:TestSuite a sh:NodeShape ; sh:maxCount 1 ; sh:order 1 ; 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:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; + sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 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:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ] ; + sh:order 0 ; + sh:path ttm:test_metadata ], + [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_cases ] ; sh: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:property [ 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 "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:string ; + sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:answer_informal_concept ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 28 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path ttm:output_name ], + [ 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:maxCount 1 ; sh:order 15 ; sh:path ttm:output_id ], [ sh:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 26 ; - sh:path ttm:runner_settings ], + sh:description "The object of the core triple to be tested" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:string_entry ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 30 ; - sh:path schema1:description ], - [ sh:datatype xsd:boolean ; + sh:order 14 ; + sh:path ttm:predicate_name ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:order 23 ; - sh:path ttm:in_v1 ], - [ sh:description "The direction of the expected query result triple" ; - sh:in ( "increased" "decreased" ) ; + sh:order 22 ; + sh:path ttm:semantic_severity ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:direction ], + sh:order 11 ; + sh:path ttm:input_name ], + [ 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:datatype xsd:string ; sh:maxCount 1 ; sh:order 20 ; sh:path ttm:expected_output ], + [ sh:description "The deployment environment within which this test must pass." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:must_pass_environment ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -855,33 +911,42 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 27 ; sh:path ttm:test_metadata ], - [ sh:datatype xsd:string ; + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:input_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:BlankNode ; - sh:order 19 ; - sh:path ttm:qualifiers ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 23 ; + sh:path ttm:in_v1 ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 28 ; - sh:path schema1:identifier ], + sh:order 25 ; + sh:path ttm:test_reference ], [ sh:datatype xsd:string ; sh:description "The notes of the query" ; sh:maxCount 1 ; sh:order 9 ; sh:path ttm:notes ], [ 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 31 ; - sh:path schema1:additionalType ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 25 ; - sh:path ttm:test_reference ], + sh:order 29 ; + sh:path schema1:name ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 21 ; + sh:path ttm:test_issue ], + [ sh:description "The expected result of the query" ; + sh:in ( "include_good" "exclude_bad" ) ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:expected_result ], + [ sh:datatype xsd:string ; + sh:description "Settings for the test harness, e.g. \"inferred\"" ; + sh:minCount 1 ; + sh:order 26 ; + sh:path ttm:runner_settings ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 24 ; + sh:path ttm:well_known ], [ sh:description "The node of the (templated) TRAPI query to replace" ; sh:in ( "subject" "object" ) ; sh:maxCount 1 ; @@ -892,141 +957,96 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:scientific_question ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_id ], - [ sh:description "The deployment environment within which this test must pass." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:must_pass_environment ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 29 ; - 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:datatype xsd:integer ; - sh:description "The answer must return in these many results" ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:top_level ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; - sh:maxCount 1 ; - sh:order 18 ; - sh:path ttm:association ], [ sh:maxCount 1 ; sh:order 12 ; sh:path ttm:input_category ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNode ; + sh:order 19 ; + sh:path ttm:qualifiers ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:predicate_id ], [ sh:datatype xsd:string ; - sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:answer_informal_concept ], + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 31 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 24 ; - sh:path ttm:well_known ], - [ sh:maxCount 1 ; - sh:order 17 ; - sh:path ttm:output_category ], + sh:order 30 ; + sh:path schema1:description ], [ sh:maxCount 1 ; sh:order 10 ; sh:path ttm:input_id ], - [ 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:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 22 ; - sh:path ttm:semantic_severity ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], - [ sh:datatype xsd:date ; - sh:description "The date by which this test must pass" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:must_pass_date ] ; + [ sh:maxCount 1 ; + sh:order 17 ; + sh:path ttm:output_category ] ; sh:targetClass ttm:AcceptanceTestAsset . 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:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:property [ sh:class ttm:TestCase ; + sh:description "Slot referencing a single TestCase." ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ], + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path ttm:test_case ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], [ sh:description "CURIE id of a TestSuite registered in the system." ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_suite_id ], [ 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:order 5 ; + sh:path schema1:description ], [ sh:description "Encoded result of a single test run of a given test case" ; sh:in ( "test_passed" "test_failed" "test_skipped" ) ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:test_case_result ], - [ sh:class ttm:TestCase ; - sh:description "Slot referencing a single TestCase." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_case ], [ sh: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:description "A unique identifier for a Test Entity" ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ] ; + sh:order 4 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestCaseResult . ttm:TestEntity a sh:NodeShape ; sh:closed false ; sh:description "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ], - [ 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:property [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 3 ; sh:path schema1:additionalType ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 1 ; - sh:path schema1:name ] ; + sh:path schema1:name ], + [ 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:targetClass ttm:TestEntity . ttm:TestResultPKSet a sh:NodeShape ; @@ -1038,48 +1058,48 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:order 0 ; sh:path ttm:parent_pk ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], + sh:order 9 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:aragorn ], + sh:order 4 ; + sh:path ttm:unsecret ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 7 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:unsecret ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:merged_pk ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:bte ], + sh:order 6 ; + sh:path ttm:improving ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:description ], + sh: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: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: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:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:bte ] ; sh:targetClass ttm:TestResultPKSet . ttm:TestEntityParameter a sh:NodeShape ; @@ -1102,217 +1122,207 @@ 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: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:datatype xsd:string ; + sh:property [ 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: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 tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 5 ; - sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 4 ; sh:path schema1:description ], + [ sh:description "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:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; sh:in ( "TSV" "YAML" "JSON" ) ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_data_file_format ] ; - sh:targetClass ttm:TestSuiteSpecification . - -ttm:TestAsset a sh:NodeShape ; - sh:closed true ; - sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path ttm:test_metadata ], - [ 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:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], + sh:order 1 ; + sh:path ttm:test_data_file_format ], + [ 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 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:targetClass ttm:TestSuiteSpecification . + +ttm:TestAsset a sh:NodeShape ; + sh:closed true ; + sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:output_name ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 20 ; - sh:path schema1:description ], + sh:order 10 ; + sh:path ttm:expected_output ], [ 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 21 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; + [ 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 16 ; - sh:path ttm:runner_settings ], + sh:nodeKind sh:IRI ; + sh:order 17 ; + sh:path ttm:test_metadata ], [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], - [ sh:datatype xsd:string ; + sh:order 5 ; + sh:path ttm:output_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 3 ; sh:path ttm:predicate_id ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 13 ; sh:path ttm:in_v1 ], + [ sh:datatype xsd:string ; + sh:description "Settings for the test harness, e.g. \"inferred\"" ; + sh:minCount 1 ; + sh:order 16 ; + sh:path ttm:runner_settings ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + 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 20 ; + sh:path schema1:description ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 18 ; sh:path schema1:identifier ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:expected_output ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:order 4 ; + sh:path ttm:predicate_name ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:name ], + sh:order 11 ; + sh:path ttm:test_issue ], [ 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:boolean ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:well_known ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], + sh:order 19 ; + sh:path schema1:name ], [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; sh:order 8 ; - sh:path ttm:association ] ; + sh:path ttm:association ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ] ; sh:targetClass ttm:TestAsset . ttm:TestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:Precondition ; + sh:property [ sh:datatype xsd:string ; + sh:description "Settings for the test harness for TestCase" ; + sh:minCount 1 ; + sh:order 11 ; + sh:path ttm:test_case_runner_settings ], + [ sh:class ttm:TestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_assets ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 5 ; + sh:path ttm:components ], + [ 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:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:preconditions ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], - [ 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:maxCount 1 ; sh:order 9 ; sh:path ttm:test_case_predicate_id ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:test_case_input_id ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_name ], + sh:order 14 ; + sh:path schema1:description ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:query_type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_runner_settings ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:trapi_template ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 7 ; - 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 [ rdf:rest () ] ; - sh:order 5 ; - sh:path ttm:components ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_assets ], + sh:order 12 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_predicate_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 15 ; @@ -1321,23 +1331,24 @@ ttm:TestCase a sh:NodeShape ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; sh:order 6 ; - sh:path ttm:test_case_objective ] ; + sh:path ttm:test_case_objective ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_env ], + [ 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:targetClass ttm:TestCase . 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: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:property [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 2 ; @@ -1346,47 +1357,56 @@ ttm:Precondition a sh:NodeShape ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 1 ; - sh:path schema1:name ] ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 3 ; + sh:path schema1:additionalType ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ] ; sh:targetClass ttm:Precondition . 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:class ttm:TestEntityParameter ; - sh:description "Metadata annotation." ; - sh:nodeKind sh:BlankNode ; - sh:order 3 ; - sh:path ttm:test_annotations ], - [ 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 "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 0 ; - sh:path ttm:test_source ], - [ sh:datatype xsd:string ; + 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 7 ; sh:path schema1:additionalType ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:test_objective ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], + [ 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 0 ; + sh:path ttm:test_source ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:class ttm:TestEntityParameter ; + sh:description "Metadata annotation." ; + sh:nodeKind sh:BlankNode ; + sh:order 3 ; + sh:path ttm:test_annotations ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_objective ], [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; sh:order 1 ; diff --git a/project/shex/translator_testing_model.shex b/project/shex/translator_testing_model.shex index b5f5b05..8300d81 100644 --- a/project/shex/translator_testing_model.shex +++ b/project/shex/translator_testing_model.shex @@ -92,20 +92,22 @@ linkml:Sparqlpath xsd:string ) } - CLOSED { - ( $ ( & ; - rdf:type [ ] ? ; - @linkml:String ? ; - @linkml:String ? - ) ; - rdf:type [ ] - ) -} + ( + CLOSED { + ( $ ( & ; + rdf:type [ ] ? ; + @linkml:String ? ; + @linkml:String ? + ) ; + rdf:type [ ] + ) + } OR @ +) ( CLOSED { - ( $ ( & ; - rdf:type [ ] ? + ( $ ( & ; + rdf:type [ ] ? ) ; rdf:type [ ] ) @@ -211,7 +213,7 @@ linkml:Sparqlpath xsd:string ) ; rdf:type [ ] ) - } OR @ OR @ OR @ OR @ + } OR @ OR @ OR @ ) CLOSED { diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index f00d30d..30f7632 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -49,6 +49,8 @@ CREATE TABLE "KnowledgeGraphNavigationTestCase" ( test_case_predicate_name TEXT, test_case_predicate_id TEXT, test_case_input_id TEXT, + trapi_version TEXT, + biolink_version TEXT, PRIMARY KEY (id) ); @@ -66,6 +68,8 @@ CREATE TABLE "OneHopTestCase" ( test_case_predicate_name TEXT, test_case_predicate_id TEXT, test_case_input_id TEXT, + trapi_version TEXT, + biolink_version TEXT, PRIMARY KEY (id) ); diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index 77ce4de..714eac8 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -454,10 +454,12 @@ class ComplianceTestCase(TestCase): tags: Optional[List[str]] = Field(default_factory=list, 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.""") -class KnowledgeGraphNavigationTestCase(TestCase): +class KnowledgeGraphNavigationTestCase(ComplianceTestCase): """ Knowledge Graph navigation integration test """ + trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") + biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") @@ -480,6 +482,8 @@ class OneHopTestCase(KnowledgeGraphNavigationTestCase): """ 'One Hop' Knowledge Graph navigation integration test """ + trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") + biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") diff --git a/src/translator_testing_model/datamodel/pydanticmodel_v2.py b/src/translator_testing_model/datamodel/pydanticmodel_v2.py index 21f650b..f108cc6 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel_v2.py +++ b/src/translator_testing_model/datamodel/pydanticmodel_v2.py @@ -450,10 +450,12 @@ class ComplianceTestCase(TestCase): tags: Optional[List[str]] = Field(default_factory=list, 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.""") -class KnowledgeGraphNavigationTestCase(TestCase): +class KnowledgeGraphNavigationTestCase(ComplianceTestCase): """ Knowledge Graph navigation integration test """ + trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") + biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") @@ -476,6 +478,8 @@ class OneHopTestCase(KnowledgeGraphNavigationTestCase): """ 'One Hop' Knowledge Graph navigation integration test """ + trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") + biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index 94d5473..7758f5b 100644 --- a/src/translator_testing_model/datamodel/translator_testing_model.py +++ b/src/translator_testing_model/datamodel/translator_testing_model.py @@ -1,5 +1,5 @@ # Auto generated from translator_testing_model.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-03-04T12:12:57 +# Generation date: 2024-03-04T17:21:26 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -115,7 +115,7 @@ class ComplianceTestCaseId(TestCaseId): pass -class KnowledgeGraphNavigationTestCaseId(TestCaseId): +class KnowledgeGraphNavigationTestCaseId(ComplianceTestCaseId): pass @@ -681,7 +681,7 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass -class KnowledgeGraphNavigationTestCase(TestCase): +class KnowledgeGraphNavigationTestCase(ComplianceTestCase): """ Knowledge Graph navigation integration test """ diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index 8c0f690..02d61cf 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -242,7 +242,7 @@ classes: # range: ComplianceTestAsset KnowledgeGraphNavigationTestCase: - is_a: TestCase + is_a: ComplianceTestCase description: >- Knowledge Graph navigation integration test slot_usage: From 180869ffac51c848eb8073ed36115b4d184f992c Mon Sep 17 00:00:00 2001 From: Richard Bruskiewich Date: Wed, 6 Mar 2024 16:27:31 -0800 Subject: [PATCH 3/6] Refactored runner_settings into test_run_settings inside TestEntity; simplified global TestRunner tag=value configuration as TestRunSession.test_run_parameters slot; further documented usage in a few places; removed some TestCase subclasses that felt superfluous given the aforementioned TestRunner configuration changes. --- project/excel/translator_testing_model.xlsx | Bin 21376 -> 18184 bytes .../graphql/translator_testing_model.graphql | 108 +- .../translator_testing_model.context.jsonld | 2 +- .../jsonld/translator_testing_model.jsonld | 253 +-- .../translator_testing_model.schema.json | 646 ++----- project/owl/translator_testing_model.owl.ttl | 770 ++++---- .../protobuf/translator_testing_model.proto | 109 +- .../shacl/translator_testing_model.shacl.ttl | 1597 +++++++---------- project/shex/translator_testing_model.shex | 57 +- .../sqlschema/translator_testing_model.sql | 275 ++- .../datamodel/pydanticmodel.py | 124 +- .../datamodel/pydanticmodel_v2.py | 124 +- .../datamodel/translator_testing_model.py | 223 +-- .../schema/translator_testing_model.yaml | 86 +- 14 files changed, 1555 insertions(+), 2819 deletions(-) diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index 2002163f2fde43404df398426f4ea3216a48671e..e3f87978929c6ed4657dc1572913ebd167e7f0da 100644 GIT binary patch literal 18184 zcmeIaWl)@3lrD@l?(Xiv-GWPS0tDCK?(QxL1b5d2m&V;KIKee|aCi7PIW?0xe96?z zkNfA|)70BtO|c$!@Ap}Ic`HbRL!g6zfIx$I_#3NvzY*%*0cE$}TfeQd-S zRO=>lVGr&u^hOzw0I7u&?-H5(f+InJYow1fS!B>mGf}P0jXt0)_7;abqMYS1-<%mg`VY=z1noDzT6y8rAu1qGB;`t9n zp4?qmmQL|NACR?*5-}+Tn2j$?Q)G9g9EACUym9}elJ7~ph-~cz3=cM06jHcVIzW~h zv1uoz$$is7{k7B5P$GZ4n#Hrn85J90Hb+bXCcN2~RT|sswoYHlxJrIl#z{NT($G{W%YPCObp4J#KPI1SU@oDbc3uTds2}1gxH0uDe2CV`dp-N9cOv!i~~KpIJT@ z^;7%g6WaAUyb&=ws)XWC;}^wGbiie{g)N@-9}}*q{kV_!srQio+?-^sG%{pJ5Rfz~ z5D>KI&2hD4bTl=xGWz?O`LFFc(9m?4=R)^BDj#z-xwL}o_rXWh9&a0bE#82{g0J z#+ESD^U|R+6&zE3t6`%{4BRAQy~Y?)jxfpvMN<``YzPIO-dOhB&oA>EjqdUgu=rUs z;i(b(jMx-z$Z3SGDR*|ao0|xzSoDogyz%uP@QMR8N?ztpVnDMX@baXqjW~N=b{}MZ z9GrJ#v%+0nKXK)%9h&%Hix08-wke}C{oJxGPY4E>Yc^&$dpTbgT~HLEBtLoOwX&CL zng$!8DL-l9vNRbP)>}H}iqLu@AJSD8)>}O0xMxO5^-yM!w~J{iEWWsalOI}GKqw+CX{Yyu~NP24^`3V;a0**z|!;8`wI z8@}2ZGockVJxWuffD4_{?{^{LPtvnk{&11lG?2&Yp6&+e`;@a!01AA3|l#i)PP*ZzAkDdU+Y0Pr)*JbOXC5$7e#Ml2D;NI=YeZ z(Vnbn=~B(>QeMKEZ01XQHR(*8IJsD6KYil{3RjIJ0t=b|bb4@-xdJ{|9t?9rcJMW@ zw*+Ms&8w~zx_>1i^s3k<<+WUXJG!VmiU+{s_29V~53$#v=eT!K)T02{dauCM+k9OeyU|c_qyM9)|H?gn8K3UK%y)Z*kxgZ%1u#+X$e#@&nyaIBje*)g)qc3YPq{pnW|lj%egDCfKjY-!c8)x-JVl+J3^PjFuUd$_{{F+@ zF>N=@j-e(6%#iY=5ob7RhA^J>uF{26{LE%~19d&0=EiP$wj)2?=nbFlHgFh@Riw^d z`bTYCYYior)OqDsTRFlZcwQ5}7=l`tECTksOKs;3vV10`M3H)2;Z|^~#`HxVu8gGU z2G~i(D4VXE-5yum@7!|`4PHsAR@<}V<9FK~Z!2<-_!0>ELQiu@4zq)kM!Q5p+&pxX zOyYYL*wC#kOUUWO>-6epPUz5A4fW`=paRO@f}JY9(__}`1%DNl<0Ay zJZ62Nz^KN$oW=#mid2!i(<}+iqt{!DljIZQaz zHwJN71yVU@I7+SCuOz$QakYuD)}kh2H?ME?*~ux@qdM0jfw43+aer|)Vm2u_U7?4E zq0a_{nk2`_l-=NTMr7T zqZk-jJU%2Q7R!dhVN4Vx8t8D`fao!pzhMEsZ_+JX%PD*V4aP_*Kevw^RCu#VTP_9C;&6lZ1glyE@{-<5}(a9b($ zq`Ta$)9I<67Idaw1F>F|&eq`KF4ij_R6O%vX*tZ>^d@GOJtY@yMK1ocIx^-cK*&T`sM{drlQ=OiJX=;tFc1*zzYU0sjlG3~sgaSR1LMz^pH{?4 zaY63c$Uel=5>+_9(PFEKpGEeE$}>YdPOGuTqYsn*UUq!NbzseRjDFX>eLXA5k+l+n z=^JBXq17)YJw=}fZv>|jgyXz=T_A3QVfOPm8~UK#f&Q4vU|F`ahGf5&YK{bDp4sx| zOGh7AYdOkpT6cQ7kNgST|9baX{<7i!?*9LY-S^_AAJKZ|{Vd>*+-Lo3_gj>$Y~}^w zA78!Y&xIVjB}FGaQG}fsYZPw!6fX(iV8?CZA~*N=;3+BHM0;$f+ke9?z%S72>`C0@ z!c7X*24}U%^fh@%2)%)=4{Q+-Z@OVDT?>Lac}S|N5m-Wr!SlnVN%bx0V4$Ry!4*f? zm-nUc%M0!A#6T}cvDpcN^%*_E38xsgaYJM30}0Bah@?qEaR}B8iv-uvliR;LV@J9N zh;@B_oq#G9`zDD&Gb zMGFE~TGV4U%SgzYEVf~NkklDC!Pa%r?&<3u8Yc3}d=b5tS#r6D4gs3T!E4geS=h1- z3OQ^70p23ZaJ%l9(2(5ocn*GPG-lIrAPbdAGVmtM$x0(>vRZ~I7~9iH8}8~7UDb$w zxmsx%GQ9Tdq1=thj$*M?<~ukmZ$;$&c~QC%tQHo?gK80DBmOh8o0XN6FJ^%<-kE~M zC12E|6phGT1@1kaEJq&oruMuW8k$>Uf`@mRYLw-6^*kMB+B@Sg7{|Gjv&md7=;uBW znAw^Y)yXpY4o|AXg*g-Ho`jsk`(} z=-r@}Bw>D>Y&V>N7Biv$c8uGmr~wDPzJtvf`H0~nwVx-DbT3eu%hnSk1lha2OdUH6 zEH6F6z*cFk(M{R2f!tQU&D|>rjQ1N}YzjQH7XU4rb5-n3kD(l^k0;#G(HdH=7=|^2 zFQ~$-ATg%>VZe}zRq7ITM~^~;(AF6_#CP-JJiz9(q-%X~Xo>mB|pB_4+sIkd$6X-j%B~b+f0` zXoD&oYfxK-tc8EZ7mb!xRe<&gq%eJ~5>9E0|mlT>d>@(^R|D`jO- z4aB6(lTzAM#7Mp_0H{ks^cfd%4~<%LdXXvYXzX1<+-Y%E&43G3u>jLoZ=oO)x{jMU zldM9Gdt`*I1R}txjQ#4JV;3y3ozvyBh$-rVRx`2cA@UdH_6N@H3fB6vBk%c^t$mhu zOs+6HJ1L3;SaQEH@xcYaC*&wPe!4(tw%~cRwIhE+UfIFJBxi|QXuTS_5v15e{5nd% zX(N_8y0OHRp_+^IvU4uyJiTFd)by<&oKr)l6hJ6)t27Az=1uE^3{S<jlp2RR2V*qPz|}sf~2O+++Pajexa1ikRD1 zM0PL>(>=1X4t^=h)uC)aTd4(VD;)}J~7_g+_U;ya+hTUa=esI78%B86ba zI@)wxlWz7c!;PU`3MO{I37$s5S>Rrg!304R^wTd9kd1ApWUiSG)rlajW+G=% zB#$1&S$mb;Uk#_fRRICdqbA&-qh2Baf*Iy5ehq<_s^g?H5z0n{c>e7$zNNk>0d%pt zLP~UeYiJ6LA2FgS9j?0^)Di)^M9t!j-j*?+zjtHG zM}+uzeSb2El7AdwE&s7hekV=4@dy%AE}5Z2gZ5PhqB^PZReGuVwAF^TC5@hzh{p7%6Y!eN;X)fLDfWPcnTQZPNv7F{72A9pUb~?2t6E zJ2D3e_Xe^s7_q-)-CW#cH(j%~1n+H&!>l3BeBYxTKpdWthtU?X?ok%RMkjqc4_n<` zo0sQ@Azt=PWAz9=?m&@4zpqn6h5Z7MK@ss;5Bz-D)nEQbvM>twW9+mjw9#M&<>Y4j z4hj(}j|+-~esX%vT~sqB&4(_TEaF09lKXAEtt@4Q(^yXe(YXdQJ)K^On{96&fn_>}vej*aYcQ?IDi~v}Z2DePa#|Na8-7nfE`4n;h&2JS(3+2=cx_Gf>Z>*tB2vY@!Yg!~ZyF%vR$W5_QtNG^IMifcR~!xVTOeYK#dFb?X*Yf0_MEm$`R zHwdPKjaaVvh=v!mh_Dz9d`pd$2f(d@Bq$w=S6k7sCJZ&%M9Vc;NKiG+`t@XX=kJg`Y<$!PKsf{v5aWmf?_l~d|{ zYU6%`J1azi0<4S-%?II@UMOWoc`-E%1>sR%N3I=8^74&%Xx#sxgbc?pxg zLMr8*FUt`TBYp0LT1wOiSPYL26$$R6%UsOjsfps0Uu+O4loqN~8wU416xH%#wdLu^ z_e2R5MMU?4I+oEPea_6kb01#zX7%}NwB>Y<`fEDmY<)h8RrXH|_l&KKJ&((76z`Q1a-Z|rKa3fmM9@#0hJ+%mgI zpdS|m_bf{71ng#xA4AA*!T;CV!2Pc_{HqQB?`Z?hA2Q!e|Ej~k>hS-DIx%iU!JVUs8~Gu9>C8kOLD%fs|sT{L0{hQ{bVJw`Z>9~&Xads zdfsjVyhoL*qwAaSymic_-b4`ehoX-cVboziqT~2qWh*}7TU2-|Wfh}W?oLn4ASy3& zzZ2Jihg7XnoDXL^te{HlosAmD%+T6MEmAx*f`?oXh3`Rho!*P#5iGDPoo0f%)u;wf zwJ(p|gDsgcC4&+pwGPP*SGp zn-4cHk;*)TX{VfPQEie7f#;s=K`K9Yzkl4^cdfSuvyI?lEHqFCYvCaUfera$(#f; za0!x+$h@w6;Bubqy|tnSWx7!^L!&Gabu<_Wpvy*G>*Qf_R8rH0A)mBywIvi?j-ef9 z4C%7afiY4`sGY4IRn*K?fz0qi{ZWMa=m0y)Ma^JSsb%=^Ud>tmJvC5MocLJL8Pz*loTMN(1VYGcVZLfGPEb6MM1<;lV|f(&jVi#2I2^}zXMR)f6vGN66e~n8Oilp+Hp02-K%*{J%d~}JA_?e2)0I8 z4FIKxAr(IRJp=oy@crlJzPq)!IuwlaYk`c@QIa?1i(xq#aSbe9Gx@0zPbQG zmtIy zm%-rH&9#J~ff7*1%N~25gtE<`3N@0fnq01Tp=W4`jUw-~Etm&q)29P)cJrvd1!Mwc zY^*CF)L}(3q^jbGJe3|>R-b&wN-q_!BS`acVNrRS>$3qTOJ$Cb8Z!yN+R$3_PZSUD z+a;hH8B2NsP+TsKX9gd^{`VaES$zAKL;rH<4;+f;&0|D)Hd+18*Pl$*&vKdU+ac>N zV&r>_4@l5*`TXc}2@}fiJU*l6n|t)0%!`92bT(Q)wfY)RQ8_!i1mjSPJ5sHHD_j=G zpHS?D?FT#f>EsOH11T2DI2XdAIru3)J{FC< zPr^Mx@32s+;&TTBNQ9%3;tN!O=jSNeo_b*#B}$W>HD+vPDn06zV-h-lZZ#C~8X#1g z7JLOM28FM?nznoS{zNh=39S`oMsl4MU^P3adZj-q8wZ0te@@Ddnk{EUq=T!a1$~AY zjfqUpn5p{kA};)&oaaAFF#qb}zq=J_lS`fvQo zpULzfWm%iQLXcO%qax2C2ozYKU@TA?2@sBH@#*gfWJ2^g0(qe3mYf_mW5m4amUyj^ zS2c1=KMfLhZwBlz(?DwoLspv_d&5_a2!EtJ%^5R$f#>(^YLa~!|L)1wh#sL#Ib0q3 z`j)Sn-ppuqoNAUM;@pOHtTwe^-4TiJi>xdPvfI`MWQLzN4`szGL^r8#zCuQ_-?LK+ zIM)ZNOu9p{00e|{lGMgl2OL~in`{IC*{tlWDB;u7=bXAzf47wPK}^9>2;^2}i@Xok zo{5`97*pNtyLe^!$vrlj?3mI5ss(y|)ybZw?jZ7HlV#^Hq@FExl#jOLP_$^?6Rd8% z7@4BnpcAl~Vik%;l%e^72ygd8tL4K07I?(NZRDkV#4}9o+G*br2b*4FSQ)bB?H?+8 z!l=1!cGe(_d8g66v9=}lzS%`OE@fU-g%%yWAHwoS4-P|^joc_>mFt;YqkKHt&Ns6l5f9(Er?A^-6M8fiiBxF{#`|2=yNuqLG||9QP2j69=gYmN_K1UQXi&nG{6&vQ?cRJuc`MWmsv-{;rMkKVuuw|5-h&@c?Of3yaY{tL?DQxjRgCVQihP%edh?#`oiG2~a|c(i z?m(pC9cc?H3&Rbil%kSau2Ad;viAgp5fiU1CVEJ1fgmkbYciwu6;rsj*xfst4Ipo`Yz{4iS546Xhc zGp#;$!vO#nR%4T>%9`MO5*D$RVK+8#cPM^c9Fd4M6D`(**cavOHDEcC+w*ZG|JG$|DZ}0|>hnEr(HUOn~qYJ(E z0cTS-{iaZiNr4eHux&Q&*9>S>?}?K38ngL{&w%gP>3nrGpU)vAp8VQX|4Rm;&n$Lc z_7@dK=b@Yk+FVt!vtI}AoE$R-Wn>Iw^|G?4v#-x!SeYnk?I?(N-=3thv3xpcx%XNT zNUT!?HC}Gsi%F5u3eO9avVtG>x`J-X81a^FewTNO?v(?UA<)uY~Hia;H?;y^i+o4yl20eJVPV5n%6dqr=u@pDwY9-J2OZLy^gXL#J*DKCSevt{juTAP3l3=8y z2eSFA2m^QyN)qISA*C{>g`F5K2d%-@hnQt>Q>n|M+OsEaXT!RbXlHMT)$cu~dwceV z&RD|N&Jbh|I6M_=c@iu!0n!1-k%G=}hCtUk4KHMIT1}2`s7-|honbXqw(>!lAEVE= zQQ1bE+;j-Rk<78(U_uM*?R_Oysjz%k!<91Ra4K}N>7j2M?>)Wk>ZmY#a?}X-alK9%_QOAQPvWny(Ajt)4M33XA4`5&4Iz~UjCE9vWmM}?qfa=;ohl| zy5rc8*qf#9ukPxm26@rkJD{oPZLnXcDjA)r=mI>-bI?Ye=!R- z0XPv?d_M6dU_n5h+r|DGcXDuavovz}D^I_qvJn1P5f@_}>2qvSN5Z#Nm1K4tt0w~HX=kW-SxxKYOw3}eR7%HZ z#`q#Y+Y)Fpnpqm;UQvo!iD`X}iz>v{4eTFzV}Q2(%{E8r^AiTvSBb>D$cDJF-e6PA zp+JcvG&mYYT1+!|OBDi#NX?cDIr5+#4@;n~T)Jvy-9DSHr;H8u+S<@mFUR6?4W3A9 z{6;BRFvgt-Q`+v%TfFU$q{S$fHf$fHMu6kT4K7-PCOqZOI_77P+8yyU5%{_=aM^ptw=GcOgm~ zC-)DbH&o|41fr9+53RhJE0yy|H`<_WMQikUc^(bEd*|jp>k-(>Zt54J5fQ~@m#RF2 zZg%NPx-vV#L~cqEWlJ+1GR6?yoOu+nSe`{NvV~WAEDhOmhLGcWcP@P#A=s{u<?e`v!y$a&Xf7z99PbtvDBJ(mT&ML=(@7=bT;-G{q;>-I#Yhw z#EcjWrA@`n3oWZ$z`*5u{*XCPARtJ8YuR5jA@6N$EdJ87i1-8RR3`Lb8-N`s_yna@ zuHqNz#+rGFDus(S10sJ61G2j@%a+@@EJt$VWpBSvrF}=0gvSR$yALW~yw0mJC%!rn zs)i2pNy3+AQEmm83(hwv?xtiB{Ls!Bj8Rgfou4LVPR`q<8z+Xgr;zQzL%RY#=_iYW z>lc8vYn*>hvBg#@J%X|Z{#)%Ypnl^DudQnlPY#?z<~3*`^dVwxgW(0WD^EK z=4@2C9@bSZ<~J$^to`b8(~1#y<0T;A|?)|k9tK5xhXBvdP2iyW(-_gchF zt6>*wV~S9vKe+4AZo@9_N%kb9AsBC9^ihdr`23~M5Tcm;4M7^91sTLiu6jWbp%Xzn z^CjvF(Q(ORIwLhF(}MAaiv!%gS^#3zTuIFCb`VGzoHgX-Fd5v-Vz#LF>jJ%EgysE5$*1@B860!~Ztszf$Ekb&7 zr!CC~6!KE@oU7c5sFh?!SA7HKoMiRSjVSl!I3h(Rt$VLvJ{93m1bL2nu6>fTYzMx- zJ~1NMuD09dETwBtVkHwkG-1G4>3|8=euC zG5C4a$*fcEI|(0XZxOb9PE@LMn}e;asENNXg7#=biJX~RviYY*nFyJgk~~}NU3d@> z+`ozTw^IFAy8TqJ;hE7$eJCz>xF%N zM&oVKg1|M8TjWbBYb#4Fq94Z411%PJQN=vHYa)9JQ;TyIw%}Lm=@U02y>{pEgqC(S z7#6Vw$(QB4Q~FPhtlR>Sk3-_B39=oTW!FFIKef?Kb8eSs8%NS|YwFs4jc=_xvl|D#6GK%qFaIkSvl5SqnEx`Y#2##zM5f+)%=Jqk+kxLQs*Xkz>n+a!D$r zMcKuy)(iCwYZ4%xjN2y#6ySg_hdbkEZr(hM+VOPDha@LWADcK_zZeTv6t#c%{&`~& z5dR(v))cX^b~Lhf)Kzw~HFD7YON)mSm*hGHk%M&ecj>c-a=y#^;$5gT90R7Er8xI> zoiPLJTr>hj14ui%8+Hqpk{w!?B;_VfhA2UdEiCZmPAT(ksUQ*%)PjPLR!s{p$BRVE z?HK%NvCI+Qb76lJ-PHz5y#4a6zi=Ju^S6n-eLLCAw;r4WWY}M;@2vFq*azN0izm{K zx2iS#_#pk%m7O(G28l;dApvlsMAUH9T;bWr%~VCsEhA3-l9Umb&r-<&HrWe;DPV!0 zb?#Iu{n@htIHjl;nnh~~62so30(9x-8K>yFq#1?WG4yuKn@~RoH8V$%yIP3IKRAR! z^-nsF7CEGsyxT_;<~@NeT1lBiXuGN3G4{{V9BJDcby(iZgk{+Pv+n?G#K84qU`3%| zMOiQqb7~1%H~990;-PZP(ar@H8^)H!$TmxH+|bTJlo-ZV#K?9_ap3UY&wTW{@IIOG zp*qk|%U>cCboB9?bWxB71w#k_^Wgn6;eS4SpKsLve+>Vn^vf~$zhyx{d_gPztMq>i z#lIAPIVk>1eE9j_|7L9bCBVx;!T$vCLws(odj|OJ*x>&hN9{VSctcyo7m~>+eW(3o62D9V{eq!k{XNWYS^P3H@e5{-?YA(0=P6#&?`8D+pD>`!96w=x#lkN|U&b!K zM7g>D5y`w1d>IS;5+vpM&!zuIWbjh>rGNKJ_ygZh;XinLFL7SFGrw>)UW0)A#<@|D X20VW$3J3`P^N+`K6yqZB*Sr4@NjR#V literal 21376 zcmeIaWl$W-);5Z}Lm;@jyL)hVcL?qtT!Xs>cL+{`y9EdkJlNn8Ab4>9ChU6OoXyET z_k30N{<)Q*W~PRsA9}iLP_b{QndX(N>vQs-IVkVj{SpDoJ$;lCCD(V(;=dIEm3*cL3 zifVZ=q}fO6&K}xV;*0uO0;B<6yjOJUJ+=fnj-@7n(5Po5`n-7`Sq<(0xZw*~*3pbR z{QY{KZM-)2b?V*n#*nm3msBfes;gA%)0mLiHo^w`Ya__c#2ZM(zx5XcseSDj*w0~5 z5D?UV?XQWwliAM>C&zco_c9@b8kh~WyDlKb8C2UNw?KRLV?ntb(}nN|t98XDfMG5aQqs7PSR1V)|Y0$PqXm=9$P@x%*xh-*k-K zTCGotLwa{~v?&am%V9~m;%L!FWAfyZV0}L!@q4KaizVind9Ne%Q4$>jpRa0;`nr@L zXJ)K|!Lxb9Bl)D2o$-}c*jDfCPRn;e_)69<#n-X57;P;~*%0-?8Ghw{Ab%g8cey`QE03B%SI4^Kv_#Rb{dzfF?!uN9oG}NIxTe<=2 z-UT1X6NaE_M%#Fr#s~X#N^qbIryw3A$hBnfLD22qj*3Za?{ImZ9x@p3goY*k@GzWb z1kAKHGA^%bu#lk&GhvrhA9ukO$?Df@TY~g*`Fuu4>s<_tgpu*U7@pBx)xlvTo%vn| zSW*wRw8?uZVQT23PiG-CuBxPMZ$MPHMaX*fVpuiWtN;{ULztpDtnSCP&8NGCWdXCX zT^@Xv06QjJO(MTh`;tw0?XWe~p1v+Cb3t|Mfr&{;|G>{aNsuj47X?!EJdqG6|ldPkrN>gfoxdx+JW7ta->Cj{4C531Y@_5<7)W+$k##5($K} zZ$ehlyIQy*Vznn>Qa5g9jJjSC2PS5oZz=6~(Vckk%tgG%E-vDW$XUjYuHp9N`OFE` zQ)=|a#x}E~oJd=jE;M~E6eR3OXWw^yB$-VTClkvVq;J_o<*JuLWI-2%$qG%gQp5u* zgk?_23%#oAuRvWz_i5~a8C;1DyDYa)=hw*7lv)VBLJ`MV&vgFgJYjPST_iqnq1Luo zkgE9tH1*{QTNyjurx}mru9M14K74evFG=uF!l9{T6lm|cedQ$4A83mf9x|tdj*}S4 zZlvR5EkBZ$xKMoAVa4eduf}zKYca|9<^l3LlN}B(9v2_X9QUI*aj<3UF+nw1OnPMx zDy@isF*XN|Q$1!tgX8;PLv6JF2@mP8@vfsY@kpo%`kcVO9gU1b z?IZ~0l1@L!chrQq&(`mi>fQ+)etqBM8~T;ihA!q(Vj4?&6Pcn!aF>M*x*%N(wmn$g zDyQr%n?NZ63moK0Gl9U?8xJ_nl>Rowsz5K$$B6~bp7N`}E^a>tpRuB&<}?1h$wp36 zAM@_1NS$SIJDtAUD&~b*HU=sa4W}=I1FF@D)N|Z9UHkVI0@)`AH}hn{)#+OFq?mCs z0Uw3Qn(iWpj%oT}cT9E2VTVZqsSl0K^)agZk%M&LE)OTce%&&6lIz0h;pBrRf6Nfm9v5$OQ8 zZOK~X;mS^nZ-$#vji(v(7ya(d?6^VY@vyF>$-ytyEKR#Fv6U5cVUV_%JUt zZLC-Ht*4hknt5`+A{&OSO$8a9c%xy{>x`=_1CgVY2VzF#09wx*=p@V)&`uyq`EYP$V&p+)3zWoP6GxdwnN&#*^ zF}k2odHqRpG>nKE1V~~mr;VedL@W2G*&Dh5+hA1|)2~=VqT${AtWKhHs^q6t3l#7n zfOXX`tvDSNhBCcx?6T-79|8K){B>CT;->}gRtY}7b5`wFs>}Ft?XZ5M)364JVnTR&9(AYEFFjSYh(p?G@QNgSD`IIz%-)81tJ?> zJfuGJy9SPeO?f!J#fKxrnx4LxwS&k`(7ziHiClDz>e=2lRL+zoep;rV>D^0W--*)2YY>QF&F}87M zV_yPRG4B06VnLTLtT0gfJd}g0t;?|(5c!ExtZa}EDLl3pQwuw2E&;wiQf48+T-TYB zhG#1o5-dl`7#B5ZE57b7)Ot}@PPD?$$5U<^Tcgx;{ATg zd1BNBW}EBx-2-49)u_9feOXz43McUY*Q3w!(}w>U{r@jUAK?s_LjlP9G{}GCKI_lX zZ&wA_0f5|p(K{xb1+fPiU_z8yOkHEBm*5r)Zo*oNsdYxyqW|cdv{bAYzv;->;L#^~ zB1yK9zQ4Q`hIdC@=h(|+&H$~nIf)1FfTfxrpG7|prYYMRscVV)Ayjpzbmc%_43Y|+ z!ZC<{j;uJMp5@9AT;m1gTq?6w*;^w39?ZD;?VN`njpoj|^ZJu~VB%I-Q6|uK_k0}sX7Db9YrOxpT*!4O}xFAEx8dRZYBIVYn8SmoPOQSjq zU+8ovXZFDsY~;kyWEkVslC7^%`4mNuO};|VW|MfA_)&J@uIHOw3{#2uJ3|EKD}bv+ zQ)5XJ4evTX@0M*YSIYbn^&^6wmD=t{9+8Y342V_*5)#kGMq>*?mc%1;i{$$Bpd=d7 z?whskN>Rsi=mP!A;V)a~$r!rw=hMpEMGIH!HvV2J>TN>Xh0sW=mG!2Afw@I~{Wv2X zyV$Qg4=vIeB;H57FeyHOQtiLY-Ri0XQu%p@bTI+OVd8 zD&|Ho;Y$oIlme&!5}?o0qaOvOwI{j9<#}5rOJvy}*s4!lc`kKZt=`(lo?fp9s(7qT zW&3t5q7?5{yqtz2j8`zZ#lweJDlqHsKa=X zmfocoXmHBc0Znd+0GpR?SqiyCl1Y-)cJnaF+n|-$t;TGID7O;v#~HP5CQ`+> zR9G;4Nw+Q?oQy-kUivYfboheiL!{ z5dQ_>b#-+adWl?yd_!Av_P{KB0%i(Q_6)Oc2!Rr}wLlsgP1&+}+t3Hi$RE=s| zsl_B#N|%1A4EAQbAPm|s8Rxy#ISu4)i-b{LOZMgiC6u~u8k(^PDWn~`8u_@rm9!G* zH7UH^qaJ1m>0{z~O_91(d9!lcxs3@2(%S2ZdT+~;cF2urXy7@j8x_K{dWjXZ#I_O6)V!IYRGdHX3>Q$xWD4$9 zwal?(Gs&~$gKFVq<189a!~G$lb0rUt(o(2jh~SP)-zD^I@7g<~2^_EO8IZI^4e3^; z7V(O=o`+XBG~Wc$aM-@kMOVI5o~?4y&@s#hSEC_3dn4ibsZf4EjML3*AjDEp3Q>c@ zQBIBdmI=~qL1{t39emcQzTb|B5Q|->8*w!@9c21T&OVG*fZOCwUyoCg{7vuYdCbXs zmelbUtb@Lz*G3~*ME+4tQKq`7Jo(_;R5-2g1 zR5*@Yuv{&KR|56OMI0n9Wq$pN3q(yIt1<{gu1kj0Vj!pIwo$Lu!WOmwRPshGEZwA! zn4$^3FuMUp*?tEDVomy=;tC~{8t>YnF|_vHAnzj%EWYYp;O-@lTns%r88?nNq@PnP zyqog^Z3qS*_dElO<4c-srr1mal!_>d5C^Ok6||a=hw7fP64-7P6N22KgV&LrZe?-U z4kkZ#G_wxD83tgG`)9r?0&r+2Qg92A5hLJ#BBNPe`tX8?^s70sscL-?F@JcO3t1Ya zqbJlrWd$iQcQ_5(hgpU}YS=@TJr3HNFQe2hVpt~(YsC|$`&2&s^~2Ls-3|*!_b1mI zC8R^k)>GMxpQM`<6rD&EM*w$NawhH z?Vvmx(NL@CR@%m%D{(oh>Oc@OgG=W>@(tqAEbN(d#Z#Hcd5Xh2K z6sz3UOB~v0seJ`Mx6BMgwhFab&M`ijru;X07NAtu4gDdyb+49WhZGwO)zS>1W9+TY z)KN=1;`2^(%K}WJ+oYy=EtB2y2SXQzu&@t5TR_w11h>}@J&tr6=0v{d!khu_nW+Xz z_Ef=fa~oq|Glvr8i|CtjC&&rD>+;E)563eTEwi7kDP+E4)#=ld)i2X6bfjQXR8CU# z_U;CY3YX^lye+JnnIZmd<%;T&?P~j^fu;-W%iF5bFQ0-WX-dB?kK^2$b9uDz$2O@J zMvR!`Tv;>>4!!J4L6~M>uoTVSOXpR}E0;yPjD1IkymQT7r-I3_iZy%uB6xC-fnfv8 z)-zhX4EFIP0TI8EjVFrns?57UPZD9eB2oU(6WLeya~g_UZ=`)Z%mGTnU1FC6$jWS( zi}ZS8rhxhLEwtO+Eip9El`w$&M^}RDX$ewSQo&(Hd7vHP&mmy>$}`d(MHN=5N;4<0 z9BjI#>?D=GFLi&pgcmW>TwaOXCiLNRw2%1rMIe6{C`t8&uOlBbzm=?yR;osq#6Ur$BG zTYRbC-_>;!@c%*PXS?*bMp6*%WR)Jqgx7_IzPG(C^BwNP?S;y5j!Ljj!(vpeNj zVk8&#^drP&+*(iw&h)hbDf1Di58{44thmNlG$sq41-`@F%Q0qJ*5DqRP*+(AIY~P> zYqlNj{8YcM1G^tsK3;)-{W9A%VBgzLjbGiX-yU5wg_e-GEc-EkbfDz%gjg*4?U=n+ z+(L?GY=*U(x`UKc*QpY zTX!4=koUeO(vyB3+w^wQa-;J3voftXle^jY^@5oMetdZ?2^n8PSTA~PTuOzL*JyNm zAlgcl8(ERESPzThsc90yKb^JEL=(UFiccV*cB1MoGM2cP?D82g!#kvE7!9M6bBnb6 zLD@^uA0+QyBiJu#fN*xS#=Y)?Z$e$!Z?##X(X>i; zlGnt0=jNEsPNEb8xz}>Y+awN~rtpsx4sBSX%oAGyO5W6tx(tVWO{o5wOdT=X=G&(S zu(CT4>&+$$Q&`hY+%+UfWul*3IPM7hI#{l3H^h835+X7K$-g#TtVviIEH)(0%a6}R zJoFHy=i_{v1_^}6weYb-IHbr+TsTj*?dnRv^9w-7Eh=XzooTkN_vLFeNw8)oxq!M@ z0%Cg2xAgDJU7PN1b>0PUvbaqSgEJCUo*nq+)M?wdd~7=B2626$hTnizlHa_MS~o)~ zIwq_H@1?blEF#KYr#L|pF2zyBl&S{s%Sq?SvB_Ek5Rp`Ll=2W44F@#LsE;4;;97BC zQBD*XRdI5E4K+>UsSSV}uQUNsNDLw@l3~)^xEuz zL$=ro#TA^AN=Vs(`05BrToI!io%Q;BmF*22PTbf)>>;D|y{tVsUzE*>3hfZ|L~3b) zA$?ikH#g1zXt|thsu;*{qX@UzZX&m|Ato4N&jOCMILu(1S-kMj;GW%mBqj@abYmJL z;&|k)Q;t<>9S&QAfEaC)z!HQJJ@D6yq1S4l%jPaexuC8mR%C1ZarXXt4c%Nzh3wLA zWo*Fo+kMj^ifAF&nX~GMi|Di14RONd4Zc!x3$wJ|;C{EU_BZH6ylfDe557OOrOQc~ zOgMino+KyG@jytZ&F+!bejtpip~QMq-8i9%4W8zhAIFhV%zHKSt&n+B4se)4db8YM z5Rh7m&n{T&S1n%`FD5jztPlF zKJkyH{%Gotrv6{k)L&WRKX&Smo%&;^{u?_*s-uga@S>%{ltU#w5Q#AR9N ziH!7CQ5$NH?l#N_%bNqQexsrcJ;+w|6$(>m#Tv;_gTTc}FW?-xc%LzNJ!;AJ+|W zzgDvVrww{X;!;aCO3h^2pz`vuL`1NW6)aH(j7P9HTi;kmtsDDcirg1Tz_|tKlnb4s zRWo_vN~L2n`w;poCpSjBs`%;W?*cbBdMJP?;d|zVe%Nx<`?OOkYbFwXF60zD8muTG zmfmy;LZKx5&lbMic>2zyNoHcpMhba@dO_M+9&lPVQK)Msa0~V59LBt>T9wxOAo`p7 z6>E^kU(o|(J7QI6z&U8lKZ1M>UW)FI%%1RUqqf-S=9V#5AGJ+5(UhNK`U-(VR*VuT z&}jsvT_UOax!P9o;vE|^@>uIJa+WWRJvqrp=EHmG3d;QyGji4ZiL3nuNE>!NpA;@E zstCR&4tOb>_+b}G>d#8^XOfIBVKkCp;e*4DpcIq(hPjogcLRs%9p9wv5Wg~yJ$Y^J znZWjmwBlMz-3Ft_>x@XPs8CYDo2>u-{mU}G^?QdQ035i)U1!b@M&hB|yYPHW%8>AL zLFDfD?yUhk8Sk`DDe7o=KQkv*)y{EV?tQiEDo)+lwYWOC`2H|)(sF=+4H3j3R+hLGlYahZygG6~6(=A(oY;4ZI1T3nquW~L1K%4kNQnqE5#GvsERx@`mj8CNE($G6#XQeh+A#LY|G%k(C)3hs~k{;2Oseg7?Mo^nrrSo4Q9|H~Q$-LJ`( z!1a0?c=qBS)@+uioQtdSynL?^!d6k(UF>v(|+?BwM)S&{kKI$2kI+(J3V7&sM zdsSb%C~I)4gJXd2T!&?$8!xe@UVZK8Wz-Q1GsfE`{3Eoe;cu3xz>0-{ z1+m1GVBOipaHl{a+Qk;Naz!not~lxSfc1}b7iTBzEewpgl(XY8yt-Wq)oU^^kl#7p zcm{B^wj`E4(i6|e27TrYS_f^TuBZprGeo#TaU$E09^x&LZvq|+XR-$Y0ybADprrmQ zv`4#XeS&Y=4(^bD`R_kf?W06F@*OxoV*l*FvphxhLsaGLf1atQ4ILE)`tQ(S16>Jq zddQFwnAWiY##6N@T9dEd=s(_5aZ91o%`?-y}bupqMP}?>ryF;5$NWGXxhZ5PK0SVt$|aC%L;bER=&ikz+q(;p^-+B0Z~x^Tye`E+h7O%T$2Cr@g(U`P(~7-AOY#9wAq2^c83-*i)@@zgbCOaq<-!rOkE|ZzonIlRDY5;OaZWF#C^LZ(AJo`OH6Z zM+p9%Ak*r}%Wr`Mi3O&9{z<@3A!?t*r-GwUgQ6kuIK=Rv;s&&+-X@{+Q2$|S;PEMv zx9c7l%LFC7{))qDwgWjEf^Jiz8#)#sRM&O=A+l_*4uHp}*bLRUPUyJ=-tz&;VN5R? znL9-AK|EWYVtbP2;8pfTE%~?iD+v=wDQUr#^>Ce4-B%3gDvmG}E=!7pah?lhINAQ$ zI#6@T13X0ytAQ5`!lf*Z>{;|~uX0ZE^WZ!8$s*=G9x=1tvY;o<0c(z^QWWp5{kdPF z(>hWf-R7@vPf9*CAa5PLxnEoshfMQ2Et9cgaimT_qp4@F`>_Oekv{6H-KJFd1H&iP z5F?{RjBPzRvsBN!kWwVZy5pyYtrvNqo7{#(Xu?~=%|Fb2oPGSTDw!C{1Ty*v2|rUW z4nt=K(}5l0DH4!m3!MvKmP`eocQ=_QMRpWSF%Y3rY;^nvK4+{NUiL_p%GcP-vJZug zb*^Mo2|R11s%!4#)V>r|dr!eoR~3L=(9e>YBxKE`&f?n_TZ?JHb>e_rAw4}F}nhT{qsikQS?#7h4O z|Evg33b~%`)`vaJLy}n{DUx17MMz%LU8=T!#p>RE4OK;AR_q0t!l6hr{3lNMtf?NwG#=OA!Q)C-_eW zliQ9f=_yl=pzzr_Th%6u^~6)ax@Hr4eq`4FcnN-d{nA^}n>mz2q!;AD6T!fLEX$^6 z6xw1~=_vokJaB4RK6QeTg)fP7jmFZuFqbUr>RZ6f!OfRT*o9&*P2NZgSFD*c!){2B ztkjuxZdgvg2j~ya1cs~b+m;EOBECSp(yrj5Mz%gyRT9MBF699mYzE%KH>wfP%8N#SoHXI zo-3?!p*UHpaMeRlo9UT>^i3B0II2TvGXpbjXw;pxR8=LV_l(_$5T{t_SgE~?Rf&yV zp*^_|avteH;s(o{9;^v_sNXqD%QuTp?a`C$*HsqN460C}bLOrW%<0h=9RSKG-)41O zQ}Nbdm9{D&DU=oDFmLIEBLzSIi+>4<{WPkRkSF5GK!-;Hm?{SrO#CeJcXsi#F?0TT zxMWEk5CLEUmPl+MmnNpAH<5Xk5-VB^_Z*5EY-!3vv^0HaBfGz`BHM1r*igPv&scrO z&BJP5$UIu+PWd?pIkR=MwD53tx4ZdJCFQ&oT%+RAkf(}&5~n=vv}(!R$DG^x4GHx- z`qv*xRAhHtK28QL(9BZuvRX9Cn_DK>s#i|Tj`Kx>cBW8gx3M(K(^81pis_Cd#g)7? z2p$}jG(q3~>X5He`uGBCL?X2?ra5W6Khy$qI9TEc9iEzz2GbJ3MjhWdMyLH;o-Aa? z%cjmiK1-vvai7h=Th{*N+S>4RKgZ&7J+5d*@@6Gz=!;uXrp(Ol5$iVd$vgF z(YlG_W_R5obDnC#1HAx~jK1i{$zcAHn6Y9F_H^biJBk4S7v}5E?SsB@#~kRDIHZTM zZmtJYPuiGn!3KK>T`OpE_btYWU~#i7-xAa$PVVo*l9XpV_^+lM?mKvMR%#cJuk}DX z%hu>|3%#2C_s*>RHlkmudTO1&ijFR?y3pVm@^s8nF_7H}CG=E@u3DPymTg-bj?pk| z3u#ybLopRY5rXK^R)jJYBd9nRyr}Q<5ksNT6$nj9tM98A^ny`a3#|t!Kf|(UraNt; zTD?&JYJ&Y@u{S@LP!i?^8uU!Qm0#;AIye(EhhG|^$55gPxK8#TfS zR)UNj7&C%UHJX`$?E5}2=8Cx*(J=U?@a=+keeouJXBW|PT|^eBGLPBW^wr30xo&vQ zfFhfIras+yb@ob-57yL%*^c>|H0&}$^m%M?&)EYFwQ}*s(RB&rA4*p9sOBl9=|M(!A+-URaflam9QTdkDQ(p#pO$gInbTO7s^Ju zB~=S#FLe~27MU2=d93U_o{pDd@LzXkF%^YR&WgcO*wI*s!dK3nHd=k*bg3S$M2*sYG$oBT0{NFNKqQm5S9mqHcw8DKSap z{J5FV@I$ugYYzOP!j0+Ia_lBrH!v@hDFjQq`IrAEz_ zCgu1FSo+!=zD;@u*4vRn&BRuH(_+KdF%*{0a1$Gb&e)_~__S2Y`~%l9$O;t7KFP)k zEd$eJILynnuG;t#54O|+lRuARwr9>sJ=dnsSXacYTW^`%oUUG@jE9mp@9;;=iut{b zzlyL|Fq@Dhf8g*pXq>@rA!H{Ee>_Bysygv0Qaosw0fMy%<_biZP|*r0e|GGVZ#*lj z#+`+hAS~xZv>~z)nVFgVgHj+)ENP$d*e*ayK)ZGY^@l;f)A{q@Du0rKt{fDg!+zU` z>($g;VI}YPnGRNa-`bmTGo@hZ11_ZNHAr=x;{3(azcl%;Y<<$_ zms#PMKqid-lkzx%t{-Lj@_os;jp&TytLR}uQh?7p2X6<#1X&{I(>!S>(Fh*JPT}_j zn`>*`^h&=AkX<(Hid2=oyhW}QRdTfM?KxjWbgvq1}ZtU>>M z{foreEOZ18H#_jQq@OqJ=!n|extQ6x7^r$Wm^thHTpGTl4ch_lOcL`WAHqa6X)Hnp z&1e9mi1~HNQS|jNdLo2$R-?ly(+-KMez!3u&u+f#C&j16Zm;AwY+zYf=dw3GLyj_< z_m9`)LgqM_W_XD`Wt+y#INY2GiXPM*mpm$7Q%k55?alHgP@BPJBwJ&bnZ|s;6C~R6 zqKVq3y}$WPzg)S$ZY-tYW^MA(iAvdABPjaEoD8IA|An@TPA88Iu0bkFU>Q-y5Q;&e zl$lKtc7Ht-9g_9F)b4lfWW{DDBW0NY0so2`&@gc<+=*q>y)-0j4h>&NfBA2@CNx=4 z+stzGUDv*V+PWp5oM56?uAAiUDN?uVoWXAEFH}p?OVA%2jF!JZXf^8kj;w6AO$l;_ z<)UpyNXJ>z2-}rHU@OBq$&e4?Clg(&1|EaHBQu>F`rMVAm`6()q#++#orz$`jostK z61HXfl6H_uJ@sw07M9`}T10uDa70P|u`1uLm-7PoL%urYHjnh5`Q1ms$a* z>FMDQoVS0!;_7+p=T}Vq)fNQAAGGFQTmR36Q_q_}zk=yk^D*GR|ILL=&jFra!STNU z0VqII1O)i)g&hAqN(}68QJ!|$&rzOViSVm02tecio4!2l_MW3WuWA2<5)brWe}nS0 zA$gASyh!*LN+?i^zd?CQ3_nNt=f21T3G^G3r$pg%l;<^HzxpDI^;?vu#L;t<=j9f^ zP$qzPul%MjPid3?9t8>Swl#gEB$`LJP%v{f-&IvJ`_X~$v>bHKNq6{SPDn<|xBH&Ld&~#5p|NQiS E0P=#v5&!@I diff --git a/project/graphql/translator_testing_model.graphql b/project/graphql/translator_testing_model.graphql index 522e6ae..90fda2b 100644 --- a/project/graphql/translator_testing_model.graphql +++ b/project/graphql/translator_testing_model.graphql @@ -18,10 +18,10 @@ type AcceptanceTestAsset inV1: Boolean wellKnown: Boolean testReference: Uriorcurie - runnerSettings: [String]! testMetadata: TestMetadata! id: Uriorcurie! tags: [String] + testRunnerSettings: [String]! mustPassDate: Date mustPassEnvironment: TestEnvEnum scientificQuestion: String @@ -39,17 +39,15 @@ type AcceptanceTestCase id: Uriorcurie! name: String description: String - testEnv: TestEnvEnum + testRunnerSettings: [String]! queryType: QueryTypeEnum preconditions: [Precondition] trapiTemplate: TrapiTemplateEnum - components: [ComponentEnum] testCaseObjective: TestObjectiveEnum testCaseSource: TestSourceEnum testCasePredicateName: String testCasePredicateId: String testCaseInputId: Uriorcurie - testCaseRunnerSettings: [String]! tags: [String] testAssets: [AcceptanceTestAsset]! } @@ -60,6 +58,7 @@ type AcceptanceTestSuite name: String description: String tags: [String] + testRunnerSettings: [String]! testMetadata: TestMetadata! testPersona: TestPersonaEnum testCases: [TestCase] @@ -70,78 +69,13 @@ type BenchmarkTestSuite { } -type ComplianceTestCase - { - id: Uriorcurie! - name: String - description: String - testEnv: TestEnvEnum - queryType: QueryTypeEnum - testAssets: [TestAsset]! - preconditions: [Precondition] - trapiTemplate: TrapiTemplateEnum - components: [ComponentEnum] - testCaseObjective: TestObjectiveEnum - testCaseSource: TestSourceEnum - testCasePredicateName: String - testCasePredicateId: String - testCaseInputId: Uriorcurie - testCaseRunnerSettings: [String]! - tags: [String] - trapiVersion: String - biolinkVersion: String - } - -type KnowledgeGraphNavigationTestCase - { - id: Uriorcurie! - name: String - description: String - testEnv: TestEnvEnum - queryType: QueryTypeEnum - testAssets: [TestAsset]! - preconditions: [Precondition] - trapiTemplate: TrapiTemplateEnum - components: [ComponentEnum] - testCaseObjective: TestObjectiveEnum - testCaseSource: TestSourceEnum - testCasePredicateName: String - testCasePredicateId: String - testCaseInputId: Uriorcurie - testCaseRunnerSettings: [String]! - tags: [String] - trapiVersion: String - biolinkVersion: String - } - -type OneHopTestCase - { - id: Uriorcurie! - name: String - description: String - testEnv: TestEnvEnum - queryType: QueryTypeEnum - testAssets: [TestAsset]! - preconditions: [Precondition] - trapiTemplate: TrapiTemplateEnum - components: [ComponentEnum] - testCaseObjective: TestObjectiveEnum - testCaseSource: TestSourceEnum - testCasePredicateName: String - testCasePredicateId: String - testCaseInputId: Uriorcurie - testCaseRunnerSettings: [String]! - tags: [String] - trapiVersion: String - biolinkVersion: String - } - type OneHopTestSuite { id: Uriorcurie! name: String description: String tags: [String] + testRunnerSettings: [String]! testMetadata: TestMetadata! testPersona: TestPersonaEnum testCases: [TestCase] @@ -154,6 +88,7 @@ type Precondition name: String description: String tags: [String] + testRunnerSettings: [String]! } type Qualifier @@ -167,18 +102,16 @@ type QuantitativeTestCase id: Uriorcurie! name: String description: String - testEnv: TestEnvEnum + testRunnerSettings: [String]! queryType: QueryTypeEnum testAssets: [TestAsset]! preconditions: [Precondition] trapiTemplate: TrapiTemplateEnum - components: [ComponentEnum] testCaseObjective: TestObjectiveEnum testCaseSource: TestSourceEnum testCasePredicateName: String testCasePredicateId: String testCaseInputId: Uriorcurie - testCaseRunnerSettings: [String]! tags: [String] } @@ -188,6 +121,7 @@ type StandardsComplianceTestSuite name: String description: String tags: [String] + testRunnerSettings: [String]! testMetadata: TestMetadata! testPersona: TestPersonaEnum testCases: [TestCase] @@ -214,10 +148,10 @@ type TestAsset inV1: Boolean wellKnown: Boolean testReference: Uriorcurie - runnerSettings: [String]! testMetadata: TestMetadata! id: Uriorcurie! tags: [String] + testRunnerSettings: [String]! } type TestCase @@ -225,18 +159,16 @@ type TestCase id: Uriorcurie! name: String description: String - testEnv: TestEnvEnum + testRunnerSettings: [String]! queryType: QueryTypeEnum testAssets: [TestAsset]! preconditions: [Precondition] trapiTemplate: TrapiTemplateEnum - components: [ComponentEnum] testCaseObjective: TestObjectiveEnum testCaseSource: TestSourceEnum testCasePredicateName: String testCasePredicateId: String testCaseInputId: Uriorcurie - testCaseRunnerSettings: [String]! tags: [String] } @@ -246,6 +178,7 @@ type TestCaseResult name: String description: String tags: [String] + testRunnerSettings: [String]! testSuiteId: Uriorcurie testCase: TestCase testCaseResult: TestCaseResultEnum @@ -271,10 +204,10 @@ type TestEdgeData inV1: Boolean wellKnown: Boolean testReference: Uriorcurie - runnerSettings: [String]! testMetadata: TestMetadata! id: Uriorcurie! tags: [String] + testRunnerSettings: [String]! } interface TestEntity @@ -283,6 +216,7 @@ interface TestEntity name: String description: String tags: [String] + testRunnerSettings: [String]! } type TestEntityParameter @@ -297,6 +231,7 @@ type TestMetadata name: String description: String tags: [String] + testRunnerSettings: [String]! testSource: TestSourceEnum testReference: Uriorcurie testObjective: TestObjectiveEnum @@ -309,6 +244,7 @@ type TestOutput name: String description: String tags: [String] + testRunnerSettings: [String]! testCaseId: String pks: [TestResultPKSet] } @@ -319,6 +255,7 @@ type TestResultPKSet name: String description: String tags: [String] + testRunnerSettings: [String]! parentPk: String mergedPk: String aragorn: String @@ -328,22 +265,17 @@ type TestResultPKSet improving: String } -type TestRunnerConfiguration - { - id: Uriorcurie! - name: String - description: String - testRunParameters: [TestEntityParameter] - tags: [String] - } - type TestRunSession { id: Uriorcurie! name: String description: String tags: [String] + testRunnerSettings: [String]! + components: [ComponentEnum] + testEnv: TestEnvEnum testRunnerName: String + testRunParameters: [TestEntityParameter] testEntities: [TestEntity] testCaseResults: [TestCaseResult] timestamp: Datetime @@ -355,6 +287,7 @@ type TestSuite name: String description: String tags: [String] + testRunnerSettings: [String]! testMetadata: TestMetadata! testPersona: TestPersonaEnum testCases: [TestCase] @@ -367,6 +300,7 @@ type TestSuiteSpecification name: String description: String tags: [String] + testRunnerSettings: [String]! testDataFileLocator: Uriorcurie testDataFileFormat: FileFormatEnum } diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index 3409eca..f53de2f 100644 --- a/project/jsonld/translator_testing_model.context.jsonld +++ b/project/jsonld/translator_testing_model.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-03-04T17:21:21", + "generation_date": "2024-03-06T16:19:28", "source": "translator_testing_model.yaml" }, "@context": { diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index d3701ac..5a4b6c9 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -839,7 +839,7 @@ { "name": "test_entity_parameters", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_entity_parameters", - "description": "One or more parameters documenting target characteristics of a TestEntity.", + "description": "One or more 'tag = value' parameters documenting target characteristics of a TestEntity.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_entity_parameters", "multivalued": true, @@ -1290,36 +1290,18 @@ "@type": "SlotDefinition" }, { - "name": "runner_settings", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/runner_settings", - "description": "Settings for the test harness for TestAsset", + "name": "test_runner_settings", + "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_runner_settings", + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "aliases": [ "Settings" ], - "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/runner_settings", + "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_runner_settings", "multivalued": true, - "owner": "TestAsset", - "domain_of": [ - "TestAsset" - ], - "range": "string", - "required": true, - "@type": "SlotDefinition" - }, - { - "name": "test_case_runner_settings", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_case_runner_settings", - "description": "Settings for the test harness for TestCase", - "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "aliases": [ - "Settings" - ], - "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_case_runner_settings", - "multivalued": true, - "owner": "TestCase", + "owner": "TestEntity", "domain_of": [ - "TestCase" + "TestEntity" ], "range": "string", "required": true, @@ -1523,9 +1505,9 @@ "description": "Deployment environment within which the associated TestSuite is run.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_env", - "owner": "TestCase", + "owner": "TestRunSession", "domain_of": [ - "TestCase" + "TestRunSession" ], "range": "TestEnvEnum", "@type": "SlotDefinition" @@ -1593,9 +1575,9 @@ "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/components", "multivalued": true, - "owner": "TestCase", + "owner": "TestRunSession", "domain_of": [ - "TestCase" + "TestRunSession" ], "range": "ComponentEnum", "@type": "SlotDefinition" @@ -1606,10 +1588,6 @@ "description": "TRAPI version (SemVer string)", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/trapi_version", - "owner": "ComplianceTestCase", - "domain_of": [ - "ComplianceTestCase" - ], "range": "string", "@type": "SlotDefinition" }, @@ -1619,10 +1597,6 @@ "description": "Biolink Model release (SemVer string)", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/biolink_version", - "owner": "ComplianceTestCase", - "domain_of": [ - "ComplianceTestCase" - ], "range": "string", "@type": "SlotDefinition" }, @@ -1713,14 +1687,14 @@ { "name": "test_run_parameters", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_run_parameters", - "description": "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run.", + "description": "TestRunSession parameters informing a TestHarness about the global characteristics of TestRunner processing tests.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "is_a": "test_entity_parameters", "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_run_parameters", "multivalued": true, - "owner": "TestRunnerConfiguration", + "owner": "TestRunSession", "domain_of": [ - "TestRunnerConfiguration" + "TestRunSession" ], "range": "TestEntityParameter", "inlined": true, @@ -1895,24 +1869,24 @@ "@type": "SlotDefinition" }, { - "name": "TestAsset_runner_settings", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/runner_settings", - "description": "Settings for the test harness, e.g. \"inferred\"", + "name": "TestAsset_test_runner_settings", + "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_runner_settings", + "description": "Scalar settings for the TestRunner, e.g. \"inferred\"", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "aliases": [ "Settings" ], - "is_a": "runner_settings", + "is_a": "test_runner_settings", "domain": "TestAsset", - "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/runner_settings", + "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_runner_settings", "multivalued": true, - "alias": "runner_settings", + "alias": "test_runner_settings", "owner": "TestAsset", "domain_of": [ "TestAsset" ], "is_usage_slot": true, - "usage_slot_name": "runner_settings", + "usage_slot_name": "test_runner_settings", "range": "string", "required": true, "@type": "SlotDefinition" @@ -1987,31 +1961,30 @@ "@type": "SlotDefinition" }, { - "name": "TestRunnerConfiguration_tags", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/tags", - "description": "One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration.", + "name": "TestRunSession_test_run_parameters", + "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_run_parameters", + "description": "Different TestRunners could expect additional global test configuration parameters, like the applicable TRAPI version (\"trapi_version\") or Biolink Model versions (\"biolink_version\").", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "mappings": [ - "http://schema.org/additionalType" - ], - "is_a": "tags", - "domain": "TestRunnerConfiguration", - "slot_uri": "http://schema.org/additionalType", + "is_a": "test_run_parameters", + "domain": "TestRunSession", + "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_run_parameters", "multivalued": true, - "alias": "tags", - "owner": "TestRunnerConfiguration", + "alias": "test_run_parameters", + "owner": "TestRunSession", "domain_of": [ - "TestRunnerConfiguration" + "TestRunSession" ], "is_usage_slot": true, - "usage_slot_name": "tags", - "range": "string", + "usage_slot_name": "test_run_parameters", + "range": "TestEntityParameter", + "inlined": true, + "inlined_as_list": true, "@type": "SlotDefinition" }, { "name": "TestRunSession_test_entities", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_entities", - "description": "Different TestRunners may expect specific kinds of TestEntity as input. These 'test_entities' one or more instances of TestAsset, TestCase or TestSuite.", + "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.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "is_a": "test_entities", "domain": "TestRunSession", @@ -2066,7 +2039,8 @@ "id", "name", "description", - "tags" + "tags", + "test_runner_settings" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestEntity", @@ -2084,6 +2058,7 @@ "name", "description", "tags", + "test_runner_settings", "test_source", "test_reference", "test_objective", @@ -2118,10 +2093,10 @@ "in_v1", "well_known", "test_reference", - "TestAsset_runner_settings", "test_metadata", "TestAsset_id", - "TestAsset_tags" + "TestAsset_tags", + "TestAsset_test_runner_settings" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestAsset", @@ -2152,10 +2127,10 @@ "in_v1", "well_known", "test_reference", - "TestAsset_runner_settings", "test_metadata", "TestAsset_id", "TestAsset_tags", + "TestAsset_test_runner_settings", "must_pass_date", "must_pass_environment", "scientific_question", @@ -2196,10 +2171,10 @@ "in_v1", "well_known", "test_reference", - "TestAsset_runner_settings", "test_metadata", "TestAsset_id", - "TestAsset_tags" + "TestAsset_tags", + "TestAsset_test_runner_settings" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestEdgeData", @@ -2215,7 +2190,8 @@ "id", "name", "description", - "tags" + "tags", + "test_runner_settings" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/Precondition", @@ -2231,18 +2207,16 @@ "id", "name", "description", - "test_env", + "test_runner_settings", "query_type", "TestCase_test_assets", "preconditions", "trapi_template", - "components", "test_case_objective", "test_case_source", "test_case_predicate_name", "test_case_predicate_id", "test_case_input_id", - "test_case_runner_settings", "TestCase_tags" ], "slot_usage": {}, @@ -2259,17 +2233,15 @@ "id", "name", "description", - "test_env", + "test_runner_settings", "query_type", "preconditions", "trapi_template", - "components", "test_case_objective", "test_case_source", "test_case_predicate_name", "test_case_predicate_id", "test_case_input_id", - "test_case_runner_settings", "TestCase_tags", "AcceptanceTestCase_test_assets" ], @@ -2287,114 +2259,22 @@ "id", "name", "description", - "test_env", + "test_runner_settings", "query_type", "TestCase_test_assets", "preconditions", "trapi_template", - "components", "test_case_objective", "test_case_source", "test_case_predicate_name", "test_case_predicate_id", "test_case_input_id", - "test_case_runner_settings", "TestCase_tags" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/QuantitativeTestCase", "@type": "ClassDefinition" }, - { - "name": "ComplianceTestCase", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/ComplianceTestCase", - "description": "TRAPI and Biolink Model standards compliance test", - "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "is_a": "TestCase", - "slots": [ - "id", - "name", - "description", - "test_env", - "query_type", - "TestCase_test_assets", - "preconditions", - "trapi_template", - "components", - "test_case_objective", - "test_case_source", - "test_case_predicate_name", - "test_case_predicate_id", - "test_case_input_id", - "test_case_runner_settings", - "TestCase_tags", - "trapi_version", - "biolink_version" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/ComplianceTestCase", - "@type": "ClassDefinition" - }, - { - "name": "KnowledgeGraphNavigationTestCase", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/KnowledgeGraphNavigationTestCase", - "description": "Knowledge Graph navigation integration test", - "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "is_a": "ComplianceTestCase", - "slots": [ - "id", - "name", - "description", - "test_env", - "query_type", - "TestCase_test_assets", - "preconditions", - "trapi_template", - "components", - "test_case_objective", - "test_case_source", - "test_case_predicate_name", - "test_case_predicate_id", - "test_case_input_id", - "test_case_runner_settings", - "TestCase_tags", - "trapi_version", - "biolink_version" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/KnowledgeGraphNavigationTestCase", - "@type": "ClassDefinition" - }, - { - "name": "OneHopTestCase", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/OneHopTestCase", - "description": "'One Hop' Knowledge Graph navigation integration test", - "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "is_a": "KnowledgeGraphNavigationTestCase", - "slots": [ - "id", - "name", - "description", - "test_env", - "query_type", - "TestCase_test_assets", - "preconditions", - "trapi_template", - "components", - "test_case_objective", - "test_case_source", - "test_case_predicate_name", - "test_case_predicate_id", - "test_case_input_id", - "test_case_runner_settings", - "TestCase_tags", - "trapi_version", - "biolink_version" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/OneHopTestCase", - "@type": "ClassDefinition" - }, { "name": "TestSuiteSpecification", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestSuiteSpecification", @@ -2406,6 +2286,7 @@ "name", "description", "tags", + "test_runner_settings", "test_data_file_locator", "test_data_file_format" ], @@ -2424,6 +2305,7 @@ "name", "description", "tags", + "test_runner_settings", "test_metadata", "test_persona", "test_cases", @@ -2443,6 +2325,7 @@ "name", "description", "tags", + "test_runner_settings", "test_metadata", "test_persona", "test_cases", @@ -2472,6 +2355,7 @@ "name", "description", "tags", + "test_runner_settings", "test_metadata", "test_persona", "test_cases", @@ -2492,6 +2376,7 @@ "name", "description", "tags", + "test_runner_settings", "test_metadata", "test_persona", "test_cases", @@ -2501,23 +2386,6 @@ "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/OneHopTestSuite", "@type": "ClassDefinition" }, - { - "name": "TestRunnerConfiguration", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestRunnerConfiguration", - "description": "General configuration parameters and test data input for a single invocation of a TestRunner.", - "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", - "is_a": "TestEntity", - "slots": [ - "id", - "name", - "description", - "test_run_parameters", - "TestRunnerConfiguration_tags" - ], - "slot_usage": {}, - "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestRunnerConfiguration", - "@type": "ClassDefinition" - }, { "name": "TestCaseResult", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestCaseResult", @@ -2529,6 +2397,7 @@ "name", "description", "tags", + "test_runner_settings", "test_suite_id", "test_case", "test_case_result" @@ -2540,7 +2409,7 @@ { "name": "TestRunSession", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/TestRunSession", - "description": "A single invocation of a TestRunner.", + "description": "Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite).", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "is_a": "TestEntity", "slots": [ @@ -2548,7 +2417,11 @@ "name", "description", "tags", + "test_runner_settings", + "components", + "test_env", "test_runner_name", + "TestRunSession_test_run_parameters", "TestRunSession_test_entities", "test_case_results", "timestamp" @@ -2568,6 +2441,7 @@ "name", "description", "tags", + "test_runner_settings", "test_case_id", "pks" ], @@ -2586,6 +2460,7 @@ "name", "description", "tags", + "test_runner_settings", "parent_pk", "merged_pk", "aragorn", @@ -2601,9 +2476,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2024-03-04T17:20:51", - "source_file_size": 27781, - "generation_date": "2024-03-04T17:21:21", + "source_file_date": "2024-03-06T16:15:47", + "source_file_size": 26897, + "generation_date": "2024-03-06T16:19:28", "@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 bbe0a38..44b502c 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -86,13 +86,6 @@ "$ref": "#/$defs/NodeEnum", "description": "The node of the (templated) TRAPI query to replace" }, - "runner_settings": { - "description": "Settings for the test harness, e.g. \"inferred\"", - "items": { - "type": "string" - }, - "type": "array" - }, "scientific_question": { "description": "The full human-readable scientific question a SME would ask, which is encoded into the test asset.", "type": "string" @@ -122,6 +115,13 @@ "description": "Document URL where original test source particulars are registered (e.g. Github repo)", "type": "string" }, + "test_runner_settings": { + "description": "Scalar settings for the TestRunner, e.g. \"inferred\"", + "items": { + "type": "string" + }, + "type": "array" + }, "top_level": { "description": "The answer must return in these many results", "type": "integer" @@ -131,9 +131,9 @@ } }, "required": [ - "runner_settings", "test_metadata", - "id" + "id", + "test_runner_settings" ], "title": "AcceptanceTestAsset", "type": "object" @@ -142,13 +142,6 @@ "additionalProperties": false, "description": "See AcceptanceTestAsset above for more details.", "properties": { - "components": { - "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.", - "items": { - "$ref": "#/$defs/ComponentEnum" - }, - "type": "array" - }, "description": { "description": "A human-readable description for a Test Entity", "type": "string" @@ -198,20 +191,16 @@ "test_case_predicate_name": { "type": "string" }, - "test_case_runner_settings": { - "description": "Settings for the test harness for TestCase", - "items": { - "type": "string" - }, - "type": "array" - }, "test_case_source": { "$ref": "#/$defs/TestSourceEnum", "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." }, - "test_env": { - "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" }, "trapi_template": { "$ref": "#/$defs/TrapiTemplateEnum", @@ -220,8 +209,8 @@ }, "required": [ "test_assets", - "test_case_runner_settings", - "id" + "id", + "test_runner_settings" ], "title": "AcceptanceTestCase", "type": "object" @@ -264,6 +253,13 @@ "$ref": "#/$defs/TestPersonaEnum", "description": "A Test persona describes the user or operational context of a given test." }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "test_suite_specification": { "$ref": "#/$defs/TestSuiteSpecification", "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." @@ -271,7 +267,8 @@ }, "required": [ "test_metadata", - "id" + "id", + "test_runner_settings" ], "title": "AcceptanceTestSuite", "type": "object" @@ -282,102 +279,6 @@ "title": "BenchmarkTestSuite", "type": "object" }, - "ComplianceTestCase": { - "additionalProperties": false, - "description": "TRAPI and Biolink Model standards compliance test", - "properties": { - "biolink_version": { - "description": "Biolink Model release (SemVer string)", - "type": "string" - }, - "components": { - "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.", - "items": { - "$ref": "#/$defs/ComponentEnum" - }, - "type": "array" - }, - "description": { - "description": "A human-readable description for a Test Entity", - "type": "string" - }, - "id": { - "description": "A unique identifier for a Test Entity", - "type": "string" - }, - "name": { - "description": "A human-readable name for a Test Entity", - "type": "string" - }, - "preconditions": { - "items": { - "type": "string" - }, - "type": "array" - }, - "query_type": { - "$ref": "#/$defs/QueryTypeEnum", - "description": "Type of TestCase query." - }, - "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": { - "type": "string" - }, - "type": "array" - }, - "test_assets": { - "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.", - "items": { - "$ref": "#/$defs/TestAsset" - }, - "type": "array" - }, - "test_case_input_id": { - "type": "string" - }, - "test_case_objective": { - "$ref": "#/$defs/TestObjectiveEnum", - "description": "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" - }, - "test_case_predicate_id": { - "type": "string" - }, - "test_case_predicate_name": { - "type": "string" - }, - "test_case_runner_settings": { - "description": "Settings for the test harness for TestCase", - "items": { - "type": "string" - }, - "type": "array" - }, - "test_case_source": { - "$ref": "#/$defs/TestSourceEnum", - "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." - }, - "test_env": { - "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." - }, - "trapi_template": { - "$ref": "#/$defs/TrapiTemplateEnum", - "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." - }, - "trapi_version": { - "description": "TRAPI version (SemVer string)", - "type": "string" - } - }, - "required": [ - "test_assets", - "test_case_runner_settings", - "id" - ], - "title": "ComplianceTestCase", - "type": "object" - }, "ComponentEnum": { "description": "Translator components are identified by their InfoRes identifiers.", "title": "ComponentEnum", @@ -422,102 +323,6 @@ "title": "FileFormatEnum", "type": "string" }, - "KnowledgeGraphNavigationTestCase": { - "additionalProperties": false, - "description": "Knowledge Graph navigation integration test", - "properties": { - "biolink_version": { - "description": "Biolink Model release (SemVer string)", - "type": "string" - }, - "components": { - "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.", - "items": { - "$ref": "#/$defs/ComponentEnum" - }, - "type": "array" - }, - "description": { - "description": "A human-readable description for a Test Entity", - "type": "string" - }, - "id": { - "description": "A unique identifier for a Test Entity", - "type": "string" - }, - "name": { - "description": "A human-readable name for a Test Entity", - "type": "string" - }, - "preconditions": { - "items": { - "type": "string" - }, - "type": "array" - }, - "query_type": { - "$ref": "#/$defs/QueryTypeEnum", - "description": "Type of TestCase query." - }, - "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": { - "type": "string" - }, - "type": "array" - }, - "test_assets": { - "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.", - "items": { - "$ref": "#/$defs/TestAsset" - }, - "type": "array" - }, - "test_case_input_id": { - "type": "string" - }, - "test_case_objective": { - "$ref": "#/$defs/TestObjectiveEnum", - "description": "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" - }, - "test_case_predicate_id": { - "type": "string" - }, - "test_case_predicate_name": { - "type": "string" - }, - "test_case_runner_settings": { - "description": "Settings for the test harness for TestCase", - "items": { - "type": "string" - }, - "type": "array" - }, - "test_case_source": { - "$ref": "#/$defs/TestSourceEnum", - "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." - }, - "test_env": { - "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." - }, - "trapi_template": { - "$ref": "#/$defs/TrapiTemplateEnum", - "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." - }, - "trapi_version": { - "description": "TRAPI version (SemVer string)", - "type": "string" - } - }, - "required": [ - "test_assets", - "test_case_runner_settings", - "id" - ], - "title": "KnowledgeGraphNavigationTestCase", - "type": "object" - }, "NodeEnum": { "description": "Target node of a Subject-Predicate-Object driven query", "enum": [ @@ -527,102 +332,6 @@ "title": "NodeEnum", "type": "string" }, - "OneHopTestCase": { - "additionalProperties": false, - "description": "'One Hop' Knowledge Graph navigation integration test", - "properties": { - "biolink_version": { - "description": "Biolink Model release (SemVer string)", - "type": "string" - }, - "components": { - "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.", - "items": { - "$ref": "#/$defs/ComponentEnum" - }, - "type": "array" - }, - "description": { - "description": "A human-readable description for a Test Entity", - "type": "string" - }, - "id": { - "description": "A unique identifier for a Test Entity", - "type": "string" - }, - "name": { - "description": "A human-readable name for a Test Entity", - "type": "string" - }, - "preconditions": { - "items": { - "type": "string" - }, - "type": "array" - }, - "query_type": { - "$ref": "#/$defs/QueryTypeEnum", - "description": "Type of TestCase query." - }, - "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": { - "type": "string" - }, - "type": "array" - }, - "test_assets": { - "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.", - "items": { - "$ref": "#/$defs/TestAsset" - }, - "type": "array" - }, - "test_case_input_id": { - "type": "string" - }, - "test_case_objective": { - "$ref": "#/$defs/TestObjectiveEnum", - "description": "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" - }, - "test_case_predicate_id": { - "type": "string" - }, - "test_case_predicate_name": { - "type": "string" - }, - "test_case_runner_settings": { - "description": "Settings for the test harness for TestCase", - "items": { - "type": "string" - }, - "type": "array" - }, - "test_case_source": { - "$ref": "#/$defs/TestSourceEnum", - "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." - }, - "test_env": { - "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." - }, - "trapi_template": { - "$ref": "#/$defs/TrapiTemplateEnum", - "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." - }, - "trapi_version": { - "description": "TRAPI version (SemVer string)", - "type": "string" - } - }, - "required": [ - "test_assets", - "test_case_runner_settings", - "id" - ], - "title": "OneHopTestCase", - "type": "object" - }, "OneHopTestSuite": { "additionalProperties": false, "description": "Test case for testing the integrity of \"One Hop\" knowledge graph retrievals sensa legacy SRI_Testing harness.", @@ -661,6 +370,13 @@ "$ref": "#/$defs/TestPersonaEnum", "description": "A Test persona describes the user or operational context of a given test." }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "test_suite_specification": { "$ref": "#/$defs/TestSuiteSpecification", "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." @@ -668,7 +384,8 @@ }, "required": [ "test_metadata", - "id" + "id", + "test_runner_settings" ], "title": "OneHopTestSuite", "type": "object" @@ -695,10 +412,18 @@ "type": "string" }, "type": "array" + }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" } }, "required": [ - "id" + "id", + "test_runner_settings" ], "title": "Precondition", "type": "object" @@ -723,13 +448,6 @@ "additionalProperties": false, "description": "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete.", "properties": { - "components": { - "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.", - "items": { - "$ref": "#/$defs/ComponentEnum" - }, - "type": "array" - }, "description": { "description": "A human-readable description for a Test Entity", "type": "string" @@ -779,20 +497,16 @@ "test_case_predicate_name": { "type": "string" }, - "test_case_runner_settings": { - "description": "Settings for the test harness for TestCase", - "items": { - "type": "string" - }, - "type": "array" - }, "test_case_source": { "$ref": "#/$defs/TestSourceEnum", "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." }, - "test_env": { - "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" }, "trapi_template": { "$ref": "#/$defs/TrapiTemplateEnum", @@ -801,8 +515,8 @@ }, "required": [ "test_assets", - "test_case_runner_settings", - "id" + "id", + "test_runner_settings" ], "title": "QuantitativeTestCase", "type": "object" @@ -863,6 +577,13 @@ "$ref": "#/$defs/TestPersonaEnum", "description": "A Test persona describes the user or operational context of a given test." }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "test_suite_specification": { "$ref": "#/$defs/TestSuiteSpecification", "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." @@ -870,7 +591,8 @@ }, "required": [ "test_metadata", - "id" + "id", + "test_runner_settings" ], "title": "StandardsComplianceTestSuite", "type": "object" @@ -932,13 +654,6 @@ }, "type": "array" }, - "runner_settings": { - "description": "Settings for the test harness, e.g. \"inferred\"", - "items": { - "type": "string" - }, - "type": "array" - }, "semantic_severity": { "$ref": "#/$defs/SemanticSeverityEnum" }, @@ -960,14 +675,21 @@ "description": "Document URL where original test source particulars are registered (e.g. Github repo)", "type": "string" }, + "test_runner_settings": { + "description": "Scalar settings for the TestRunner, e.g. \"inferred\"", + "items": { + "type": "string" + }, + "type": "array" + }, "well_known": { "type": "boolean" } }, "required": [ - "runner_settings", "test_metadata", - "id" + "id", + "test_runner_settings" ], "title": "TestAsset", "type": "object" @@ -976,13 +698,6 @@ "additionalProperties": false, "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.", "properties": { - "components": { - "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.", - "items": { - "$ref": "#/$defs/ComponentEnum" - }, - "type": "array" - }, "description": { "description": "A human-readable description for a Test Entity", "type": "string" @@ -1032,20 +747,16 @@ "test_case_predicate_name": { "type": "string" }, - "test_case_runner_settings": { - "description": "Settings for the test harness for TestCase", - "items": { - "type": "string" - }, - "type": "array" - }, "test_case_source": { "$ref": "#/$defs/TestSourceEnum", "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." }, - "test_env": { - "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" }, "trapi_template": { "$ref": "#/$defs/TrapiTemplateEnum", @@ -1054,8 +765,8 @@ }, "required": [ "test_assets", - "test_case_runner_settings", - "id" + "id", + "test_runner_settings" ], "title": "TestCase", "type": "object" @@ -1091,13 +802,21 @@ "$ref": "#/$defs/TestCaseResultEnum", "description": "Encoded result of a single test run of a given test case" }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "test_suite_id": { "description": "CURIE id of a TestSuite registered in the system.", "type": "string" } }, "required": [ - "id" + "id", + "test_runner_settings" ], "title": "TestCaseResult", "type": "object" @@ -1143,12 +862,21 @@ "$ref": "#/$defs/TestCaseResultEnum", "description": "Encoded result of a single test run of a given test case" }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "test_suite_id": { "description": "CURIE id of a TestSuite registered in the system.", "type": "string" } }, - "required": [], + "required": [ + "test_runner_settings" + ], "title": "TestCaseResult", "type": "object" }, @@ -1156,13 +884,6 @@ "additionalProperties": false, "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.", "properties": { - "components": { - "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.", - "items": { - "$ref": "#/$defs/ComponentEnum" - }, - "type": "array" - }, "description": { "description": "A human-readable description for a Test Entity", "type": "string" @@ -1212,20 +933,16 @@ "test_case_predicate_name": { "type": "string" }, - "test_case_runner_settings": { - "description": "Settings for the test harness for TestCase", - "items": { - "type": "string" - }, - "type": "array" - }, "test_case_source": { "$ref": "#/$defs/TestSourceEnum", "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." }, - "test_env": { - "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" }, "trapi_template": { "$ref": "#/$defs/TrapiTemplateEnum", @@ -1234,7 +951,7 @@ }, "required": [ "test_assets", - "test_case_runner_settings" + "test_runner_settings" ], "title": "TestCase", "type": "object" @@ -1296,13 +1013,6 @@ }, "type": "array" }, - "runner_settings": { - "description": "Settings for the test harness, e.g. \"inferred\"", - "items": { - "type": "string" - }, - "type": "array" - }, "semantic_severity": { "$ref": "#/$defs/SemanticSeverityEnum" }, @@ -1324,14 +1034,21 @@ "description": "Document URL where original test source particulars are registered (e.g. Github repo)", "type": "string" }, + "test_runner_settings": { + "description": "Scalar settings for the TestRunner, e.g. \"inferred\"", + "items": { + "type": "string" + }, + "type": "array" + }, "well_known": { "type": "boolean" } }, "required": [ - "runner_settings", "test_metadata", - "id" + "id", + "test_runner_settings" ], "title": "TestEdgeData", "type": "object" @@ -1414,13 +1131,21 @@ "description": "Document URL where original test source particulars are registered (e.g. Github repo)", "type": "string" }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "test_source": { "$ref": "#/$defs/TestSourceEnum", "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." } }, "required": [ - "id" + "id", + "test_runner_settings" ], "title": "TestMetadata", "type": "object" @@ -1470,10 +1195,18 @@ "test_case_id": { "description": "CURIE id of a TestCase registered in the system.", "type": "string" + }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" } }, "required": [ - "id" + "id", + "test_runner_settings" ], "title": "TestOutput", "type": "object" @@ -1530,20 +1263,35 @@ }, "type": "array" }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "unsecret": { "type": "string" } }, "required": [ - "id" + "id", + "test_runner_settings" ], "title": "TestResultPKSet", "type": "object" }, "TestRunSession": { "additionalProperties": false, - "description": "A single invocation of a TestRunner.", + "description": "Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite).", "properties": { + "components": { + "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.", + "items": { + "$ref": "#/$defs/ComponentEnum" + }, + "type": "array" + }, "description": { "description": "A human-readable description for a Test Entity", "type": "string" @@ -1565,83 +1313,51 @@ }, "test_case_results": { "additionalProperties": { - "anyOf": [ - { - "$ref": "#/$defs/TestCaseResult__identifier_optional" - }, - { - "type": "null" - } - ] + "$ref": "#/$defs/TestCaseResult__identifier_optional" }, "description": "One or more instances of TestCaseResult.", "type": "object" }, "test_entities": { "additionalProperties": { - "anyOf": [ - { - "$ref": "#/$defs/TestEntity__identifier_optional" - }, - { - "type": "null" - } - ] + "$ref": "#/$defs/TestEntity__identifier_optional" }, - "description": "Different TestRunners may expect specific kinds of TestEntity as input. These 'test_entities' one or more instances of TestAsset, TestCase or TestSuite.", + "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.", "type": "object" }, - "test_runner_name": { - "description": "Global system name of a TestRunner.", - "type": "string" - }, - "timestamp": { - "description": "Date time when a given entity was created.", - "format": "date-time", - "type": "string" - } - }, - "required": [ - "id" - ], - "title": "TestRunSession", - "type": "object" - }, - "TestRunnerConfiguration": { - "additionalProperties": false, - "description": "General configuration parameters and test data input for a single invocation of a TestRunner.", - "properties": { - "description": { - "description": "A human-readable description for a Test Entity", - "type": "string" + "test_env": { + "$ref": "#/$defs/TestEnvEnum", + "description": "Deployment environment within which the associated TestSuite is run." }, - "id": { - "description": "A unique identifier for a Test Entity", - "type": "string" + "test_run_parameters": { + "description": "Different TestRunners could expect additional global test configuration parameters, like the applicable TRAPI version (\"trapi_version\") or Biolink Model versions (\"biolink_version\").", + "items": { + "$ref": "#/$defs/TestEntityParameter" + }, + "type": "array" }, - "name": { - "description": "A human-readable name for a Test Entity", + "test_runner_name": { + "description": "Global system name of a TestRunner.", "type": "string" }, - "tags": { - "description": "One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration.", + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", "items": { "type": "string" }, "type": "array" }, - "test_run_parameters": { - "description": "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run.", - "items": { - "$ref": "#/$defs/TestEntityParameter" - }, - "type": "array" + "timestamp": { + "description": "Date time when a given entity was created.", + "format": "date-time", + "type": "string" } }, "required": [ - "id" + "id", + "test_runner_settings" ], - "title": "TestRunnerConfiguration", + "title": "TestRunSession", "type": "object" }, "TestSourceEnum": { @@ -1696,6 +1412,13 @@ "$ref": "#/$defs/TestPersonaEnum", "description": "A Test persona describes the user or operational context of a given test." }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" + }, "test_suite_specification": { "$ref": "#/$defs/TestSuiteSpecification", "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." @@ -1703,7 +1426,8 @@ }, "required": [ "test_metadata", - "id" + "id", + "test_runner_settings" ], "title": "TestSuite", "type": "object" @@ -1738,10 +1462,18 @@ "test_data_file_locator": { "description": "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)", "type": "string" + }, + "test_runner_settings": { + "description": "Scalar parameters for the TestRunner processing a given TestEntity.", + "items": { + "type": "string" + }, + "type": "array" } }, "required": [ - "id" + "id", + "test_runner_settings" ], "title": "TestSuiteSpecification", "type": "object" diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index 4ff1b21..4223828 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -33,13 +33,6 @@ ttm:BenchmarkTestSuite a owl:Class, skos:definition "JsonObj(is_a='TestSuite')" ; skos:inScheme . -ttm:OneHopTestCase a owl:Class, - linkml:ClassDefinition ; - rdfs:label "OneHopTestCase" ; - rdfs:subClassOf ttm:KnowledgeGraphNavigationTestCase ; - skos:definition "'One Hop' Knowledge Graph navigation integration test" ; - skos:inScheme . - ttm:OneHopTestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "OneHopTestSuite" ; @@ -72,59 +65,67 @@ ttm:TestRunSession a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunSession" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_name ], + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_name ], + owl:allValuesFrom linkml:Datetime ; + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_run_parameters ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:allValuesFrom owl:Thing ; owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_results ], + owl:onProperty ttm:test_entities ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResult ; - owl:onProperty ttm:test_case_results ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_entities ], + owl:onProperty ttm:components ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty ttm:timestamp ], + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:timestamp ], - ttm:TestEntity ; - skos:definition "A single invocation of a TestRunner." ; - skos:inScheme . - -ttm:TestRunnerConfiguration a owl:Class, - linkml:ClassDefinition ; - rdfs:label "TestRunnerConfiguration" ; - rdfs:subClassOf [ a owl:Restriction ; + owl:onProperty ttm:test_run_parameters ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_run_parameters ], + owl:allValuesFrom ttm:TestCaseResult ; + owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_run_parameters ], + owl:maxCardinality 1 ; + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_run_parameters ], + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_name ], ttm:TestEntity ; - skos:definition "General configuration parameters and test data input for a single invocation of a TestRunner." ; + 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 . + +ttm:biolink_version a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "biolink_version" ; + skos:definition "Biolink Model release (SemVer string)" ; skos:inScheme . ttm:results a owl:ObjectProperty, @@ -134,133 +135,107 @@ ttm:results a owl:ObjectProperty, skos:definition "The results of a TestRunner run of one specific TestCase." ; skos:inScheme . +ttm:trapi_version a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "trapi_version" ; + skos:definition "TRAPI version (SemVer string)" ; + skos:inScheme . + ttm:AcceptanceTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; + owl:minCardinality 0 ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:direction ], + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_date ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:scientific_question ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:answer_informal_concept ], + owl:onProperty ttm:direction ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_environment ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:query_node ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_date ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:allValuesFrom ttm:ExpectedResultsEnum ; owl:onProperty ttm:expected_result ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:notes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:scientific_question ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:query_node ], + owl:maxCardinality 1 ; + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:expected_result ], + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:notes ], + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:allValuesFrom ttm:NodeEnum ; - owl:onProperty ttm:query_node ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_result ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:answer_informal_concept ], + owl:onProperty ttm:query_node ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:notes ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ttm:top_level ], + owl:minCardinality 0 ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty ttm:answer_informal_concept ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:string_entry ], + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:scientific_question ], + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:allValuesFrom ttm:DirectionEnum ; owl:onProperty ttm:direction ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:notes ], - ttm:TestAsset ; - skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; - skos:inScheme . - -ttm:ComplianceTestCase a owl:Class, - linkml:ClassDefinition ; - rdfs:label "ComplianceTestCase" ; - rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:biolink_version ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:trapi_version ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:biolink_version ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:trapi_version ], + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_version ], + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:biolink_version ], - ttm:TestCase ; - skos:definition "TRAPI and Biolink Model standards compliance test" ; - skos:inScheme . - -ttm:KnowledgeGraphNavigationTestCase a owl:Class, - linkml:ClassDefinition ; - rdfs:label "KnowledgeGraphNavigationTestCase" ; - rdfs:subClassOf ttm:ComplianceTestCase ; - skos:definition "Knowledge Graph navigation integration test" ; + owl:allValuesFrom ttm:NodeEnum ; + owl:onProperty ttm:query_node ], + ttm:TestAsset ; + skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; skos:inScheme . a owl:Class, @@ -272,19 +247,19 @@ ttm:TestOutput a owl:Class, linkml:ClassDefinition ; rdfs:label "TestOutput" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_id ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestResultPKSet ; + owl:minCardinality 0 ; owl:onProperty ttm:pks ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestResultPKSet ; owl:onProperty ttm:pks ], ttm:TestEntity ; skos:definition "The output of a TestRunner run of one specific TestCase." ; @@ -369,13 +344,13 @@ ttm:Qualifier a owl:Class, linkml:ClassDefinition ; rdfs:label "Qualifier" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:minCardinality 0 ; @@ -384,7 +359,7 @@ ttm:Qualifier a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:value ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:value ], ttm:TestEntityParameter ; skos:inScheme . @@ -409,30 +384,30 @@ ttm:TestCaseResult a owl:Class, rdfs:label "TestCaseResult" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_result ], + owl:onProperty ttm:test_case ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_id ], + owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCase ; owl:onProperty ttm:test_case ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResultEnum ; - 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_case ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:allValuesFrom ttm:TestCaseResultEnum ; + owl:onProperty ttm:test_case_result ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_suite_id ], ttm:TestEntity ; skos:definition "The outcome of a TestRunner run of one specific TestCase." ; @@ -457,23 +432,23 @@ ttm:TestEntityParameter a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntityParameter" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - 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 ] ; + owl:onProperty ttm:parameter ] ; skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; skos:inScheme . @@ -576,68 +551,68 @@ ttm:TestResultPKSet a owl:Class, linkml:ClassDefinition ; rdfs:label "TestResultPKSet" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:improving ], + [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:parent_pk ], + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:unsecret ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:merged_pk ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty ttm:merged_pk ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:bte ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:bte ], + owl:maxCardinality 1 ; + owl:onProperty ttm:arax ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:improving ], + owl:maxCardinality 1 ; + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:merged_pk ], + owl:maxCardinality 1 ; + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:arax ], + owl:minCardinality 0 ; + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:unsecret ], ttm:TestEntity ; skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . @@ -677,14 +652,11 @@ ttm:TestSuiteSpecification a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuiteSpecification" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_format ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_data_file_locator ], @@ -694,6 +666,9 @@ ttm:TestSuiteSpecification a owl:Class, [ a owl:Restriction ; owl:allValuesFrom ttm:FileFormatEnum ; owl:onProperty ttm:test_data_file_format ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + 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 . @@ -762,14 +737,6 @@ ttm:qualifiers a owl:ObjectProperty, skos:definition "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." ; skos:inScheme . -ttm:runner_settings a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "runner_settings" ; - rdfs:range linkml:String ; - skos:altLabel "Settings" ; - skos:definition "Settings for the test harness for TestAsset" ; - skos:inScheme . - ttm:test_case_results a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "test_case_results" ; @@ -777,14 +744,6 @@ ttm:test_case_results a owl:ObjectProperty, skos:definition "One or more instances of TestCaseResult." ; skos:inScheme . -ttm:test_case_runner_settings a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_case_runner_settings" ; - rdfs:range linkml:String ; - skos:altLabel "Settings" ; - skos:definition "Settings for the test harness for TestCase" ; - skos:inScheme . - ttm:test_cases a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "test_cases" ; @@ -803,117 +762,108 @@ ttm:test_entity_parameters a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "test_entity_parameters" ; rdfs:range ttm:TestEntityParameter ; - skos:definition "One or more parameters documenting target characteristics of a TestEntity." ; + skos:definition "One or more 'tag = value' parameters documenting target characteristics of a TestEntity." ; skos:inScheme . ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:semantic_severity ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:allValuesFrom ttm:association_category ; - owl:onProperty ttm:association ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:well_known ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:well_known ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:semantic_severity ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:allValuesFrom ttm:predicate_type ; owl:onProperty ttm:predicate_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:runner_settings ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:input_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:output_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:output_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:association_category ; + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:well_known ], + owl:allValuesFrom ttm:TestIssueEnum ; + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_issue ], + owl:minCardinality 0 ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], + owl:minCardinality 0 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:runner_settings ], + owl:maxCardinality 1 ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_name ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:input_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:predicate_id ], @@ -921,65 +871,74 @@ ttm:TestAsset a owl:Class, owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], + owl:maxCardinality 1 ; + owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestIssueEnum ; - owl:onProperty ttm:test_issue ], + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:maxCardinality 1 ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:output_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:in_v1 ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:maxCardinality 1 ; + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:output_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_name ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:input_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:output_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:SemanticSeverityEnum ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:output_category ], 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 . @@ -989,40 +948,40 @@ ttm:TestMetadata a owl:Class, rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_source ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_objective ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_annotations ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_annotations ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_source ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:test_objective ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_source ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_annotations ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_source ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], ttm:TestEntity ; skos:definition "Represents metadata related to (external SME, SMURF, Translator feedback, large scale batch, etc.) like the provenance of test assets, cases and/or suites." ; skos:inScheme . @@ -1036,38 +995,38 @@ ttm:TestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuite" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_specification ], + owl:allValuesFrom ttm:TestPersonaEnum ; + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCase ; owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_persona ], + owl:allValuesFrom ttm:TestSuiteSpecification ; + 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_suite_specification ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestPersonaEnum ; - owl:onProperty ttm:test_persona ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; + owl:minCardinality 1 ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_persona ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSuiteSpecification ; - owl:onProperty ttm:test_suite_specification ], + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], 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 . @@ -1096,12 +1055,6 @@ ttm:association a owl:ObjectProperty, skos:definition "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; skos:inScheme . -ttm:biolink_version a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "biolink_version" ; - skos:definition "Biolink Model release (SemVer string)" ; - skos:inScheme . - ttm:bte a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "bte" ; @@ -1385,7 +1338,7 @@ ttm:test_run_parameters a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "test_run_parameters" ; rdfs:subPropertyOf ttm:test_entity_parameters ; - skos:definition "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run." ; + skos:definition "TestRunSession parameters informing a TestHarness about the global characteristics of TestRunner processing tests." ; skos:inScheme . ttm:test_runner_name a owl:ObjectProperty, @@ -1436,12 +1389,6 @@ ttm:trapi_template a owl:ObjectProperty, skos:definition "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." ; skos:inScheme . -ttm:trapi_version a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "trapi_version" ; - skos:definition "TRAPI version (SemVer string)" ; - skos:inScheme . - ttm:unsecret a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "unsecret" ; @@ -1469,6 +1416,14 @@ ttm:test_assets a owl:ObjectProperty, skos:definition "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)." ; skos:inScheme . +ttm:test_runner_settings a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_runner_settings" ; + rdfs:range linkml:String ; + skos:altLabel "Settings" ; + skos:definition "Scalar parameters for the TestRunner processing a given TestEntity." ; + skos:inScheme . + ttm:DirectionEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -1487,149 +1442,134 @@ ttm:NodeEnum a owl:Class, linkml:permissible_values , . -ttm:id a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "id" ; - rdfs:range linkml:Uriorcurie ; - skos:definition "A unique identifier for a Test Entity" ; - skos:inScheme . - -ttm:parameter a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "parameter" ; - skos:definition "Name of a TestParameter." ; - skos:inScheme . - -ttm:test_metadata a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_metadata" ; - rdfs:range ttm:TestMetadata ; - skos:definition "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - skos:inScheme . - -ttm:test_reference a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "test_reference" ; - rdfs:range linkml:Uriorcurie ; - skos:altLabel "GitHubIssue" ; - skos:definition "Document URL where original test source particulars are registered (e.g. Github repo)" ; - skos:inScheme . - -ttm:value a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "value" ; - skos:definition "(String) value of a TestParameter." ; - skos:inScheme . - ttm:TestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_case_objective ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Precondition ; + owl:minCardinality 0 ; owl:onProperty ttm:preconditions ], [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty ttm:test_assets ], + owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_input_id ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], + owl:minCardinality 0 ; + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_case_runner_settings ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_case_predicate_name ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:QueryTypeEnum ; - owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_runner_settings ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:preconditions ], + owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom owl:Thing ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_type ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_case_source ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TrapiTemplateEnum ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_source ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:TestSourceEnum ; owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_env ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_template ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:components ], + owl:onProperty ttm:query_type ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:QueryTypeEnum ; owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_case_input_id ], + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:query_type ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_case_input_id ], ttm:TestEntity ; skos:definition "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; skos:inScheme . +ttm:id a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "id" ; + rdfs:range linkml:Uriorcurie ; + skos:definition "A unique identifier for a Test Entity" ; + skos:inScheme . + +ttm:parameter a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "parameter" ; + skos:definition "Name of a TestParameter." ; + skos:inScheme . + +ttm:tags a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "tags" ; + skos:definition "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." ; + skos:inScheme . + +ttm:test_metadata a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_metadata" ; + rdfs:range ttm:TestMetadata ; + skos:definition "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + skos:inScheme . + +ttm:test_reference a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_reference" ; + rdfs:range linkml:Uriorcurie ; + skos:altLabel "GitHubIssue" ; + skos:definition "Document URL where original test source particulars are registered (e.g. Github repo)" ; + skos:inScheme . + +ttm:value a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "value" ; + skos:definition "(String) value of a TestParameter." ; + skos:inScheme . + ttm:ExpectedOutputEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -1659,12 +1599,6 @@ ttm:TestCaseResultEnum a owl:Class, , . -ttm:tags a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "tags" ; - skos:definition "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." ; - skos:inScheme . - ttm:TestPersonaEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -1677,38 +1611,44 @@ ttm:TestEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:description ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:name ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:description ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:description ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:description ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:name ], + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ] ; + owl:onProperty ttm:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:name ] ; skos:definition "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; skos:inScheme . diff --git a/project/protobuf/translator_testing_model.proto b/project/protobuf/translator_testing_model.proto index be61a78..dcd3cb8 100644 --- a/project/protobuf/translator_testing_model.proto +++ b/project/protobuf/translator_testing_model.proto @@ -19,10 +19,10 @@ message AcceptanceTestAsset boolean inV1 = 0 boolean wellKnown = 0 uriorcurie testReference = 0 - repeated string runnerSettings = 0 testMetadata testMetadata = 0 uriorcurie id = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 date mustPassDate = 0 testEnvEnum mustPassEnvironment = 0 string scientificQuestion = 0 @@ -40,17 +40,15 @@ message AcceptanceTestCase uriorcurie id = 0 string name = 0 string description = 0 - testEnvEnum testEnv = 0 + repeated string testRunnerSettings = 0 queryTypeEnum queryType = 0 repeated precondition preconditions = 0 trapiTemplateEnum trapiTemplate = 0 - repeated componentEnum components = 0 testObjectiveEnum testCaseObjective = 0 testSourceEnum testCaseSource = 0 string testCasePredicateName = 0 string testCasePredicateId = 0 uriorcurie testCaseInputId = 0 - repeated string testCaseRunnerSettings = 0 repeated string tags = 0 repeated acceptanceTestAsset testAssets = 0 } @@ -60,77 +58,12 @@ message AcceptanceTestSuite string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 testMetadata testMetadata = 0 testPersonaEnum testPersona = 0 repeated testCase testCases = 0 testSuiteSpecification testSuiteSpecification = 0 } -// TRAPI and Biolink Model standards compliance test -message ComplianceTestCase - { - uriorcurie id = 0 - string name = 0 - string description = 0 - testEnvEnum testEnv = 0 - queryTypeEnum queryType = 0 - repeated testAsset testAssets = 0 - repeated precondition preconditions = 0 - trapiTemplateEnum trapiTemplate = 0 - repeated componentEnum components = 0 - testObjectiveEnum testCaseObjective = 0 - testSourceEnum testCaseSource = 0 - string testCasePredicateName = 0 - string testCasePredicateId = 0 - uriorcurie testCaseInputId = 0 - repeated string testCaseRunnerSettings = 0 - repeated string tags = 0 - string trapiVersion = 0 - string biolinkVersion = 0 - } -// Knowledge Graph navigation integration test -message KnowledgeGraphNavigationTestCase - { - uriorcurie id = 0 - string name = 0 - string description = 0 - testEnvEnum testEnv = 0 - queryTypeEnum queryType = 0 - repeated testAsset testAssets = 0 - repeated precondition preconditions = 0 - trapiTemplateEnum trapiTemplate = 0 - repeated componentEnum components = 0 - testObjectiveEnum testCaseObjective = 0 - testSourceEnum testCaseSource = 0 - string testCasePredicateName = 0 - string testCasePredicateId = 0 - uriorcurie testCaseInputId = 0 - repeated string testCaseRunnerSettings = 0 - repeated string tags = 0 - string trapiVersion = 0 - string biolinkVersion = 0 - } -// 'One Hop' Knowledge Graph navigation integration test -message OneHopTestCase - { - uriorcurie id = 0 - string name = 0 - string description = 0 - testEnvEnum testEnv = 0 - queryTypeEnum queryType = 0 - repeated testAsset testAssets = 0 - repeated precondition preconditions = 0 - trapiTemplateEnum trapiTemplate = 0 - repeated componentEnum components = 0 - testObjectiveEnum testCaseObjective = 0 - testSourceEnum testCaseSource = 0 - string testCasePredicateName = 0 - string testCasePredicateId = 0 - uriorcurie testCaseInputId = 0 - repeated string testCaseRunnerSettings = 0 - repeated string tags = 0 - string trapiVersion = 0 - string biolinkVersion = 0 - } // Test case for testing the integrity of "One Hop" knowledge graph retrievals sensa legacy SRI_Testing harness. message OneHopTestSuite { @@ -138,6 +71,7 @@ message OneHopTestSuite string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 testMetadata testMetadata = 0 testPersonaEnum testPersona = 0 repeated testCase testCases = 0 @@ -150,6 +84,7 @@ message Precondition string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 } message Qualifier { @@ -162,18 +97,16 @@ message QuantitativeTestCase uriorcurie id = 0 string name = 0 string description = 0 - testEnvEnum testEnv = 0 + repeated string testRunnerSettings = 0 queryTypeEnum queryType = 0 repeated testAsset testAssets = 0 repeated precondition preconditions = 0 trapiTemplateEnum trapiTemplate = 0 - repeated componentEnum components = 0 testObjectiveEnum testCaseObjective = 0 testSourceEnum testCaseSource = 0 string testCasePredicateName = 0 string testCasePredicateId = 0 uriorcurie testCaseInputId = 0 - repeated string testCaseRunnerSettings = 0 repeated string tags = 0 } // Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model. @@ -183,6 +116,7 @@ message StandardsComplianceTestSuite string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 testMetadata testMetadata = 0 testPersonaEnum testPersona = 0 repeated testCase testCases = 0 @@ -209,10 +143,10 @@ message TestAsset boolean inV1 = 0 boolean wellKnown = 0 uriorcurie testReference = 0 - repeated string runnerSettings = 0 testMetadata testMetadata = 0 uriorcurie id = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 } // 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. message TestCase @@ -220,18 +154,16 @@ message TestCase uriorcurie id = 0 string name = 0 string description = 0 - testEnvEnum testEnv = 0 + repeated string testRunnerSettings = 0 queryTypeEnum queryType = 0 repeated testAsset testAssets = 0 repeated precondition preconditions = 0 trapiTemplateEnum trapiTemplate = 0 - repeated componentEnum components = 0 testObjectiveEnum testCaseObjective = 0 testSourceEnum testCaseSource = 0 string testCasePredicateName = 0 string testCasePredicateId = 0 uriorcurie testCaseInputId = 0 - repeated string testCaseRunnerSettings = 0 repeated string tags = 0 } // The outcome of a TestRunner run of one specific TestCase. @@ -241,6 +173,7 @@ message TestCaseResult string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 uriorcurie testSuiteId = 0 testCase testCase = 0 testCaseResultEnum testCaseResult = 0 @@ -266,10 +199,10 @@ message TestEdgeData boolean inV1 = 0 boolean wellKnown = 0 uriorcurie testReference = 0 - repeated string runnerSettings = 0 testMetadata testMetadata = 0 uriorcurie id = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 } // A single 'tag = value' pair (where 'value' is a simple string). message TestEntityParameter @@ -284,6 +217,7 @@ message TestMetadata string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 testSourceEnum testSource = 0 uriorcurie testReference = 0 testObjectiveEnum testObjective = 0 @@ -296,6 +230,7 @@ message TestOutput string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 string testCaseId = 0 repeated testResultPKSet pks = 0 } @@ -306,6 +241,7 @@ message TestResultPKSet string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 string parentPk = 0 string mergedPk = 0 string aragorn = 0 @@ -314,23 +250,18 @@ message TestResultPKSet string bte = 0 string improving = 0 } -// General configuration parameters and test data input for a single invocation of a TestRunner. -message TestRunnerConfiguration - { - uriorcurie id = 0 - string name = 0 - string description = 0 - repeated testEntityParameter testRunParameters = 0 - repeated string tags = 0 - } -// A single invocation of a TestRunner. +// Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite). message TestRunSession { uriorcurie id = 0 string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 + repeated componentEnum components = 0 + testEnvEnum testEnv = 0 string testRunnerName = 0 + repeated testEntityParameter testRunParameters = 0 repeated testEntity testEntities = 0 repeated testCaseResult testCaseResults = 0 datetime timestamp = 0 @@ -342,6 +273,7 @@ message TestSuite string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 testMetadata testMetadata = 0 testPersonaEnum testPersona = 0 repeated testCase testCases = 0 @@ -354,6 +286,7 @@ message TestSuiteSpecification string name = 0 string description = 0 repeated string tags = 0 + repeated string testRunnerSettings = 0 uriorcurie testDataFileLocator = 0 fileFormatEnum testDataFileFormat = 0 } diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index 04bea44..78b5085 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -8,106 +8,102 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; + sh:property [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], - [ 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 1 ; - sh:path ttm:query_type ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], + sh:order 13 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ sh:maxCount 1 ; sh:order 10 ; + sh:path schema1:name ], + [ sh:class ttm:AcceptanceTestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path ttm:test_assets ], + [ sh:maxCount 1 ; + sh:order 8 ; sh:path ttm:test_case_input_id ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 6 ; + sh:order 4 ; sh:path ttm:test_case_objective ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; + sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:test_case_source ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:trapi_template ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 13 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; sh:order 11 ; - sh:path ttm:test_case_runner_settings ], + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 8 ; + sh:order 6 ; sh:path ttm:test_case_predicate_name ], [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], - [ 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 2 ; - sh:path ttm:test_assets ], - [ 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 4 ; - sh:path ttm:trapi_template ], + 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 15 ; + sh:order 12 ; sh:path schema1:additionalType ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; - sh:order 5 ; - sh:path ttm:components ] ; + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:query_type ] ; sh:targetClass ttm:AcceptanceTestCase . ttm:AcceptanceTestSuite a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:TestSuiteSpecification ; - sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], + sh:property [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + 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:class ttm:TestCase ; - sh:description "List of explicitly enumerated 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: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 2 ; - sh:path ttm:test_cases ], + 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:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -119,16 +115,16 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 7 ; sh:path schema1:additionalType ], - [ sh: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:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_cases ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ] ; + sh:order 6 ; + sh:path schema1:description ] ; sh:targetClass ttm:AcceptanceTestSuite . ttm:BenchmarkTestSuite a sh:NodeShape ; @@ -137,413 +133,163 @@ ttm:BenchmarkTestSuite a sh:NodeShape ; sh:ignoredProperties ( rdf:type ) ; sh:targetClass ttm:BenchmarkTestSuite . -ttm:ComplianceTestCase a sh:NodeShape ; +ttm:OneHopTestSuite a sh:NodeShape ; sh:closed true ; - sh:description "TRAPI and Biolink Model standards compliance test" ; + 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:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:minCount 1 ; - sh:order 13 ; - sh:path ttm:test_case_runner_settings ], + 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 15 ; + sh:order 5 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "TRAPI version (SemVer string)" ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:trapi_version ], + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "Biolink Model release (SemVer string)" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:biolink_version ], - [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:test_case_input_id ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_env ], - [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; - sh:path ttm:trapi_template ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; + 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:query_type ], - [ 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:path ttm:test_suite_specification ], + [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path ttm:test_assets ], + sh:order 2 ; + sh:path ttm:test_cases ], + [ 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:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; - sh:order 16 ; - sh:path schema1:description ], - [ 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:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ] ; + sh:targetClass ttm:OneHopTestSuite . + +ttm:QuantitativeTestCase a sh:NodeShape ; + sh:closed true ; + sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_source ], + sh:order 0 ; + sh:path ttm:query_type ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 10 ; + sh:order 6 ; sh:path ttm:test_case_predicate_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 [ rdf:rest () ] ; - sh:order 7 ; - sh:path ttm:components ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 14 ; + sh:order 9 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 8 ; + sh:order 4 ; sh:path ttm:test_case_objective ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 11 ; + sh:order 7 ; sh:path ttm:test_case_predicate_id ], - [ sh:class ttm:Precondition ; + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + sh:order 13 ; + sh:path ttm:test_runner_settings ], + [ 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 5 ; - sh:path ttm:preconditions ] ; - sh:targetClass ttm:ComplianceTestCase . - -ttm:KnowledgeGraphNavigationTestCase a sh:NodeShape ; - sh:closed true ; - sh:description "Knowledge Graph navigation integration test" ; - sh:ignoredProperties ( rdf:type ) ; - 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:order 1 ; + sh:path ttm:test_assets ], + [ 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 9 ; - sh:path ttm:test_case_source ], + sh:order 3 ; + sh:path ttm:trapi_template ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 15 ; + sh:order 10 ; sh:path schema1:name ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_env ], - [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; - sh:order 7 ; - sh:path ttm:components ], - [ sh:datatype xsd:string ; + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 11 ; - sh:path ttm:test_case_predicate_id ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:query_type ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 10 ; - 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 6 ; - sh:path ttm:trapi_template ], - [ 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 4 ; - sh:path ttm:test_assets ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_objective ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path ttm:preconditions ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 13 ; - sh:path ttm:test_case_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "TRAPI version (SemVer string)" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:trapi_version ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 16 ; sh:path schema1:description ], - [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:description "Biolink Model release (SemVer string)" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:biolink_version ] ; - sh:targetClass ttm:KnowledgeGraphNavigationTestCase . - -ttm:OneHopTestCase a sh:NodeShape ; - sh:closed true ; - sh:description "'One Hop' Knowledge Graph navigation integration test" ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 5 ; - sh:path ttm:preconditions ], [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; + sh:order 12 ; sh:path schema1:additionalType ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 3 ; - 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 9 ; - sh:path ttm:test_case_source ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 8 ; - 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 [ rdf:rest () ] ; - sh:order 7 ; - sh:path ttm:components ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_predicate_name ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 13 ; - sh:path ttm:test_case_runner_settings ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], - [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:trapi_template ], [ sh:maxCount 1 ; - sh:order 12 ; + sh:order 8 ; sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:name ], - [ sh: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 4 ; - sh:path ttm:test_assets ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_predicate_id ], - [ sh:datatype xsd:string ; - sh:description "Biolink Model release (SemVer string)" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:biolink_version ], - [ sh:datatype xsd:string ; - sh:description "TRAPI version (SemVer string)" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:trapi_version ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 16 ; - sh:path schema1:description ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + [ 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 2 ; - sh:path ttm:test_env ] ; - sh:targetClass ttm:OneHopTestCase . + sh:order 5 ; + sh:path ttm:test_case_source ] ; + sh:targetClass ttm:QuantitativeTestCase . -ttm:OneHopTestSuite a sh:NodeShape ; +ttm:StandardsComplianceTestSuite 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:description "Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + 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 "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:class ttm:TestSuiteSpecification ; - sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], [ 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: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:targetClass ttm:OneHopTestSuite . - -ttm:QuantitativeTestCase a sh:NodeShape ; - sh:closed true ; - sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; - sh:order 5 ; - sh:path ttm:components ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_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:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_runner_settings ], - [ 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 4 ; - sh:path ttm:trapi_template ], - [ 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 15 ; sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_objective ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 12 ; + sh:order 4 ; sh:path schema1:identifier ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_assets ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:query_type ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], [ 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: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: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 ; @@ -551,279 +297,249 @@ ttm:StandardsComplianceTestSuite a sh:NodeShape ; 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:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - 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 unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ], - [ sh:datatype xsd:string ; - sh:description "A human-readable 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:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:test_cases ] ; 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: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:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 20 ; - sh:path schema1:description ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 16 ; - sh:path ttm:runner_settings ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path ttm:test_metadata ], + sh:property [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 10 ; sh:path ttm:expected_output ], - [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], + sh:order 18 ; + sh:path schema1:name ], [ sh:maxCount 1 ; sh:order 5 ; sh:path ttm:output_id ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - 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 15 ; - sh:path ttm:test_reference ], - [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 21 ; - sh:path schema1:additionalType ], + sh:order 19 ; + sh:path schema1:description ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 18 ; + sh:order 17 ; sh:path schema1:identifier ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ 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: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:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:name ], + sh:order 6 ; + 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 15 ; + sh:path ttm:test_reference ], [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], + sh:order 7 ; + sh:path ttm:output_category ], [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; sh:order 8 ; sh:path ttm:association ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:in_v1 ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:predicate_name ], + [ 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:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:input_name ], [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; sh:order 12 ; - sh:path ttm:semantic_severity ] ; + sh:path ttm:semantic_severity ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:minCount 1 ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path ttm:test_metadata ] ; sh:targetClass ttm:TestEdgeData . ttm:TestOutput a sh:NodeShape ; sh:closed true ; sh:description "The output of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; + sh:property [ 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 "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:class ttm:TestResultPKSet ; - sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:pks ], - [ sh:datatype xsd:string ; - sh:description "CURIE id of a TestCase registered in the system." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_case_id ], - [ sh: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 "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ] ; - sh:targetClass ttm:TestOutput . - -ttm:TestRunSession a sh:NodeShape ; - sh:closed true ; - sh:description "A single invocation of a TestRunner." ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Global system name of a TestRunner." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_runner_name ], - [ sh:class ttm:TestCaseResult ; - sh:description "One or more instances of TestCaseResult." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_case_results ], + sh:order 6 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; sh:order 4 ; - sh:path schema1:identifier ], - [ sh:class ttm:TestEntity ; - sh:description "Different TestRunners may expect specific kinds of TestEntity as input. These 'test_entities' one or more instances of TestAsset, TestCase or TestSuite." ; + sh:path schema1:description ], + [ sh:class ttm:TestResultPKSet ; + sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; sh:nodeKind sh:IRI ; sh:order 1 ; - sh:path ttm:test_entities ], + sh:path ttm:pks ], [ 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:dateTime ; - sh:description "Date time when a given entity was created." ; + sh:description "CURIE id of a TestCase registered in the system." ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:timestamp ], + sh:order 0 ; + sh:path ttm:test_case_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:order 7 ; + sh:order 5 ; sh:path schema1:additionalType ] ; - sh:targetClass ttm:TestRunSession . + sh:targetClass ttm:TestOutput . -ttm:TestRunnerConfiguration a sh:NodeShape ; +ttm:TestRunSession a sh:NodeShape ; sh:closed true ; - sh:description "General configuration parameters and test data input for a single invocation of a TestRunner." ; + 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 "One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration." ; + sh:property [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 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 schema1:additionalType ], + sh:path ttm:test_entities ], [ sh:class ttm:TestEntityParameter ; - sh:description "Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run." ; + 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:BlankNode ; - sh:order 0 ; + sh:order 3 ; sh:path ttm:test_run_parameters ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path schema1:description ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_env ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + sh:order 11 ; + 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 10 ; + sh:path schema1:additionalType ], + [ 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:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 1 ; + sh:order 7 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:description "Global system name of a TestRunner." ; sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:description ], + sh:order 2 ; + sh:path ttm:test_runner_name ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 2 ; + sh:order 8 ; sh:path schema1:name ] ; - sh:targetClass ttm:TestRunnerConfiguration . + 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:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], - [ sh:class ttm:TestSuiteSpecification ; - sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ], - [ sh: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 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + 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 "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + [ 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:order 1 ; - sh:path ttm:test_persona ], + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -831,222 +547,242 @@ ttm:TestSuite a sh:NodeShape ; 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:class ttm:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; - sh:path ttm:test_cases ] ; + sh:path ttm:test_cases ], + [ 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: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:description "The direction of the expected query result triple" ; - sh:in ( "increased" "decreased" ) ; + sh:property [ 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 4 ; - sh:path ttm:direction ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:order 2 ; + sh:path ttm:scientific_question ], + [ sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:input_category ], + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 18 ; - sh:path ttm:association ], + sh:order 23 ; + sh:path ttm:in_v1 ], [ sh:datatype xsd:string ; - sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:answer_informal_concept ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 14 ; + sh:path ttm:predicate_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 28 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path ttm:test_metadata ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:predicate_id ], + [ sh:description "The deployment environment within which this test must pass." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], - [ sh:datatype xsd:date ; - sh:description "The date by which this test must pass" ; + sh:order 1 ; + sh:path ttm:must_pass_environment ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:must_pass_date ], - [ sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:output_id ], - [ sh:datatype xsd:string ; - sh:description "The object of the core triple to be tested" ; + sh:order 18 ; + sh:path ttm:association ], + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:string_entry ], + sh:order 24 ; + sh:path ttm:well_known ], [ sh:datatype xsd:string ; + sh:description "The notes of the query" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], + sh:order 9 ; + sh:path ttm:notes ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 21 ; + sh:path ttm:test_issue ], [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; sh:order 22 ; sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:input_name ], + sh:order 16 ; + sh:path ttm:output_name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 28 ; + sh:path schema1:name ], + [ sh:description "The node of the (templated) TRAPI query to replace" ; + sh:in ( "subject" "object" ) ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:query_node ], [ sh: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:datatype xsd:string ; + sh:description "The object of the core triple to be tested" ; sh:maxCount 1 ; - sh:order 20 ; - sh:path ttm:expected_output ], - [ sh:description "The deployment environment within which this test must pass." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:must_pass_environment ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 27 ; - sh:path ttm:test_metadata ], - [ sh:datatype xsd:boolean ; + sh:order 3 ; + sh:path ttm:string_entry ], + [ sh:datatype xsd:date ; + sh:description "The date by which this test must pass" ; sh:maxCount 1 ; - sh:order 23 ; - sh:path ttm:in_v1 ], + sh:order 0 ; + sh:path ttm:must_pass_date ], [ 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:maxCount 1 ; + sh:order 15 ; + sh:path ttm:output_id ], [ sh:datatype xsd:string ; - sh:description "The notes of the query" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:notes ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 29 ; - sh:path schema1:name ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], + sh:order 20 ; + sh:path ttm:expected_output ], [ 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:maxCount 1 ; + sh:order 17 ; + sh:path ttm:output_category ], + [ 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:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; sh:minCount 1 ; - sh:order 26 ; - sh:path ttm:runner_settings ], - [ sh:datatype xsd:boolean ; + sh:order 31 ; + sh:path ttm:test_runner_settings ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_id ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:input_name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 24 ; - sh:path ttm:well_known ], - [ sh:description "The node of the (templated) TRAPI query to replace" ; - sh:in ( "subject" "object" ) ; + sh:order 29 ; + sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:query_node ], + sh:minCount 1 ; + sh:order 27 ; + 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: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 2 ; - sh:path ttm:scientific_question ], - [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:input_category ], + sh:order 5 ; + sh:path ttm:answer_informal_concept ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 30 ; + sh:path schema1:additionalType ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNode ; sh:order 19 ; - sh:path ttm:qualifiers ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_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 31 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 30 ; - sh:path schema1:description ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_id ], - [ sh:maxCount 1 ; - sh:order 17 ; - sh:path ttm:output_category ] ; + sh:path ttm:qualifiers ] ; sh:targetClass ttm:AcceptanceTestAsset . 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:class ttm:TestCase ; - sh:description "Slot referencing a single TestCase." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_case ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ sh:description "Encoded result of a single test run of a given test case" ; + sh:in ( "test_passed" "test_failed" "test_skipped" ) ; sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:test_case_result ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:minCount 1 ; - sh:order 3 ; - sh:path schema1:identifier ], + 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:description "CURIE id of a TestSuite registered in the system." ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_suite_id ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ], - [ sh:description "Encoded result of a single test run of a given test case" ; - sh:in ( "test_passed" "test_failed" "test_skipped" ) ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_case_result ], + 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: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: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:order 5 ; + 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 "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:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:order 0 ; sh:path schema1:identifier ], + [ 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 name for a Test Entity" ; sh:maxCount 1 ; sh:order 1 ; sh:path schema1:name ], [ 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:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + 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:targetClass ttm:TestEntity . ttm:TestResultPKSet a sh:NodeShape ; @@ -1055,13 +791,34 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:parent_pk ], + sh:order 5 ; + sh:path ttm:bte ], [ 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 2 ; + sh:path ttm:aragorn ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + sh:order 11 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:improving ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:parent_pk ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:merged_pk ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; @@ -1072,35 +829,116 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:order 7 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:merged_pk ], + sh:order 8 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], + sh:order 3 ; + sh:path ttm:arax ], [ 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:targetClass ttm:TestResultPKSet . + +ttm:TestAsset a sh:NodeShape ; + sh:closed true ; + sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:semantic_severity ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:in_v1 ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 20 ; sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:arax ], + sh:order 4 ; + sh:path ttm:predicate_name ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:well_known ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 17 ; + sh:path schema1:identifier ], + [ 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:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:association ], [ sh:datatype xsd:string ; sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:expected_output ], + [ sh:maxCount 1 ; sh:order 2 ; - sh:path ttm:aragorn ], + sh:path ttm:input_category ], + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:output_id ], + [ 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: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:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path ttm:test_metadata ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 8 ; + sh:order 18 ; sh:path schema1:name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:bte ] ; - sh:targetClass ttm:TestResultPKSet . + sh:order 1 ; + sh:path ttm:input_name ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:output_name ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:minCount 1 ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 19 ; + sh:path schema1:description ] ; + sh:targetClass ttm:TestAsset . ttm:TestEntityParameter a sh:NodeShape ; sh:closed true ; @@ -1114,30 +952,64 @@ ttm:TestEntityParameter a sh:NodeShape ; [ sh:datatype xsd:string ; sh:description "(String) value of a TestParameter." ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:value ] ; - sh:targetClass ttm:TestEntityParameter . + sh:order 1 ; + sh:path ttm:value ] ; + sh:targetClass ttm:TestEntityParameter . + +ttm:Precondition a sh:NodeShape ; + sh:closed true ; + sh:description "Represents a precondition for a 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 2 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 3 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + sh:order 4 ; + sh:path ttm:test_runner_settings ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ] ; + sh:targetClass ttm:Precondition . ttm:Qualifier a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The 'value' of should be a suitable value generally drawn from an applicable Biolink Model (\"Enum\") value set of the specified Qualifier." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:value ], - [ sh:datatype xsd:string ; sh:description "The 'parameter' of a Qualifier should be a `qualifier` slot name from the Biolink Model ('biolink' namespace) 'biolink:qualifier' hierarchy." ; sh:maxCount 1 ; sh:order 0 ; - sh:path ttm:parameter ] ; + sh:path ttm:parameter ], + [ sh:datatype xsd:string ; + sh:description "The 'value' of should be a suitable value generally drawn from an applicable Biolink Model (\"Enum\") value set of the specified Qualifier." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:value ] ; sh:targetClass ttm:Qualifier . ttm: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:datatype xsd:string ; + sh:property [ sh:description "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)" ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_data_file_locator ], + [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 3 ; @@ -1147,10 +1019,15 @@ ttm:TestSuiteSpecification a sh:NodeShape ; sh:maxCount 1 ; sh:order 4 ; sh:path schema1:description ], - [ 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 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + sh:order 6 ; + sh:path ttm:test_runner_settings ], [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; sh:in ( "TSV" "YAML" "JSON" ) ; sh:maxCount 1 ; @@ -1160,228 +1037,103 @@ ttm:TestSuiteSpecification a sh:NodeShape ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 2 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 5 ; - sh:path schema1:additionalType ] ; + sh:path schema1:identifier ] ; sh:targetClass ttm:TestSuiteSpecification . -ttm:TestAsset a sh:NodeShape ; +ttm:TestCase 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: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: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 "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 21 ; - 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: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:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 17 ; - sh:path ttm:test_metadata ], - [ sh:maxCount 1 ; sh:order 5 ; - sh:path ttm:output_id ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:path ttm:test_case_source ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], - [ sh:datatype xsd:boolean ; + sh:order 4 ; + sh:path ttm:test_case_objective ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ], - [ sh:datatype xsd:string ; - sh:description "Settings for the test harness, e.g. \"inferred\"" ; sh:minCount 1 ; - sh:order 16 ; - sh:path ttm:runner_settings ], - [ sh:datatype xsd:string ; + sh:order 9 ; + sh:path schema1:identifier ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], + sh:order 0 ; + sh:path ttm:query_type ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 20 ; - sh:path schema1:description ], - [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:minCount 1 ; - sh:order 18 ; - sh:path schema1:identifier ], + sh:order 13 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 11 ; - sh:path ttm:test_issue ], - [ 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:boolean ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ], + sh:path schema1:description ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:name ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ] ; - sh:targetClass ttm:TestAsset . - -ttm:TestCase a sh:NodeShape ; - sh:closed true ; - sh:description "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Settings for the test harness for TestCase" ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_case_runner_settings ], + sh:order 6 ; + sh:path ttm:test_case_predicate_name ], [ sh:class ttm:TestAsset ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 2 ; + sh:order 1 ; sh:path ttm:test_assets ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; - sh:order 5 ; - sh:path ttm:components ], - [ 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:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:preconditions ], [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:test_case_predicate_id ], + 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 12 ; + sh:path schema1:additionalType ], [ sh:maxCount 1 ; - sh:order 10 ; + sh:order 8 ; sh:path ttm:test_case_input_id ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path schema1:description ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:query_type ], + sh:order 10 ; + sh:path schema1: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 4 ; + sh:order 3 ; sh:path ttm:trapi_template ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_predicate_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 15 ; - sh:path schema1:additionalType ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_objective ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_env ], [ 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:order 7 ; + sh:path ttm:test_case_predicate_id ] ; sh:targetClass ttm:TestCase . -ttm:Precondition a sh:NodeShape ; +ttm:TestMetadata a sh:NodeShape ; sh:closed true ; - sh:description "Represents a precondition for a TestCase" ; + 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:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 2 ; + 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 1 ; + sh:order 5 ; sh:path schema1:name ], [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 3 ; - sh:path schema1:additionalType ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ] ; - sh:targetClass ttm:Precondition . - -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:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 7 ; sh:path schema1:additionalType ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_objective ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:minCount 1 ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -1392,24 +1144,19 @@ ttm:TestMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_source ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], [ sh:class ttm:TestEntityParameter ; sh:description "Metadata annotation." ; sh:nodeKind sh:BlankNode ; sh:order 3 ; sh:path ttm:test_annotations ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; sh:order 1 ; - sh:path ttm:test_reference ] ; + sh:path ttm:test_reference ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:test_objective ] ; sh:targetClass ttm:TestMetadata . diff --git a/project/shex/translator_testing_model.shex b/project/shex/translator_testing_model.shex index 8300d81..b260a5d 100644 --- a/project/shex/translator_testing_model.shex +++ b/project/shex/translator_testing_model.shex @@ -92,36 +92,6 @@ linkml:Sparqlpath xsd:string ) } - ( - CLOSED { - ( $ ( & ; - rdf:type [ ] ? ; - @linkml:String ? ; - @linkml:String ? - ) ; - rdf:type [ ] - ) - } OR @ -) - - ( - CLOSED { - ( $ ( & ; - rdf:type [ ] ? - ) ; - rdf:type [ ] - ) - } OR @ -) - - CLOSED { - ( $ ( & ; - rdf:type [ ] ? - ) ; - rdf:type [ ] - ) -} - CLOSED { ( $ ( & ; rdf:type [ ] ? @@ -184,9 +154,9 @@ linkml:Sparqlpath xsd:string @linkml:Boolean ? ; @linkml:Boolean ? ; @linkml:Uriorcurie ? ; - @linkml:String + ; @ ; - schema1:additionalType @linkml:String * + schema1:additionalType @linkml:String * ; + @linkml:String + ) ; rdf:type [ ] ) @@ -197,23 +167,20 @@ linkml:Sparqlpath xsd:string CLOSED { ( $ ( & ; rdf:type [ ] ? ; - @ ? ; @ ? ; @ + ; @ * ; @ ? ; - @ * ; @ ? ; @ ? ; @linkml:String ? ; @linkml:String ? ; @linkml:Uriorcurie ? ; - @linkml:String + ; schema1:additionalType @linkml:String * ) ; rdf:type [ ] ) - } OR @ OR @ OR @ + } OR @ OR @ ) CLOSED { @@ -237,13 +204,14 @@ linkml:Sparqlpath xsd:string ( @ OR @ OR @ OR @ OR @ OR @ OR @ - OR @ OR @ OR @ OR @ + OR @ OR @ OR @ ) { ( $ ( schema1:name @linkml:String ? ; schema1:description @linkml:String ? ; - schema1:additionalType @linkml:String * + schema1:additionalType @linkml:String * ; + @linkml:String + ) ; rdf:type [ ] ) @@ -296,20 +264,13 @@ linkml:Sparqlpath xsd:string ) } - CLOSED { - ( $ ( & ; - rdf:type [ ] ? ; - @ * ; - schema1:additionalType @linkml:String * - ) ; - rdf:type [ ] - ) -} - CLOSED { ( $ ( & ; rdf:type [ ] ? ; + @ * ; + @ ? ; @linkml:String ? ; + @ * ; @ * ; @ * ; @linkml:Datetime ? diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index 30f7632..1fb5973 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -4,44 +4,7 @@ CREATE TABLE "AcceptanceTestCase" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_env VARCHAR(4), - query_type VARCHAR(6), - preconditions TEXT, - trapi_template VARCHAR(24), - test_case_objective VARCHAR(19), - test_case_source VARCHAR(18), - test_case_predicate_name TEXT, - test_case_predicate_id TEXT, - test_case_input_id TEXT, - PRIMARY KEY (id) -); - -CREATE TABLE "ComplianceTestCase" ( - id TEXT NOT NULL, - name TEXT, - description TEXT, - test_env VARCHAR(4), - query_type VARCHAR(6), - test_assets TEXT NOT NULL, - preconditions TEXT, - trapi_template VARCHAR(24), - test_case_objective VARCHAR(19), - test_case_source VARCHAR(18), - test_case_predicate_name TEXT, - test_case_predicate_id TEXT, - test_case_input_id TEXT, - trapi_version TEXT, - biolink_version TEXT, - PRIMARY KEY (id) -); - -CREATE TABLE "KnowledgeGraphNavigationTestCase" ( - id TEXT NOT NULL, - name TEXT, - description TEXT, - test_env VARCHAR(4), query_type VARCHAR(6), - test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), test_case_objective VARCHAR(19), @@ -49,27 +12,6 @@ CREATE TABLE "KnowledgeGraphNavigationTestCase" ( test_case_predicate_name TEXT, test_case_predicate_id TEXT, test_case_input_id TEXT, - trapi_version TEXT, - biolink_version TEXT, - PRIMARY KEY (id) -); - -CREATE TABLE "OneHopTestCase" ( - id TEXT NOT NULL, - name TEXT, - description TEXT, - test_env VARCHAR(4), - query_type VARCHAR(6), - test_assets TEXT NOT NULL, - preconditions TEXT, - trapi_template VARCHAR(24), - test_case_objective VARCHAR(19), - test_case_source VARCHAR(18), - test_case_predicate_name TEXT, - test_case_predicate_id TEXT, - test_case_input_id TEXT, - trapi_version TEXT, - biolink_version TEXT, PRIMARY KEY (id) ); @@ -90,7 +32,6 @@ CREATE TABLE "QuantitativeTestCase" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_env VARCHAR(4), query_type VARCHAR(6), test_assets TEXT NOT NULL, preconditions TEXT, @@ -107,7 +48,6 @@ CREATE TABLE "TestCase" ( id TEXT NOT NULL, name TEXT, description TEXT, - test_env VARCHAR(4), query_type VARCHAR(6), test_assets TEXT NOT NULL, preconditions TEXT, @@ -145,19 +85,13 @@ CREATE TABLE "TestOutput" ( PRIMARY KEY (id) ); -CREATE TABLE "TestRunnerConfiguration" ( - id TEXT NOT NULL, - name TEXT, - description TEXT, - test_run_parameters TEXT, - PRIMARY KEY (id) -); - CREATE TABLE "TestRunSession" ( id TEXT NOT NULL, name TEXT, description TEXT, + test_env VARCHAR(4), test_runner_name TEXT, + test_run_parameters TEXT, timestamp DATETIME, PRIMARY KEY (id) ); @@ -339,17 +273,10 @@ CREATE TABLE "TestSuite" ( FOREIGN KEY(test_suite_specification) REFERENCES "TestSuiteSpecification" (id) ); -CREATE TABLE "AcceptanceTestCase_components" ( +CREATE TABLE "AcceptanceTestCase_test_runner_settings" ( backref_id TEXT, - components VARCHAR, - PRIMARY KEY (backref_id, components), - FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestCase" (id) -); - -CREATE TABLE "AcceptanceTestCase_test_case_runner_settings" ( - backref_id TEXT, - test_case_runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, test_case_runner_settings), + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestCase" (id) ); @@ -360,69 +287,6 @@ CREATE TABLE "AcceptanceTestCase_tags" ( FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestCase" (id) ); -CREATE TABLE "ComplianceTestCase_components" ( - backref_id TEXT, - components VARCHAR, - PRIMARY KEY (backref_id, components), - FOREIGN KEY(backref_id) REFERENCES "ComplianceTestCase" (id) -); - -CREATE TABLE "ComplianceTestCase_test_case_runner_settings" ( - backref_id TEXT, - test_case_runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, test_case_runner_settings), - FOREIGN KEY(backref_id) REFERENCES "ComplianceTestCase" (id) -); - -CREATE TABLE "ComplianceTestCase_tags" ( - backref_id TEXT, - tags TEXT, - PRIMARY KEY (backref_id, tags), - FOREIGN KEY(backref_id) REFERENCES "ComplianceTestCase" (id) -); - -CREATE TABLE "KnowledgeGraphNavigationTestCase_components" ( - backref_id TEXT, - components VARCHAR, - PRIMARY KEY (backref_id, components), - FOREIGN KEY(backref_id) REFERENCES "KnowledgeGraphNavigationTestCase" (id) -); - -CREATE TABLE "KnowledgeGraphNavigationTestCase_test_case_runner_settings" ( - backref_id TEXT, - test_case_runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, test_case_runner_settings), - FOREIGN KEY(backref_id) REFERENCES "KnowledgeGraphNavigationTestCase" (id) -); - -CREATE TABLE "KnowledgeGraphNavigationTestCase_tags" ( - backref_id TEXT, - tags TEXT, - PRIMARY KEY (backref_id, tags), - FOREIGN KEY(backref_id) REFERENCES "KnowledgeGraphNavigationTestCase" (id) -); - -CREATE TABLE "OneHopTestCase_components" ( - backref_id TEXT, - components VARCHAR, - PRIMARY KEY (backref_id, components), - FOREIGN KEY(backref_id) REFERENCES "OneHopTestCase" (id) -); - -CREATE TABLE "OneHopTestCase_test_case_runner_settings" ( - backref_id TEXT, - test_case_runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, test_case_runner_settings), - FOREIGN KEY(backref_id) REFERENCES "OneHopTestCase" (id) -); - -CREATE TABLE "OneHopTestCase_tags" ( - backref_id TEXT, - tags TEXT, - PRIMARY KEY (backref_id, tags), - FOREIGN KEY(backref_id) REFERENCES "OneHopTestCase" (id) -); - CREATE TABLE "Precondition_tags" ( backref_id TEXT, tags TEXT, @@ -430,17 +294,17 @@ CREATE TABLE "Precondition_tags" ( FOREIGN KEY(backref_id) REFERENCES "Precondition" (id) ); -CREATE TABLE "QuantitativeTestCase_components" ( +CREATE TABLE "Precondition_test_runner_settings" ( backref_id TEXT, - components VARCHAR, - PRIMARY KEY (backref_id, components), - FOREIGN KEY(backref_id) REFERENCES "QuantitativeTestCase" (id) + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "Precondition" (id) ); -CREATE TABLE "QuantitativeTestCase_test_case_runner_settings" ( +CREATE TABLE "QuantitativeTestCase_test_runner_settings" ( backref_id TEXT, - test_case_runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, test_case_runner_settings), + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "QuantitativeTestCase" (id) ); @@ -451,17 +315,10 @@ CREATE TABLE "QuantitativeTestCase_tags" ( FOREIGN KEY(backref_id) REFERENCES "QuantitativeTestCase" (id) ); -CREATE TABLE "TestCase_components" ( - backref_id TEXT, - components VARCHAR, - PRIMARY KEY (backref_id, components), - FOREIGN KEY(backref_id) REFERENCES "TestCase" (id) -); - -CREATE TABLE "TestCase_test_case_runner_settings" ( +CREATE TABLE "TestCase_test_runner_settings" ( backref_id TEXT, - test_case_runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, test_case_runner_settings), + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestCase" (id) ); @@ -479,6 +336,13 @@ CREATE TABLE "TestMetadata_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestMetadata" (id) ); +CREATE TABLE "TestMetadata_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestMetadata" (id) +); + CREATE TABLE "TestOutput_tags" ( backref_id TEXT, tags TEXT, @@ -486,11 +350,11 @@ CREATE TABLE "TestOutput_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestOutput" (id) ); -CREATE TABLE "TestRunnerConfiguration_tags" ( +CREATE TABLE "TestOutput_test_runner_settings" ( backref_id TEXT, - tags TEXT, - PRIMARY KEY (backref_id, tags), - FOREIGN KEY(backref_id) REFERENCES "TestRunnerConfiguration" (id) + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestOutput" (id) ); CREATE TABLE "TestRunSession_tags" ( @@ -500,6 +364,20 @@ CREATE TABLE "TestRunSession_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestRunSession" (id) ); +CREATE TABLE "TestRunSession_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestRunSession" (id) +); + +CREATE TABLE "TestRunSession_components" ( + backref_id TEXT, + components VARCHAR, + PRIMARY KEY (backref_id, components), + FOREIGN KEY(backref_id) REFERENCES "TestRunSession" (id) +); + CREATE TABLE "TestRunSession_test_entities" ( backref_id TEXT, test_entities TEXT, @@ -514,11 +392,11 @@ CREATE TABLE "TestSuiteSpecification_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestSuiteSpecification" (id) ); -CREATE TABLE "AcceptanceTestAsset_runner_settings" ( +CREATE TABLE "TestSuiteSpecification_test_runner_settings" ( backref_id TEXT, - runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, runner_settings), - FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestAsset" (id) + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestSuiteSpecification" (id) ); CREATE TABLE "AcceptanceTestAsset_tags" ( @@ -528,6 +406,13 @@ CREATE TABLE "AcceptanceTestAsset_tags" ( FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestAsset" (id) ); +CREATE TABLE "AcceptanceTestAsset_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestAsset" (id) +); + CREATE TABLE "AcceptanceTestSuite_tags" ( backref_id TEXT, tags TEXT, @@ -535,6 +420,13 @@ CREATE TABLE "AcceptanceTestSuite_tags" ( FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestSuite" (id) ); +CREATE TABLE "AcceptanceTestSuite_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestSuite" (id) +); + CREATE TABLE "OneHopTestSuite_tags" ( backref_id TEXT, tags TEXT, @@ -542,6 +434,13 @@ CREATE TABLE "OneHopTestSuite_tags" ( FOREIGN KEY(backref_id) REFERENCES "OneHopTestSuite" (id) ); +CREATE TABLE "OneHopTestSuite_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "OneHopTestSuite" (id) +); + CREATE TABLE "StandardsComplianceTestSuite_tags" ( backref_id TEXT, tags TEXT, @@ -549,11 +448,11 @@ CREATE TABLE "StandardsComplianceTestSuite_tags" ( FOREIGN KEY(backref_id) REFERENCES "StandardsComplianceTestSuite" (id) ); -CREATE TABLE "TestAsset_runner_settings" ( +CREATE TABLE "StandardsComplianceTestSuite_test_runner_settings" ( backref_id TEXT, - runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, runner_settings), - FOREIGN KEY(backref_id) REFERENCES "TestAsset" (id) + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "StandardsComplianceTestSuite" (id) ); CREATE TABLE "TestAsset_tags" ( @@ -563,6 +462,13 @@ CREATE TABLE "TestAsset_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestAsset" (id) ); +CREATE TABLE "TestAsset_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestAsset" (id) +); + CREATE TABLE "TestCaseResult_tags" ( backref_id TEXT, tags TEXT, @@ -570,11 +476,11 @@ CREATE TABLE "TestCaseResult_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestCaseResult" (id) ); -CREATE TABLE "TestEdgeData_runner_settings" ( +CREATE TABLE "TestCaseResult_test_runner_settings" ( backref_id TEXT, - runner_settings TEXT NOT NULL, - PRIMARY KEY (backref_id, runner_settings), - FOREIGN KEY(backref_id) REFERENCES "TestEdgeData" (id) + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestCaseResult" (id) ); CREATE TABLE "TestEdgeData_tags" ( @@ -584,6 +490,13 @@ CREATE TABLE "TestEdgeData_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestEdgeData" (id) ); +CREATE TABLE "TestEdgeData_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestEdgeData" (id) +); + CREATE TABLE "TestResultPKSet_tags" ( backref_id TEXT, tags TEXT, @@ -591,9 +504,23 @@ CREATE TABLE "TestResultPKSet_tags" ( FOREIGN KEY(backref_id) REFERENCES "TestResultPKSet" (id) ); +CREATE TABLE "TestResultPKSet_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestResultPKSet" (id) +); + CREATE TABLE "TestSuite_tags" ( backref_id TEXT, tags TEXT, PRIMARY KEY (backref_id, tags), FOREIGN KEY(backref_id) REFERENCES "TestSuite" (id) ); + +CREATE TABLE "TestSuite_test_runner_settings" ( + backref_id TEXT, + test_runner_settings TEXT NOT NULL, + PRIMARY KEY (backref_id, test_runner_settings), + FOREIGN KEY(backref_id) REFERENCES "TestSuite" (id) +); diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index 714eac8..c6bbcd2 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -244,6 +244,7 @@ class TestEntity(ConfiguredBaseModel): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestMetadata(TestEntity): @@ -258,6 +259,7 @@ class TestMetadata(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestAsset(TestEntity): @@ -280,12 +282,12 @@ class TestAsset(TestEntity): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness, e.g. \"inferred\"""") test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class AcceptanceTestAsset(TestAsset): @@ -318,12 +320,12 @@ class AcceptanceTestAsset(TestAsset): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness, e.g. \"inferred\"""") test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class TestEdgeData(TestAsset): @@ -346,12 +348,12 @@ class TestEdgeData(TestAsset): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness, e.g. \"inferred\"""") test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class Precondition(TestEntity): @@ -362,144 +364,67 @@ class Precondition(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCase(TestEntity): """ 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. """ - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") preconditions: Optional[List[str]] = Field(default_factory=list) trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") test_case_predicate_name: Optional[str] = Field(None) test_case_predicate_id: Optional[str] = Field(None) test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestCase(TestCase): """ See AcceptanceTestAsset above for more details. """ - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[AcceptanceTestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") preconditions: Optional[List[str]] = Field(default_factory=list) trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") test_case_predicate_name: Optional[str] = Field(None) test_case_predicate_id: Optional[str] = Field(None) test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class QuantitativeTestCase(TestCase): """ Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete. """ - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") - query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") - test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") - preconditions: Optional[List[str]] = Field(default_factory=list) - trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") - test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") - test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") - test_case_predicate_name: Optional[str] = Field(None) - test_case_predicate_id: Optional[str] = Field(None) - test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class ComplianceTestCase(TestCase): - """ - TRAPI and Biolink Model standards compliance test - """ - trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") - biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") - query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") - test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") - preconditions: Optional[List[str]] = Field(default_factory=list) - trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") - test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") - test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") - test_case_predicate_name: Optional[str] = Field(None) - test_case_predicate_id: Optional[str] = Field(None) - test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class KnowledgeGraphNavigationTestCase(ComplianceTestCase): - """ - Knowledge Graph navigation integration test - """ - trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") - biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") - query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") - test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") - preconditions: Optional[List[str]] = Field(default_factory=list) - trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") - test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") - test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") - test_case_predicate_name: Optional[str] = Field(None) - test_case_predicate_id: Optional[str] = Field(None) - test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class OneHopTestCase(KnowledgeGraphNavigationTestCase): - """ - 'One Hop' Knowledge Graph navigation integration test - """ - trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") - biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") preconditions: Optional[List[str]] = Field(default_factory=list) trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") test_case_predicate_name: Optional[str] = Field(None) test_case_predicate_id: Optional[str] = Field(None) test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuiteSpecification(TestEntity): @@ -512,6 +437,7 @@ class TestSuiteSpecification(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuite(TestEntity): @@ -526,6 +452,7 @@ class TestSuite(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestSuite(TestSuite): @@ -538,6 +465,7 @@ class AcceptanceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class BenchmarkTestSuite(ConfiguredBaseModel): @@ -559,6 +487,7 @@ class StandardsComplianceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class OneHopTestSuite(TestSuite): @@ -573,17 +502,7 @@ class OneHopTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class TestRunnerConfiguration(TestEntity): - """ - General configuration parameters and test data input for a single invocation of a TestRunner. - """ - test_run_parameters: Optional[List[TestEntityParameter]] = Field(default_factory=list, description="""Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run.""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCaseResult(TestEntity): @@ -597,20 +516,25 @@ class TestCaseResult(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestRunSession(TestEntity): """ - A single invocation of a TestRunner. + Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite). """ + 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.""") + test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") test_runner_name: Optional[str] = Field(None, description="""Global system name of a TestRunner.""") - test_entities: Optional[Dict[str, TestEntity]] = Field(default_factory=dict, description="""Different TestRunners may expect specific kinds of TestEntity as input. These 'test_entities' one or more instances of TestAsset, TestCase or TestSuite.""") + test_run_parameters: Optional[List[TestEntityParameter]] = Field(default_factory=list, description="""Different TestRunners could expect additional global test configuration parameters, like the applicable TRAPI version (\"trapi_version\") or Biolink Model versions (\"biolink_version\").""") + test_entities: Optional[Dict[str, TestEntity]] = Field(default_factory=dict, 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.""") test_case_results: Optional[Dict[str, TestCaseResult]] = Field(default_factory=dict, description="""One or more instances of TestCaseResult.""") timestamp: Optional[datetime ] = Field(None, description="""Date time when a given entity was created.""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestOutput(TestEntity): @@ -623,6 +547,7 @@ class TestOutput(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestResultPKSet(TestEntity): @@ -640,6 +565,7 @@ class TestResultPKSet(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") @@ -656,16 +582,12 @@ class TestResultPKSet(TestEntity): TestCase.update_forward_refs() AcceptanceTestCase.update_forward_refs() QuantitativeTestCase.update_forward_refs() -ComplianceTestCase.update_forward_refs() -KnowledgeGraphNavigationTestCase.update_forward_refs() -OneHopTestCase.update_forward_refs() TestSuiteSpecification.update_forward_refs() TestSuite.update_forward_refs() AcceptanceTestSuite.update_forward_refs() BenchmarkTestSuite.update_forward_refs() StandardsComplianceTestSuite.update_forward_refs() OneHopTestSuite.update_forward_refs() -TestRunnerConfiguration.update_forward_refs() TestCaseResult.update_forward_refs() TestRunSession.update_forward_refs() TestOutput.update_forward_refs() diff --git a/src/translator_testing_model/datamodel/pydanticmodel_v2.py b/src/translator_testing_model/datamodel/pydanticmodel_v2.py index f108cc6..a42eb05 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel_v2.py +++ b/src/translator_testing_model/datamodel/pydanticmodel_v2.py @@ -240,6 +240,7 @@ class TestEntity(ConfiguredBaseModel): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestMetadata(TestEntity): @@ -254,6 +255,7 @@ class TestMetadata(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestAsset(TestEntity): @@ -276,12 +278,12 @@ class TestAsset(TestEntity): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness, e.g. \"inferred\"""") test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class AcceptanceTestAsset(TestAsset): @@ -314,12 +316,12 @@ class AcceptanceTestAsset(TestAsset): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness, e.g. \"inferred\"""") test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class TestEdgeData(TestAsset): @@ -342,12 +344,12 @@ class TestEdgeData(TestAsset): in_v1: Optional[bool] = Field(None) well_known: Optional[bool] = Field(None) test_reference: Optional[str] = Field(None, description="""Document URL where original test source particulars are registered (e.g. Github repo)""") - runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness, e.g. \"inferred\"""") test_metadata: TestMetadata = Field(..., description="""Test metadata describes the external provenance, cross-references and objectives for a given test.""") id: str = Field(..., description="""A unique identifier for a Test Entity""") name: Optional[str] = Field(None, description="""A human-readable name for a Test Entity""") description: Optional[str] = Field(None, description="""A human-readable description for a Test Entity""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class Precondition(TestEntity): @@ -358,144 +360,67 @@ class Precondition(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCase(TestEntity): """ 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. """ - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") preconditions: Optional[List[str]] = Field(default_factory=list) trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") test_case_predicate_name: Optional[str] = Field(None) test_case_predicate_id: Optional[str] = Field(None) test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestCase(TestCase): """ See AcceptanceTestAsset above for more details. """ - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[AcceptanceTestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") preconditions: Optional[List[str]] = Field(default_factory=list) trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") test_case_predicate_name: Optional[str] = Field(None) test_case_predicate_id: Optional[str] = Field(None) test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class QuantitativeTestCase(TestCase): """ Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete. """ - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") - query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") - test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") - preconditions: Optional[List[str]] = Field(default_factory=list) - trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") - test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") - test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") - test_case_predicate_name: Optional[str] = Field(None) - test_case_predicate_id: Optional[str] = Field(None) - test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class ComplianceTestCase(TestCase): - """ - TRAPI and Biolink Model standards compliance test - """ - trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") - biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") - query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") - test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") - preconditions: Optional[List[str]] = Field(default_factory=list) - trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") - test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") - test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") - test_case_predicate_name: Optional[str] = Field(None) - test_case_predicate_id: Optional[str] = Field(None) - test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class KnowledgeGraphNavigationTestCase(ComplianceTestCase): - """ - Knowledge Graph navigation integration test - """ - trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") - biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") - query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") - test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") - preconditions: Optional[List[str]] = Field(default_factory=list) - trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") - test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") - test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") - test_case_predicate_name: Optional[str] = Field(None) - test_case_predicate_id: Optional[str] = Field(None) - test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class OneHopTestCase(KnowledgeGraphNavigationTestCase): - """ - 'One Hop' Knowledge Graph navigation integration test - """ - trapi_version: Optional[str] = Field(None, description="""TRAPI version (SemVer string)""") - biolink_version: Optional[str] = Field(None, description="""Biolink Model release (SemVer string)""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") query_type: Optional[QueryTypeEnum] = Field(None, description="""Type of TestCase query.""") test_assets: List[TestAsset] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection.""") preconditions: Optional[List[str]] = Field(default_factory=list) trapi_template: Optional[TrapiTemplateEnum] = Field(None, 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.""") - 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.""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)""") test_case_source: Optional[TestSourceEnum] = Field(None, 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.""") test_case_predicate_name: Optional[str] = Field(None) test_case_predicate_id: Optional[str] = Field(None) test_case_input_id: Optional[str] = Field(None) - test_case_runner_settings: List[str] = Field(default_factory=list, description="""Settings for the test harness for TestCase""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuiteSpecification(TestEntity): @@ -508,6 +433,7 @@ class TestSuiteSpecification(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuite(TestEntity): @@ -522,6 +448,7 @@ class TestSuite(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestSuite(TestSuite): @@ -534,6 +461,7 @@ class AcceptanceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class BenchmarkTestSuite(ConfiguredBaseModel): @@ -555,6 +483,7 @@ class StandardsComplianceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class OneHopTestSuite(TestSuite): @@ -569,17 +498,7 @@ class OneHopTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - - -class TestRunnerConfiguration(TestEntity): - """ - General configuration parameters and test data input for a single invocation of a TestRunner. - """ - test_run_parameters: Optional[List[TestEntityParameter]] = Field(default_factory=list, description="""Parameters for TestRunnerConfiguration that inform the TestHarness and TestRunners about the general characteristics of a test run.""") - 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""") - tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (slot inherited from TestEntity) should generally identify the TestRunner(s) using this configuration.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCaseResult(TestEntity): @@ -593,20 +512,25 @@ class TestCaseResult(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestRunSession(TestEntity): """ - A single invocation of a TestRunner. + Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite). """ + 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.""") + test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is run.""") test_runner_name: Optional[str] = Field(None, description="""Global system name of a TestRunner.""") - test_entities: Optional[Dict[str, TestEntity]] = Field(default_factory=dict, description="""Different TestRunners may expect specific kinds of TestEntity as input. These 'test_entities' one or more instances of TestAsset, TestCase or TestSuite.""") + test_run_parameters: Optional[List[TestEntityParameter]] = Field(default_factory=list, description="""Different TestRunners could expect additional global test configuration parameters, like the applicable TRAPI version (\"trapi_version\") or Biolink Model versions (\"biolink_version\").""") + test_entities: Optional[Dict[str, TestEntity]] = Field(default_factory=dict, 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.""") test_case_results: Optional[Dict[str, TestCaseResult]] = Field(default_factory=dict, description="""One or more instances of TestCaseResult.""") timestamp: Optional[datetime ] = Field(None, description="""Date time when a given entity was created.""") 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestOutput(TestEntity): @@ -619,6 +543,7 @@ class TestOutput(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestResultPKSet(TestEntity): @@ -636,6 +561,7 @@ class TestResultPKSet(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") + test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") @@ -652,16 +578,12 @@ class TestResultPKSet(TestEntity): TestCase.model_rebuild() AcceptanceTestCase.model_rebuild() QuantitativeTestCase.model_rebuild() -ComplianceTestCase.model_rebuild() -KnowledgeGraphNavigationTestCase.model_rebuild() -OneHopTestCase.model_rebuild() TestSuiteSpecification.model_rebuild() TestSuite.model_rebuild() AcceptanceTestSuite.model_rebuild() BenchmarkTestSuite.model_rebuild() StandardsComplianceTestSuite.model_rebuild() OneHopTestSuite.model_rebuild() -TestRunnerConfiguration.model_rebuild() TestCaseResult.model_rebuild() TestRunSession.model_rebuild() TestOutput.model_rebuild() diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index 7758f5b..a1bd6be 100644 --- a/src/translator_testing_model/datamodel/translator_testing_model.py +++ b/src/translator_testing_model/datamodel/translator_testing_model.py @@ -1,5 +1,5 @@ # Auto generated from translator_testing_model.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-03-04T17:21:26 +# Generation date: 2024-03-06T16:19:32 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -111,18 +111,6 @@ class QuantitativeTestCaseId(TestCaseId): pass -class ComplianceTestCaseId(TestCaseId): - pass - - -class KnowledgeGraphNavigationTestCaseId(ComplianceTestCaseId): - pass - - -class OneHopTestCaseId(KnowledgeGraphNavigationTestCaseId): - pass - - class TestSuiteSpecificationId(TestEntityId): pass @@ -143,10 +131,6 @@ class OneHopTestSuiteId(TestSuiteId): pass -class TestRunnerConfigurationId(TestEntityId): - pass - - class TestCaseResultId(TestEntityId): pass @@ -224,6 +208,7 @@ class TestEntity(YAMLRoot): class_model_uri: ClassVar[URIRef] = TTM.TestEntity id: Union[str, TestEntityId] = None + test_runner_settings: Union[str, List[str]] = None name: Optional[str] = None description: Optional[str] = None tags: Optional[Union[str, List[str]]] = empty_list() @@ -234,6 +219,12 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.id, TestEntityId): self.id = TestEntityId(self.id) + if self._is_empty(self.test_runner_settings): + self.MissingRequiredField("test_runner_settings") + if not isinstance(self.test_runner_settings, list): + self.test_runner_settings = [self.test_runner_settings] if self.test_runner_settings is not None else [] + self.test_runner_settings = [v if isinstance(v, str) else str(v) for v in self.test_runner_settings] + if self.name is not None and not isinstance(self.name, str): self.name = str(self.name) @@ -261,6 +252,7 @@ class TestMetadata(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestMetadata id: Union[str, TestMetadataId] = None + test_runner_settings: Union[str, List[str]] = None test_source: Optional[Union[str, "TestSourceEnum"]] = None test_reference: Optional[Union[str, URIorCURIE]] = None test_objective: Optional[Union[str, "TestObjectiveEnum"]] = None @@ -302,8 +294,8 @@ class TestAsset(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestAsset id: Union[str, TestAssetId] = None - runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None + test_runner_settings: Union[str, List[str]] = None input_id: Optional[Union[str, URIorCURIE]] = None input_name: Optional[str] = None input_category: Optional[Union[str, ConceptCategory]] = None @@ -328,17 +320,17 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.id, TestAssetId): self.id = TestAssetId(self.id) - if self._is_empty(self.runner_settings): - self.MissingRequiredField("runner_settings") - if not isinstance(self.runner_settings, list): - self.runner_settings = [self.runner_settings] if self.runner_settings is not None else [] - self.runner_settings = [v if isinstance(v, str) else str(v) for v in self.runner_settings] - if self._is_empty(self.test_metadata): self.MissingRequiredField("test_metadata") if not isinstance(self.test_metadata, TestMetadata): self.test_metadata = TestMetadata(**as_dict(self.test_metadata)) + if self._is_empty(self.test_runner_settings): + self.MissingRequiredField("test_runner_settings") + if not isinstance(self.test_runner_settings, list): + self.test_runner_settings = [self.test_runner_settings] if self.test_runner_settings is not None else [] + self.test_runner_settings = [v if isinstance(v, str) else str(v) for v in self.test_runner_settings] + if self.input_id is not None and not isinstance(self.input_id, URIorCURIE): self.input_id = URIorCURIE(self.input_id) @@ -408,8 +400,8 @@ class AcceptanceTestAsset(TestAsset): class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestAsset id: Union[str, AcceptanceTestAssetId] = None - runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None + test_runner_settings: Union[str, List[str]] = None must_pass_date: Optional[Union[str, XSDDate]] = None must_pass_environment: Optional[Union[str, "TestEnvEnum"]] = None scientific_question: Optional[str] = None @@ -474,8 +466,8 @@ class TestEdgeData(TestAsset): class_model_uri: ClassVar[URIRef] = TTM.TestEdgeData id: Union[str, TestEdgeDataId] = None - runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None + test_runner_settings: Union[str, List[str]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -499,6 +491,7 @@ class Precondition(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.Precondition id: Union[str, PreconditionId] = None + test_runner_settings: Union[str, List[str]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -524,13 +517,11 @@ class TestCase(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestCase id: Union[str, TestCaseId] = None + test_runner_settings: Union[str, List[str]] = None test_assets: Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]] = empty_dict() - test_case_runner_settings: Union[str, List[str]] = None - test_env: Optional[Union[str, "TestEnvEnum"]] = None query_type: Optional[Union[str, "QueryTypeEnum"]] = None preconditions: Optional[Union[Union[str, PreconditionId], List[Union[str, PreconditionId]]]] = empty_list() trapi_template: Optional[Union[str, "TrapiTemplateEnum"]] = None - components: Optional[Union[Union[str, "ComponentEnum"], List[Union[str, "ComponentEnum"]]]] = empty_list() test_case_objective: Optional[Union[str, "TestObjectiveEnum"]] = None test_case_source: Optional[Union[str, "TestSourceEnum"]] = None test_case_predicate_name: Optional[str] = None @@ -548,15 +539,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.MissingRequiredField("test_assets") self._normalize_inlined_as_list(slot_name="test_assets", slot_type=TestAsset, key_name="id", keyed=True) - if self._is_empty(self.test_case_runner_settings): - self.MissingRequiredField("test_case_runner_settings") - if not isinstance(self.test_case_runner_settings, list): - self.test_case_runner_settings = [self.test_case_runner_settings] if self.test_case_runner_settings is not None else [] - self.test_case_runner_settings = [v if isinstance(v, str) else str(v) for v in self.test_case_runner_settings] - - if self.test_env is not None and not isinstance(self.test_env, TestEnvEnum): - self.test_env = TestEnvEnum(self.test_env) - if self.query_type is not None and not isinstance(self.query_type, QueryTypeEnum): self.query_type = QueryTypeEnum(self.query_type) @@ -567,10 +549,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.trapi_template is not None and not isinstance(self.trapi_template, TrapiTemplateEnum): self.trapi_template = TrapiTemplateEnum(self.trapi_template) - if not isinstance(self.components, list): - 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.test_case_objective is not None and not isinstance(self.test_case_objective, TestObjectiveEnum): self.test_case_objective = TestObjectiveEnum(self.test_case_objective) @@ -606,7 +584,7 @@ class AcceptanceTestCase(TestCase): class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestCase id: Union[str, AcceptanceTestCaseId] = None - test_case_runner_settings: Union[str, List[str]] = None + test_runner_settings: Union[str, List[str]] = None test_assets: Union[Dict[Union[str, AcceptanceTestAssetId], Union[dict, AcceptanceTestAsset]], List[Union[dict, AcceptanceTestAsset]]] = empty_dict() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -635,8 +613,8 @@ class QuantitativeTestCase(TestCase): class_model_uri: ClassVar[URIRef] = TTM.QuantitativeTestCase id: Union[str, QuantitativeTestCaseId] = None + test_runner_settings: Union[str, List[str]] = None test_assets: Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]] = empty_dict() - test_case_runner_settings: Union[str, List[str]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -647,89 +625,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) -@dataclass -class ComplianceTestCase(TestCase): - """ - TRAPI and Biolink Model standards compliance test - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = TTM["ComplianceTestCase"] - class_class_curie: ClassVar[str] = "ttm:ComplianceTestCase" - class_name: ClassVar[str] = "ComplianceTestCase" - class_model_uri: ClassVar[URIRef] = TTM.ComplianceTestCase - - id: Union[str, ComplianceTestCaseId] = None - test_assets: Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]] = empty_dict() - test_case_runner_settings: Union[str, List[str]] = None - trapi_version: Optional[str] = None - biolink_version: Optional[str] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, ComplianceTestCaseId): - self.id = ComplianceTestCaseId(self.id) - - if self.trapi_version is not None and not isinstance(self.trapi_version, str): - self.trapi_version = str(self.trapi_version) - - if self.biolink_version is not None and not isinstance(self.biolink_version, str): - self.biolink_version = str(self.biolink_version) - - super().__post_init__(**kwargs) - - -@dataclass -class KnowledgeGraphNavigationTestCase(ComplianceTestCase): - """ - Knowledge Graph navigation integration test - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = TTM["KnowledgeGraphNavigationTestCase"] - class_class_curie: ClassVar[str] = "ttm:KnowledgeGraphNavigationTestCase" - class_name: ClassVar[str] = "KnowledgeGraphNavigationTestCase" - class_model_uri: ClassVar[URIRef] = TTM.KnowledgeGraphNavigationTestCase - - id: Union[str, KnowledgeGraphNavigationTestCaseId] = None - test_assets: Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]] = empty_dict() - test_case_runner_settings: Union[str, List[str]] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, KnowledgeGraphNavigationTestCaseId): - self.id = KnowledgeGraphNavigationTestCaseId(self.id) - - super().__post_init__(**kwargs) - - -@dataclass -class OneHopTestCase(KnowledgeGraphNavigationTestCase): - """ - 'One Hop' Knowledge Graph navigation integration test - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = TTM["OneHopTestCase"] - class_class_curie: ClassVar[str] = "ttm:OneHopTestCase" - class_name: ClassVar[str] = "OneHopTestCase" - class_model_uri: ClassVar[URIRef] = TTM.OneHopTestCase - - id: Union[str, OneHopTestCaseId] = None - test_assets: Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]] = empty_dict() - test_case_runner_settings: Union[str, List[str]] = None - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, OneHopTestCaseId): - self.id = OneHopTestCaseId(self.id) - - super().__post_init__(**kwargs) - - @dataclass class TestSuiteSpecification(TestEntity): """ @@ -743,6 +638,7 @@ class TestSuiteSpecification(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestSuiteSpecification id: Union[str, TestSuiteSpecificationId] = None + test_runner_settings: Union[str, List[str]] = None test_data_file_locator: Optional[Union[str, URIorCURIE]] = None test_data_file_format: Optional[Union[str, "FileFormatEnum"]] = None @@ -776,6 +672,7 @@ class TestSuite(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestSuite id: Union[str, TestSuiteId] = None + test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None test_persona: Optional[Union[str, "TestPersonaEnum"]] = None test_cases: Optional[Union[Dict[Union[str, TestCaseId], Union[dict, TestCase]], List[Union[dict, TestCase]]]] = empty_dict() @@ -813,6 +710,7 @@ class AcceptanceTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestSuite id: Union[str, AcceptanceTestSuiteId] = None + test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -849,6 +747,7 @@ class StandardsComplianceTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.StandardsComplianceTestSuite id: Union[str, StandardsComplianceTestSuiteId] = None + test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -873,6 +772,7 @@ class OneHopTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.OneHopTestSuite id: Union[str, OneHopTestSuiteId] = None + test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -884,39 +784,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): super().__post_init__(**kwargs) -@dataclass -class TestRunnerConfiguration(TestEntity): - """ - General configuration parameters and test data input for a single invocation of a TestRunner. - """ - _inherited_slots: ClassVar[List[str]] = [] - - class_class_uri: ClassVar[URIRef] = TTM["TestRunnerConfiguration"] - class_class_curie: ClassVar[str] = "ttm:TestRunnerConfiguration" - class_name: ClassVar[str] = "TestRunnerConfiguration" - class_model_uri: ClassVar[URIRef] = TTM.TestRunnerConfiguration - - id: Union[str, TestRunnerConfigurationId] = None - test_run_parameters: Optional[Union[Union[dict, TestEntityParameter], List[Union[dict, TestEntityParameter]]]] = empty_list() - tags: Optional[Union[str, List[str]]] = empty_list() - - def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): - if self._is_empty(self.id): - self.MissingRequiredField("id") - if not isinstance(self.id, TestRunnerConfigurationId): - self.id = TestRunnerConfigurationId(self.id) - - if not isinstance(self.test_run_parameters, list): - self.test_run_parameters = [self.test_run_parameters] if self.test_run_parameters is not None else [] - self.test_run_parameters = [v if isinstance(v, TestEntityParameter) else TestEntityParameter(**as_dict(v)) for v in self.test_run_parameters] - - 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] - - super().__post_init__(**kwargs) - - @dataclass class TestCaseResult(TestEntity): """ @@ -930,6 +797,7 @@ class TestCaseResult(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestCaseResult id: Union[str, TestCaseResultId] = None + test_runner_settings: Union[str, List[str]] = None test_suite_id: Optional[Union[str, URIorCURIE]] = None test_case: Optional[Union[dict, TestCase]] = None test_case_result: Optional[Union[str, "TestCaseResultEnum"]] = None @@ -955,7 +823,8 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @dataclass class TestRunSession(TestEntity): """ - A single invocation of a TestRunner. + Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more + instances of TestSuite). """ _inherited_slots: ClassVar[List[str]] = [] @@ -965,7 +834,11 @@ class TestRunSession(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestRunSession id: Union[str, TestRunSessionId] = None + test_runner_settings: Union[str, List[str]] = None + components: Optional[Union[Union[str, "ComponentEnum"], List[Union[str, "ComponentEnum"]]]] = empty_list() + test_env: Optional[Union[str, "TestEnvEnum"]] = None test_runner_name: Optional[str] = None + test_run_parameters: Optional[Union[Union[dict, TestEntityParameter], List[Union[dict, TestEntityParameter]]]] = empty_list() test_entities: Optional[Union[Dict[Union[str, TestEntityId], Union[dict, TestEntity]], List[Union[dict, TestEntity]]]] = empty_dict() test_case_results: Optional[Union[Dict[Union[str, TestCaseResultId], Union[dict, TestCaseResult]], List[Union[dict, TestCaseResult]]]] = empty_dict() timestamp: Optional[Union[str, XSDDateTime]] = None @@ -976,9 +849,20 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.id, TestRunSessionId): self.id = TestRunSessionId(self.id) + if not isinstance(self.components, list): + 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.test_env is not None and not isinstance(self.test_env, TestEnvEnum): + self.test_env = TestEnvEnum(self.test_env) + if self.test_runner_name is not None and not isinstance(self.test_runner_name, str): self.test_runner_name = str(self.test_runner_name) + if not isinstance(self.test_run_parameters, list): + self.test_run_parameters = [self.test_run_parameters] if self.test_run_parameters is not None else [] + self.test_run_parameters = [v if isinstance(v, TestEntityParameter) else TestEntityParameter(**as_dict(v)) for v in self.test_run_parameters] + self._normalize_inlined_as_dict(slot_name="test_entities", slot_type=TestEntity, key_name="id", keyed=True) self._normalize_inlined_as_dict(slot_name="test_case_results", slot_type=TestCaseResult, key_name="id", keyed=True) @@ -1002,6 +886,7 @@ class TestOutput(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestOutput id: Union[str, TestOutputId] = None + test_runner_settings: Union[str, List[str]] = None test_case_id: Optional[str] = None pks: Optional[Union[Union[str, TestResultPKSetId], List[Union[str, TestResultPKSetId]]]] = empty_list() @@ -1034,6 +919,7 @@ class TestResultPKSet(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestResultPKSet id: Union[str, TestResultPKSetId] = None + test_runner_settings: Union[str, List[str]] = None parent_pk: Optional[str] = None merged_pk: Optional[str] = None aragorn: Optional[str] = None @@ -1440,11 +1326,8 @@ 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.runner_settings = Slot(uri=TTM.runner_settings, name="runner_settings", curie=TTM.curie('runner_settings'), - model_uri=TTM.runner_settings, domain=None, range=Union[str, List[str]]) - -slots.test_case_runner_settings = Slot(uri=TTM.test_case_runner_settings, name="test_case_runner_settings", curie=TTM.curie('test_case_runner_settings'), - model_uri=TTM.test_case_runner_settings, domain=None, range=Union[str, List[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=Union[str, List[str]]) slots.must_pass_date = Slot(uri=TTM.must_pass_date, name="must_pass_date", curie=TTM.curie('must_pass_date'), model_uri=TTM.must_pass_date, domain=None, range=Optional[Union[str, XSDDate]]) @@ -1551,8 +1434,8 @@ class slots: slots.TestAsset_tags = Slot(uri=SCHEMA.additionalType, name="TestAsset_tags", curie=SCHEMA.curie('additionalType'), model_uri=TTM.TestAsset_tags, domain=TestAsset, range=Optional[Union[str, List[str]]]) -slots.TestAsset_runner_settings = Slot(uri=TTM.runner_settings, name="TestAsset_runner_settings", curie=TTM.curie('runner_settings'), - model_uri=TTM.TestAsset_runner_settings, domain=TestAsset, range=Union[str, List[str]]) +slots.TestAsset_test_runner_settings = Slot(uri=TTM.test_runner_settings, name="TestAsset_test_runner_settings", curie=TTM.curie('test_runner_settings'), + model_uri=TTM.TestAsset_test_runner_settings, domain=TestAsset, range=Union[str, List[str]]) slots.TestCase_test_assets = Slot(uri=TTM.test_assets, name="TestCase_test_assets", curie=TTM.curie('test_assets'), model_uri=TTM.TestCase_test_assets, domain=TestCase, range=Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]]) @@ -1563,8 +1446,8 @@ class slots: slots.AcceptanceTestCase_test_assets = Slot(uri=TTM.test_assets, name="AcceptanceTestCase_test_assets", curie=TTM.curie('test_assets'), model_uri=TTM.AcceptanceTestCase_test_assets, domain=AcceptanceTestCase, range=Union[Dict[Union[str, AcceptanceTestAssetId], Union[dict, AcceptanceTestAsset]], List[Union[dict, AcceptanceTestAsset]]]) -slots.TestRunnerConfiguration_tags = Slot(uri=SCHEMA.additionalType, name="TestRunnerConfiguration_tags", curie=SCHEMA.curie('additionalType'), - model_uri=TTM.TestRunnerConfiguration_tags, domain=TestRunnerConfiguration, range=Optional[Union[str, List[str]]]) +slots.TestRunSession_test_run_parameters = Slot(uri=TTM.test_run_parameters, name="TestRunSession_test_run_parameters", curie=TTM.curie('test_run_parameters'), + model_uri=TTM.TestRunSession_test_run_parameters, domain=TestRunSession, range=Optional[Union[Union[dict, TestEntityParameter], List[Union[dict, TestEntityParameter]]]]) slots.TestRunSession_test_entities = Slot(uri=TTM.test_entities, name="TestRunSession_test_entities", curie=TTM.curie('test_entities'), model_uri=TTM.TestRunSession_test_entities, domain=TestRunSession, range=Optional[Union[Dict[Union[str, TestEntityId], Union[dict, TestEntity]], List[Union[dict, TestEntity]]]]) \ No newline at end of file diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index 02d61cf..f1e46ad 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -88,6 +88,7 @@ classes: - name - description - tags + - test_runner_settings TestMetadata: description: >- @@ -107,8 +108,8 @@ classes: TestAsset: description: >- Represents a Test Asset, which is a single specific instance of - TestCase-agnostic semantic parameters representing the - specification of a Translator test target with inputs and (expected) outputs. + TestCase-agnostic semantic parameters representing the specification + of a Translator test target with inputs and (expected) outputs. is_a: TestEntity slots: - input_id @@ -127,7 +128,6 @@ classes: - in_v1 - well_known - test_reference - - runner_settings - test_metadata slot_usage: id: @@ -137,9 +137,9 @@ classes: description: >- One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a "Block List" collection - runner_settings: + test_runner_settings: description: >- - Settings for the test harness, e.g. "inferred" + Scalar settings for the TestRunner, e.g. "inferred" AcceptanceTestAsset: is_a: TestAsset @@ -190,18 +190,15 @@ classes: TestCase, used to probe a particular test condition. is_a: TestEntity slots: - - test_env - query_type - test_assets - preconditions - trapi_template - - components - test_case_objective - test_case_source - test_case_predicate_name - test_case_predicate_id - test_case_input_id - - test_case_runner_settings slot_usage: test_assets: aliases: ["Block List"] @@ -230,32 +227,6 @@ classes: # test_assets: # range: QuantitativeTestAsset - ComplianceTestCase: - is_a: TestCase - description: >- - TRAPI and Biolink Model standards compliance test - slots: - - trapi_version - - biolink_version - slot_usage: -# test_assets: -# range: ComplianceTestAsset - - KnowledgeGraphNavigationTestCase: - is_a: ComplianceTestCase - description: >- - Knowledge Graph navigation integration test - slot_usage: -# test_assets: -# range: KnowledgeGraphNavigationTestAsset - - OneHopTestCase: - is_a: KnowledgeGraphNavigationTestCase - description: >- - 'One Hop' Knowledge Graph navigation integration test - slot_usage: -# test_assets: -# range: OneHopTestAsset ##################### # Test Suite Models # @@ -304,19 +275,6 @@ classes: # TestRunner Models # ##################### - TestRunnerConfiguration: - description: >- - General configuration parameters and test data input - for a single invocation of a TestRunner. - is_a: TestEntity - slots: - - test_run_parameters - slot_usage: - tags: - description: >- - One or more 'tags' slot values (slot inherited from TestEntity) - should generally identify the TestRunner(s) using this configuration. - TestCaseResult: description: >- The outcome of a TestRunner run of one specific TestCase. @@ -328,18 +286,28 @@ classes: TestRunSession: description: >- - A single invocation of a TestRunner. + Single run of a TestRunner in a given environment, with a specified + set of test_entities (generally, one or more instances of TestSuite). is_a: TestEntity slots: + - components + - test_env - test_runner_name + - test_run_parameters - test_entities - test_case_results - timestamp slot_usage: + test_run_parameters: + description: >- + Different TestRunners could expect additional global test + configuration parameters, like the applicable TRAPI version + ("trapi_version") or Biolink Model versions ("biolink_version"). test_entities: description: >- - Different TestRunners may expect specific kinds of TestEntity as input. - These 'test_entities' one or more instances of TestAsset, TestCase or TestSuite. + 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. TestOutput: description: >- @@ -407,7 +375,7 @@ slots: test_entity_parameters: description: >- - One or more parameters documenting target characteristics of a TestEntity. + One or more 'tag = value' parameters documenting target characteristics of a TestEntity. range: TestEntityParameter multivalued: true inlined: true @@ -554,18 +522,10 @@ slots: aliases: ["Well Known"] range: boolean - runner_settings: - aliases: ["Settings"] - description: >- - Settings for the test harness for TestAsset - range: string - multivalued: true - required: true - - test_case_runner_settings: + test_runner_settings: aliases: ["Settings"] description: >- - Settings for the test harness for TestCase + Scalar parameters for the TestRunner processing a given TestEntity. range: string multivalued: true required: true @@ -753,8 +713,8 @@ slots: test_run_parameters: description: >- - Parameters for TestRunnerConfiguration that inform the TestHarness - and TestRunners about the general characteristics of a test run. + TestRunSession parameters informing a TestHarness about + the global characteristics of TestRunner processing tests. is_a: test_entity_parameters test_suite_id: From 15b6163f815990fc6939b87ecf8d26723517bb92 Mon Sep 17 00:00:00 2001 From: Richard Bruskiewich Date: Wed, 6 Mar 2024 18:53:48 -0800 Subject: [PATCH 4/6] Repaired example data to fix unit tests --- project/excel/translator_testing_model.xlsx | Bin 18184 -> 18183 bytes .../graphql/translator_testing_model.graphql | 36 +- .../translator_testing_model.context.jsonld | 2 +- .../jsonld/translator_testing_model.jsonld | 8 +- .../translator_testing_model.schema.json | 76 +- project/owl/translator_testing_model.owl.ttl | 602 ++++----- .../shacl/translator_testing_model.shacl.ttl | 1130 ++++++++--------- project/shex/translator_testing_model.shex | 4 +- .../sqlschema/translator_testing_model.sql | 34 +- src/data/examples/Bad-TestAsset-001.yaml | 2 +- src/data/examples/Bad-TestAsset-002.yaml | 2 +- src/data/examples/Bad-TestAsset-003.yaml | 2 +- src/data/examples/Bad-TestAsset-004.yaml | 2 +- src/data/examples/Bad-TestAsset-005.yaml | 2 +- src/data/examples/Bad-TestAsset-006.yaml | 2 +- .../Good-AcceptanceTestAsset-001.yaml | 2 +- .../examples/Good-AcceptanceTestCase-001.yaml | 4 +- src/data/examples/Good-TestAsset-001.json | 2 +- src/data/examples/Good-TestAsset-001.yaml | 5 +- src/data/examples/Good-TestCase-001.json | 4 +- src/data/examples/Good-TestCase-001.yaml | 4 +- .../examples/Good-TestEntity-Complete.yaml | 2 + .../datamodel/pydanticmodel.py | 36 +- .../datamodel/pydanticmodel_v2.py | 36 +- .../datamodel/translator_testing_model.py | 46 +- .../schema/translator_testing_model.yaml | 2 +- 26 files changed, 1001 insertions(+), 1046 deletions(-) diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index e3f87978929c6ed4657dc1572913ebd167e7f0da..07f42ac6d3be903a3fc2eeedd4b47ee42aaa20de 100644 GIT binary patch delta 1204 zcmeC^V{GqZVy77y7z8IjuotPHI`N?2 zVFRAF_|#W>OK0&-SfnQ|pgv*343(KcD84NNkTJUv{!(bYWk2ChxY(s;e_j-pW|0to13dPrTLn{*{8jHT|3GxiiELvpBXltbQ}4CZym0^>d%1 zW792H7k%517NfIM!JT6U+mc^{o7u7zsWq7O>ML5C)*>3Nm|6rm^qv8Fb}(t>m9G@q)ySUQdts0*nIp$s6^g zH+w2EgN^c2aRSkk{Z!O8?@*Hgi(S)j0~;@=g^=sefygb>(}Sonhy~N8#_Jft#;gAP z60rtoyf4srsm)xbd%#AVFslX|?`ruRH2Ho4W_h7+DtCZDo5 zlLzsDL8UCf2K0$K1A{Oy0l`26p@1a|UHpftNYP+DyATd?#bXBj3jC9r^rGgy5eP{dIMEK-dSX;lM>7-I2NTEtZA zCHjIu_niP@Nfh^;)Bu~q=>j)dPzx*)02g5lo!sD}0do2(7a69RdSK~$5b2LVk&^~s z5mi^P5f-j8Od7^uksOFfJy7I^2~b3I@+MayTTpmiV*ThA1Pm*8E(Qi(WcM)cHe+C@ z$k8t@smw_&#u7n{ZZeD(ljYo`K<=>uaug?ryUBqQN4jHXh9b~|FL@Xkq)-g)nmol# j6Qp6kn+(%q+evn!VgcT)z;wjGAOnQe>>|HB46ZU0YAseZlXu7gXgo`Ro(q9NxIU9UZB7yS%Ky7KP+@AV|YkQ(s+9vrOD?bY(O(w7mp7yt`UsS8 z>_}VwWbLl{8#YFfpNeLF)Ox&K`kZT_`n1*k7r!d5{;#v;p2_WJR*zp@st`IM_3zK@ zKWxZ>wD|_3JsVSX(`HGI8b%;JS&~C_^B&G{5PP#I_XH*oy`1+Gn4T?gf*GV{Ij`#G zE|Iffu}JYbV71>Rc))VsB~&+S$vkJ`0|osf7UKmsm>3x5a7=!vA+_039x871dV0hc zV05^%fW-9yQawG0 zI)hk73JC~A3P86@(-^EU+ZAklovRGfO%tGqsK1c`W^|-Q zTw?v`76c4UcP<77USvlz?lEIvsL0VTE~(5(EymP3$xVjQa~oW0dSW~IzpbcPfHx}}NRbQ>R . @@ -146,66 +146,63 @@ ttm:AcceptanceTestAsset a owl:Class, rdfs:label "AcceptanceTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:scientific_question ], + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_date ], + owl:maxCardinality 1 ; + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_result ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:answer_informal_concept ], + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:notes ], + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:direction ], + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:top_level ], + owl:maxCardinality 1 ; + owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ExpectedResultsEnum ; - owl:onProperty ttm:expected_result ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:answer_informal_concept ], + owl:minCardinality 0 ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:notes ], + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:top_level ], + owl:minCardinality 0 ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:string_entry ], + owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_node ], + owl:onProperty ttm:direction ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:direction ], + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:string_entry ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:query_node ], + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_environment ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_result ], + owl:maxCardinality 1 ; + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:minCardinality 0 ; @@ -214,26 +211,29 @@ ttm:AcceptanceTestAsset a owl:Class, owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:must_pass_environment ], + owl:minCardinality 0 ; + owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_environment ], + owl:minCardinality 0 ; + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:allValuesFrom ttm:DirectionEnum ; owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:notes ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; + owl:maxCardinality 1 ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_date ], + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:allValuesFrom ttm:NodeEnum ; owl:onProperty ttm:query_node ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:notes ], ttm:TestAsset ; skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; skos:inScheme . @@ -249,18 +249,18 @@ ttm:TestOutput a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_id ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:pks ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestResultPKSet ; owl:onProperty ttm:pks ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:pks ], + [ a owl:Restriction ; + 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 . @@ -345,22 +345,22 @@ ttm:Qualifier a owl:Class, rdfs:label "Qualifier" ; rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:value ], + owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ 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 ], + 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:value ], + owl:onProperty ttm:parameter ], ttm:TestEntityParameter ; skos:inScheme . @@ -383,31 +383,31 @@ ttm:TestCaseResult a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCaseResult" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:TestCase ; owl:onProperty ttm:test_case ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_result ], + owl:onProperty ttm:test_case ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_case ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_suite_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case ], + owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCaseResultEnum ; owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_suite_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_suite_id ], ttm:TestEntity ; skos:definition "The outcome of a TestRunner run of one specific TestCase." ; @@ -436,18 +436,18 @@ ttm:TestEntityParameter a owl:Class, owl:onProperty ttm:value ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:value ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:value ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:parameter ] ; skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; skos:inScheme . @@ -551,68 +551,68 @@ ttm:TestResultPKSet a owl:Class, linkml:ClassDefinition ; rdfs:label "TestResultPKSet" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:improving ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:merged_pk ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:bte ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:unsecret ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:merged_pk ], + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:improving ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:bte ], [ 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:allValuesFrom linkml:String ; owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:parent_pk ], ttm:TestEntity ; skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . @@ -652,22 +652,22 @@ ttm:TestSuiteSpecification a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuiteSpecification" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_data_file_locator ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_data_file_format ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:allValuesFrom ttm:FileFormatEnum ; owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; 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." ; @@ -769,89 +769,59 @@ ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_issue ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:semantic_severity ], + owl:onProperty ttm:well_known ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_name ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_name ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:allValuesFrom ttm:association_category ; owl:onProperty ttm:association ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:in_v1 ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:association ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestIssueEnum ; - owl:onProperty ttm:test_issue ], + owl:minCardinality 0 ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:well_known ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:output_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:semantic_severity ], + owl:minCardinality 0 ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_reference ], @@ -859,86 +829,116 @@ ttm:TestAsset a owl:Class, owl:allValuesFrom linkml:Boolean ; owl:onProperty ttm:well_known ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:input_id ], + owl:allValuesFrom ttm:SemanticSeverityEnum ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:input_name ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:well_known ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:output_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_settings ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:output_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:output_id ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_runner_settings ], + owl:minCardinality 0 ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Boolean ; owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:allValuesFrom ttm:TestIssueEnum ; + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:output_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_issue ], + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], 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 . @@ -947,29 +947,23 @@ ttm:TestMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_annotations ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_annotations ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_annotations ], + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_source ], + owl:onProperty ttm:test_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_source ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_source ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_objective ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_objective ], @@ -977,11 +971,17 @@ ttm:TestMetadata a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_source ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:test_source ], + [ a owl:Restriction ; + 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." ; skos:inScheme . @@ -995,38 +995,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:maxCardinality 1 ; - owl:onProperty ttm:test_persona ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestPersonaEnum ; - owl:onProperty ttm:test_persona ], - [ a owl:Restriction ; owl:allValuesFrom ttm:TestCase ; owl:onProperty ttm:test_cases ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSuiteSpecification ; - 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_suite_specification ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_specification ], + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom ttm:TestMetadata ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; + owl:minCardinality 1 ; owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_suite_specification ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestPersonaEnum ; + owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestSuiteSpecification ; + owl:onProperty ttm:test_suite_specification ], 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 . @@ -1446,86 +1446,86 @@ ttm:TestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:preconditions ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TrapiTemplateEnum ; - owl:onProperty ttm:trapi_template ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_source ], + owl:onProperty ttm:test_case_predicate_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_source ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:allValuesFrom owl:Thing ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_id ], + owl:allValuesFrom ttm:QueryTypeEnum ; + owl:onProperty ttm:query_type ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_input_id ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom owl:Thing ; - owl:onProperty ttm:test_assets ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:maxCardinality 1 ; + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_case_objective ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_case_source ], + owl:minCardinality 0 ; + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_case_input_id ], + owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_type ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:QueryTypeEnum ; - owl:onProperty ttm:query_type ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Precondition ; - owl:onProperty ttm:preconditions ], + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:query_type ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_input_id ], + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_case_source ], ttm:TestEntity ; skos:definition "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; skos:inScheme . @@ -1612,9 +1612,12 @@ ttm:TestEntity a owl:Class, rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:onProperty ttm:name ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -1622,33 +1625,30 @@ ttm:TestEntity a owl:Class, [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:description ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:description ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:description ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:name ], + owl:onProperty ttm:description ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:name ] ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ] ; skos:definition "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; skos:inScheme . diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index 78b5085..6e84e7a 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -8,66 +8,65 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - sh:order 13 ; - 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 10 ; - sh:path schema1:name ], - [ sh:class ttm:AcceptanceTestAsset ; + sh:property [ sh:class ttm:AcceptanceTestAsset ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_assets ], - [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 7 ; sh:path ttm:test_case_predicate_id ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 13 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], + sh:order 10 ; + 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: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:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:trapi_template ], + sh:order 4 ; + sh:path ttm:test_case_objective ], + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:test_case_predicate_name ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 9 ; sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ], + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 12 ; + sh:path schema1:additionalType ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:preconditions ], - [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 12 ; - sh:path schema1:additionalType ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:trapi_template ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; @@ -78,32 +77,40 @@ ttm:AcceptanceTestCase a sh:NodeShape ; ttm:AcceptanceTestSuite a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], + sh:property [ 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:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], + [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + 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:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ], + 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:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -111,15 +118,6 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ 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:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -138,123 +136,121 @@ ttm:OneHopTestSuite a sh:NodeShape ; 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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - 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: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:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], [ sh:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], + [ sh:datatype xsd:string ; + sh:description "A human-readable 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 tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; - sh:path ttm:test_metadata ] ; + sh:path ttm:test_metadata ], + [ 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:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + 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:QuantitativeTestCase a sh:NodeShape ; sh:closed true ; sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Type of TestCase query." ; + sh:property [ 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:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 13 ; + sh:path ttm:test_runner_settings ], + [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:query_type ], + [ sh: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: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 12 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 11 ; + 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:maxCount 1 ; + sh:order 3 ; + sh:path ttm:trapi_template ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 9 ; sh:path schema1:identifier ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_predicate_id ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - sh:order 13 ; - sh:path ttm:test_runner_settings ], [ 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:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:trapi_template ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:description ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 12 ; - sh:path schema1:additionalType ], - [ 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:order 7 ; + sh:path ttm:test_case_predicate_id ] ; sh:targetClass ttm:QuantitativeTestCase . ttm:StandardsComplianceTestSuite a sh:NodeShape ; @@ -262,10 +258,27 @@ ttm:StandardsComplianceTestSuite a sh:NodeShape ; 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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; + sh:nodeKind sh:IRI ; + 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:minCount 1 ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], + 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:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; @@ -280,99 +293,66 @@ 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: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 description for a Test Entity" ; - sh:maxCount 1 ; - 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 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ], [ sh:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ] ; + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ] ; sh: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:maxCount 1 ; + 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:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_issue ], + [ sh:maxCount 1 ; sh:order 2 ; sh:path ttm:input_category ], - [ sh:datatype xsd:string ; + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:expected_output ], + sh:order 15 ; + sh:path ttm:test_reference ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 18 ; - sh:path schema1:name ], - [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 1 ; + sh:path ttm:input_name ], + [ 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:boolean ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:well_known ], - [ 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:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 6 ; - 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 15 ; - sh:path ttm:test_reference ], + sh:order 10 ; + sh:path ttm:expected_output ], [ sh:maxCount 1 ; sh:order 7 ; sh:path ttm:output_category ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], - [ sh:datatype xsd:boolean ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], + sh:minCount 1 ; + sh:order 17 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; @@ -381,23 +361,37 @@ ttm:TestEdgeData a sh:NodeShape ; 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:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], + 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 1 ; - sh:path ttm:input_name ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], + sh:order 18 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 21 ; - sh:path ttm:test_runner_settings ], + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:output_name ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:output_id ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ 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:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -411,104 +405,102 @@ 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 "CURIE id of a TestCase registered in the system." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ], + sh:order 0 ; + sh:path ttm:test_case_id ], + [ sh:class ttm:TestResultPKSet ; + sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path ttm:pks ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:name ], + [ 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 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; sh:order 6 ; sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 4 ; - sh:path schema1:description ], - [ sh:class ttm:TestResultPKSet ; - sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:pks ], - [ sh:datatype xsd:string ; - sh:description "CURIE id of a TestCase registered in the system." ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_case_id ], - [ sh: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:path schema1:description ] ; 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:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in [ rdf:rest () ] ; - sh:order 0 ; - sh:path ttm:components ], - [ sh: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: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:BlankNode ; - sh:order 3 ; - sh:path ttm:test_run_parameters ], + sh:property [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 7 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 10 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "Global system name of a TestRunner." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:test_runner_name ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 9 ; sh:path schema1:description ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 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:BlankNode ; + sh:order 3 ; + sh:path ttm:test_run_parameters ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; sh:order 11 ; 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 10 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:dateTime ; - sh:description "Date time when a given entity was created." ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:timestamp ], + sh:order 8 ; + sh:path schema1:name ], [ 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:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 7 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "Global system name of a TestRunner." ; + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_runner_name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:order 1 ; + sh:path ttm:test_env ], + [ 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 [ rdf:rest () ] ; + sh:order 0 ; + sh:path ttm:components ], + [ sh:datatype xsd:dateTime ; + sh:description "Date time when a given entity was created." ; sh:maxCount 1 ; - sh:order 8 ; - sh:path schema1:name ] ; + sh:order 6 ; + sh:path ttm:timestamp ] ; sh:targetClass ttm:TestRunSession . ttm:TestSuite a sh:NodeShape ; @@ -516,30 +508,23 @@ ttm:TestSuite a sh:NodeShape ; sh:description "Specification of a set of Test Cases, one of either with a static list of 'test_cases' or a dynamic 'test_suite_specification' slot values. Note: at least one slot or the other, but generally not both(?) needs to be present." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 7 ; sh:path schema1:additionalType ], + [ sh: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:minCount 1 ; 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: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:class ttm:TestCase ; + sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_suite_specification ], + 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 ; @@ -547,32 +532,36 @@ ttm:TestSuite a sh:NodeShape ; 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 description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; sh:path schema1:description ], - [ sh:class ttm:TestCase ; - sh:description "List of explicitly enumerated Test Cases." ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:test_cases ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ] ; + 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: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: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:property [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:predicate_id ], [ sh:maxCount 1 ; sh:order 12 ; sh:path ttm:input_category ], @@ -581,85 +570,70 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:order 23 ; sh:path ttm:in_v1 ], [ sh:datatype xsd:string ; + sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:answer_informal_concept ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path ttm:output_name ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_id ], + [ 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 "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 29 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 31 ; + sh:path ttm:test_runner_settings ], + [ sh:maxCount 1 ; + sh:order 15 ; + sh:path ttm:output_id ], + [ sh:datatype xsd:string ; + sh:description "The notes of the query" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path ttm:test_metadata ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_id ], + sh:order 9 ; + sh:path ttm:notes ], + [ 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:BlankNode ; + sh:order 19 ; + sh:path ttm:qualifiers ], [ sh:description "The deployment environment within which this test must pass." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:must_pass_environment ], - [ 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:boolean ; sh:maxCount 1 ; sh:order 24 ; sh:path ttm:well_known ], - [ sh:datatype xsd:string ; - sh:description "The notes of the query" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:notes ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 22 ; - sh:path ttm:semantic_severity ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 28 ; - sh:path schema1:name ], [ sh:description "The node of the (templated) TRAPI query to replace" ; sh:in ( "subject" "object" ) ; sh:maxCount 1 ; sh:order 8 ; sh:path ttm:query_node ], - [ sh: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: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: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: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:maxCount 1 ; - sh:order 15 ; - sh:path ttm:output_id ], + sh:order 11 ; + sh:path ttm:input_name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 20 ; sh:path ttm:expected_output ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 30 ; + sh:path schema1:additionalType ], [ sh:description "The expected result of the query" ; sh:in ( "include_good" "exclude_bad" ) ; sh:maxCount 1 ; @@ -668,107 +642,122 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; [ sh:maxCount 1 ; sh:order 17 ; sh:path ttm:output_category ], - [ 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:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 31 ; - sh:path ttm:test_runner_settings ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_id ], [ sh:datatype xsd:string ; + sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:input_name ], + sh:order 2 ; + sh:path ttm:scientific_question ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 29 ; - sh:path schema1:description ], + sh:order 14 ; + sh:path ttm:predicate_name ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 27 ; sh:path schema1:identifier ], + [ 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: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:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:answer_informal_concept ], + sh:order 28 ; + sh:path schema1:name ], + [ 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 "The direction of the expected query result triple" ; + sh:in ( "increased" "decreased" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:direction ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 21 ; + sh:path ttm:test_issue ], + [ sh:description "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:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path ttm:test_metadata ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 22 ; + sh:path ttm:semantic_severity ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 30 ; - sh:path schema1:additionalType ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNode ; - sh:order 19 ; - sh:path ttm:qualifiers ] ; + sh:description "The object of the core triple to be tested" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:string_entry ] ; sh:targetClass ttm:AcceptanceTestAsset . 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 "Encoded result of a single test run of a given test case" ; - sh:in ( "test_passed" "test_failed" "test_skipped" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_case_result ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; sh:order 7 ; sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + [ sh:class ttm:TestCase ; + sh:description "Slot referencing a single TestCase." ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ], + 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:class ttm:TestCase ; - sh:description "Slot referencing a single TestCase." ; + [ sh:description "Encoded result of a single test run of a given test case" ; + sh:in ( "test_passed" "test_failed" "test_skipped" ) ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_case ], + sh:order 2 ; + sh:path ttm:test_case_result ], + [ 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 description for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; - sh:path schema1:description ] ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestCaseResult . ttm:TestEntity a sh:NodeShape ; sh:closed false ; sh:description "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ], - [ 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 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:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; @@ -776,13 +765,12 @@ ttm:TestEntity a sh:NodeShape ; sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; 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:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path schema1:identifier ] ; sh:targetClass ttm:TestEntity . ttm:TestResultPKSet a sh:NodeShape ; @@ -791,38 +779,24 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:bte ], - [ 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:order 3 ; + sh:path ttm:arax ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:aragorn ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - sh:order 11 ; - sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:parent_pk ], + [ 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 1 ; sh:path ttm:merged_pk ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:unsecret ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -835,79 +809,106 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:path schema1:name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:arax ], + sh:order 6 ; + sh:path ttm:improving ], [ sh:datatype xsd:string ; sh:description "A human-readable 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:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:bte ], + [ 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 4 ; + sh:path ttm:unsecret ] ; sh:targetClass ttm:TestResultPKSet . ttm:TestAsset a sh:NodeShape ; sh:closed true ; sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:property [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:association ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; sh:order 12 ; sh:path ttm:semantic_severity ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 19 ; + sh:path schema1:description ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 13 ; sh:path ttm:in_v1 ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:well_known ], + [ sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:output_id ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_issue ], [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; sh:order 20 ; sh:path schema1:additionalType ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:predicate_name ], - [ sh:datatype xsd:boolean ; + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ], - [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], + sh:order 15 ; + sh:path ttm:test_reference ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 17 ; sh:path schema1:identifier ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:order 6 ; + sh:path ttm:output_name ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], + sh:order 1 ; + sh:path ttm:input_name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 10 ; sh:path ttm:expected_output ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], - [ 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: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:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -920,24 +921,9 @@ ttm:TestAsset a sh:NodeShape ; sh:maxCount 1 ; sh:order 18 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ], - [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:minCount 1 ; - sh:order 21 ; - sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ] ; + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ] ; sh:targetClass ttm:TestAsset . ttm:TestEntityParameter a sh:NodeShape ; @@ -961,73 +947,67 @@ ttm:Precondition a sh:NodeShape ; sh:description "Represents a precondition for a TestCase" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:description ], + 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 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - sh:order 4 ; - sh:path ttm:test_runner_settings ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ] ; + sh:order 2 ; + sh:path schema1:description ] ; sh:targetClass ttm:Precondition . 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: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 "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)" ; + 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: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 name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:name ], [ 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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - sh:order 6 ; - sh:path ttm:test_runner_settings ], + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path schema1:name ], [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; sh:in ( "TSV" "YAML" "JSON" ) ; sh:maxCount 1 ; @@ -1037,51 +1017,56 @@ ttm:TestSuiteSpecification a sh:NodeShape ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 2 ; - sh:path schema1:identifier ] ; + sh:path schema1:identifier ], + [ 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:targetClass ttm:TestSuiteSpecification . ttm:TestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "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:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], + sh:property [ 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 9 ; sh:path schema1:identifier ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], + sh:order 10 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; - sh:order 13 ; - sh:path ttm:test_runner_settings ], + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:test_case_predicate_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 "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 12 ; + 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 description for a Test Entity" ; sh:maxCount 1 ; sh:order 11 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + 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 ; @@ -1089,26 +1074,24 @@ ttm:TestCase a sh:NodeShape ; sh:order 1 ; sh:path ttm:test_assets ], [ 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 12 ; - sh:path schema1:additionalType ], - [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 13 ; + sh:path ttm:test_runner_settings ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:name ], + sh:order 0 ; + sh:path ttm:query_type ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:test_case_objective ], [ 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:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_predicate_id ] ; + sh:path ttm:trapi_template ] ; sh:targetClass ttm:TestCase . ttm:TestMetadata a sh:NodeShape ; @@ -1120,18 +1103,22 @@ ttm:TestMetadata a sh:NodeShape ; 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:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], + sh:order 2 ; + sh:path ttm:test_objective ], [ 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 "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 0 ; + sh:path ttm:test_source ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:minCount 1 ; sh:order 8 ; sh:path ttm:test_runner_settings ], [ sh:description "A unique identifier for a Test Entity" ; @@ -1139,24 +1126,19 @@ ttm:TestMetadata a sh:NodeShape ; sh:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], - [ 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 0 ; - sh:path ttm:test_source ], [ sh:class ttm:TestEntityParameter ; sh:description "Metadata annotation." ; sh:nodeKind sh:BlankNode ; sh:order 3 ; sh:path ttm:test_annotations ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; sh:order 1 ; - sh:path ttm:test_reference ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_objective ] ; + sh:path ttm:test_reference ] ; sh:targetClass ttm:TestMetadata . diff --git a/project/shex/translator_testing_model.shex b/project/shex/translator_testing_model.shex index b260a5d..8a83059 100644 --- a/project/shex/translator_testing_model.shex +++ b/project/shex/translator_testing_model.shex @@ -156,7 +156,7 @@ linkml:Sparqlpath xsd:string @linkml:Uriorcurie ? ; @ ; schema1:additionalType @linkml:String * ; - @linkml:String + + @linkml:String * ) ; rdf:type [ ] ) @@ -211,7 +211,7 @@ linkml:Sparqlpath xsd:string ( $ ( schema1:name @linkml:String ? ; schema1:description @linkml:String ? ; schema1:additionalType @linkml:String * ; - @linkml:String + + @linkml:String * ) ; rdf:type [ ] ) diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index 1fb5973..67dcb3e 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -275,7 +275,7 @@ CREATE TABLE "TestSuite" ( CREATE TABLE "AcceptanceTestCase_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestCase" (id) ); @@ -296,14 +296,14 @@ CREATE TABLE "Precondition_tags" ( CREATE TABLE "Precondition_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "Precondition" (id) ); CREATE TABLE "QuantitativeTestCase_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "QuantitativeTestCase" (id) ); @@ -317,7 +317,7 @@ CREATE TABLE "QuantitativeTestCase_tags" ( CREATE TABLE "TestCase_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestCase" (id) ); @@ -338,7 +338,7 @@ CREATE TABLE "TestMetadata_tags" ( CREATE TABLE "TestMetadata_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestMetadata" (id) ); @@ -352,7 +352,7 @@ CREATE TABLE "TestOutput_tags" ( CREATE TABLE "TestOutput_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestOutput" (id) ); @@ -366,7 +366,7 @@ CREATE TABLE "TestRunSession_tags" ( CREATE TABLE "TestRunSession_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestRunSession" (id) ); @@ -394,7 +394,7 @@ CREATE TABLE "TestSuiteSpecification_tags" ( CREATE TABLE "TestSuiteSpecification_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestSuiteSpecification" (id) ); @@ -408,7 +408,7 @@ CREATE TABLE "AcceptanceTestAsset_tags" ( CREATE TABLE "AcceptanceTestAsset_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestAsset" (id) ); @@ -422,7 +422,7 @@ CREATE TABLE "AcceptanceTestSuite_tags" ( CREATE TABLE "AcceptanceTestSuite_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "AcceptanceTestSuite" (id) ); @@ -436,7 +436,7 @@ CREATE TABLE "OneHopTestSuite_tags" ( CREATE TABLE "OneHopTestSuite_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "OneHopTestSuite" (id) ); @@ -450,7 +450,7 @@ CREATE TABLE "StandardsComplianceTestSuite_tags" ( CREATE TABLE "StandardsComplianceTestSuite_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "StandardsComplianceTestSuite" (id) ); @@ -464,7 +464,7 @@ CREATE TABLE "TestAsset_tags" ( CREATE TABLE "TestAsset_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestAsset" (id) ); @@ -478,7 +478,7 @@ CREATE TABLE "TestCaseResult_tags" ( CREATE TABLE "TestCaseResult_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestCaseResult" (id) ); @@ -492,7 +492,7 @@ CREATE TABLE "TestEdgeData_tags" ( CREATE TABLE "TestEdgeData_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestEdgeData" (id) ); @@ -506,7 +506,7 @@ CREATE TABLE "TestResultPKSet_tags" ( CREATE TABLE "TestResultPKSet_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestResultPKSet" (id) ); @@ -520,7 +520,7 @@ CREATE TABLE "TestSuite_tags" ( CREATE TABLE "TestSuite_test_runner_settings" ( backref_id TEXT, - test_runner_settings TEXT NOT NULL, + test_runner_settings TEXT, PRIMARY KEY (backref_id, test_runner_settings), FOREIGN KEY(backref_id) REFERENCES "TestSuite" (id) ); diff --git a/src/data/examples/Bad-TestAsset-001.yaml b/src/data/examples/Bad-TestAsset-001.yaml index 451aa19..171adc6 100644 --- a/src/data/examples/Bad-TestAsset-001.yaml +++ b/src/data/examples/Bad-TestAsset-001.yaml @@ -10,6 +10,6 @@ input_id: PUBCHEM.COMPOUND:107970 predicate_name: treats output_id: MONDO:0005301 expected_output: Acceptable -runner_settings: +test_runner_settings: - "inferred" - "test" diff --git a/src/data/examples/Bad-TestAsset-002.yaml b/src/data/examples/Bad-TestAsset-002.yaml index ff7ef00..bb16005 100644 --- a/src/data/examples/Bad-TestAsset-002.yaml +++ b/src/data/examples/Bad-TestAsset-002.yaml @@ -11,6 +11,6 @@ description: Fingolimod treats multiple sclerosis predicate_name: treats output_id: MONDO:0005301 expected_output: Acceptable -runner_settings: +test_runner_settings: - "inferred" - "test" diff --git a/src/data/examples/Bad-TestAsset-003.yaml b/src/data/examples/Bad-TestAsset-003.yaml index 7a327f6..5a8f6dc 100644 --- a/src/data/examples/Bad-TestAsset-003.yaml +++ b/src/data/examples/Bad-TestAsset-003.yaml @@ -11,6 +11,6 @@ input_id: PUBCHEM.COMPOUND:107970 #predicate_name: treats output_id: MONDO:0005301 expected_output: Acceptable -runner_settings: +test_runner_settings: - "inferred" - "test" diff --git a/src/data/examples/Bad-TestAsset-004.yaml b/src/data/examples/Bad-TestAsset-004.yaml index 5f40e3a..7c1a41a 100644 --- a/src/data/examples/Bad-TestAsset-004.yaml +++ b/src/data/examples/Bad-TestAsset-004.yaml @@ -11,6 +11,6 @@ input_id: PUBCHEM.COMPOUND:107970 predicate_name: treats #output_id: MONDO:0005301 expected_output: Acceptable -runner_settings: +test_runner_settings: - "inferred" - "test" diff --git a/src/data/examples/Bad-TestAsset-005.yaml b/src/data/examples/Bad-TestAsset-005.yaml index bf1d611..a0d29b7 100644 --- a/src/data/examples/Bad-TestAsset-005.yaml +++ b/src/data/examples/Bad-TestAsset-005.yaml @@ -11,6 +11,6 @@ input_id: PUBCHEM.COMPOUND:107970 predicate_name: treats #output_id: MONDO:0005301 expected_output: Acceptable -runner_settings: +test_runner_settings: - "inferred" - "test" diff --git a/src/data/examples/Bad-TestAsset-006.yaml b/src/data/examples/Bad-TestAsset-006.yaml index 87416cf..64aa600 100644 --- a/src/data/examples/Bad-TestAsset-006.yaml +++ b/src/data/examples/Bad-TestAsset-006.yaml @@ -11,6 +11,6 @@ input_id: PUBCHEM.COMPOUND:107970 predicate_name: treats output_id: MONDO:0005301 expected_output: Acceptable -#runner_settings: +#test_runner_settings: # - "inferred" # - "test" diff --git a/src/data/examples/Good-AcceptanceTestAsset-001.yaml b/src/data/examples/Good-AcceptanceTestAsset-001.yaml index 2dcfc1a..2a48722 100644 --- a/src/data/examples/Good-AcceptanceTestAsset-001.yaml +++ b/src/data/examples/Good-AcceptanceTestAsset-001.yaml @@ -31,7 +31,7 @@ expected_output: NeverShow test_metadata: id: "test:1" test_source: SMURF -runner_settings: +test_runner_settings: - "inferred" - "test" diff --git a/src/data/examples/Good-AcceptanceTestCase-001.yaml b/src/data/examples/Good-AcceptanceTestCase-001.yaml index 6bd3daf..ca6f646 100644 --- a/src/data/examples/Good-AcceptanceTestCase-001.yaml +++ b/src/data/examples/Good-AcceptanceTestCase-001.yaml @@ -13,7 +13,7 @@ id: example:AcceptanceTestCase001 name: foo bar description: This is an acceptance test case -test_case_runner_settings: +test_runner_settings: - "inferred" - "test" test_assets: @@ -24,7 +24,7 @@ test_assets: predicate_name: treats output_id: DRUGBANK:DB01592 expected_output: NeverShow - runner_settings: + test_runner_settings: - "inferred" - "test" test_metadata: diff --git a/src/data/examples/Good-TestAsset-001.json b/src/data/examples/Good-TestAsset-001.json index 5349a8f..f773550 100644 --- a/src/data/examples/Good-TestAsset-001.json +++ b/src/data/examples/Good-TestAsset-001.json @@ -6,7 +6,7 @@ "predicate_name": "treats", "output_id": "MONDO:0005301", "expected_output": "Acceptable", - "runner_settings": ["inferred", "test"], + "test_runner_settings": ["inferred", "test"], "test_metadata": { "id": "example:TestAsset001" } diff --git a/src/data/examples/Good-TestAsset-001.yaml b/src/data/examples/Good-TestAsset-001.yaml index 2d27cba..31fd44d 100644 --- a/src/data/examples/Good-TestAsset-001.yaml +++ b/src/data/examples/Good-TestAsset-001.yaml @@ -27,7 +27,6 @@ # - in_v1 # - well_known # - test_reference -# - runner_settings # slot_usage: # id: # aliases: ["AssetIdentifier"] @@ -36,7 +35,7 @@ # description: >- # One or more 'tags' slot values (inherited from TestEntity) should generally # be defined to specify TestAsset membership in a "Block List" collection -# runner_settings: +# test_runner_settings: # description: >- # Settings for the test harness, e.g. "inferred" # @@ -55,6 +54,6 @@ in_v1: True well_known: False test_metadata: id: "example:TestAsset001" -runner_settings: +test_runner_settings: - "inferred" - "test" \ No newline at end of file diff --git a/src/data/examples/Good-TestCase-001.json b/src/data/examples/Good-TestCase-001.json index cf3a57b..d4763fe 100644 --- a/src/data/examples/Good-TestCase-001.json +++ b/src/data/examples/Good-TestCase-001.json @@ -11,11 +11,11 @@ "predicate_name": "treats", "output_id": "MONDO:0005301", "expected_output": "Acceptable", - "runner_settings": ["inferred", "test"], + "test_runner_settings": ["inferred", "test"], "test_metadata": { "id": "example:TestMetadata001" } } ], - "test_case_runner_settings": ["inferred", "test"] + "test_runner_settings": ["inferred", "test"] } diff --git a/src/data/examples/Good-TestCase-001.yaml b/src/data/examples/Good-TestCase-001.yaml index 1fbdf65..2af86e1 100644 --- a/src/data/examples/Good-TestCase-001.yaml +++ b/src/data/examples/Good-TestCase-001.yaml @@ -43,12 +43,12 @@ test_assets: predicate_name: treats output_id: DRUGBANK:DB01592 expected_output: NeverShow - runner_settings: + test_runner_settings: - "inferred" - "test" test_metadata: id: test:1 test_source: SMURF -test_case_runner_settings: +test_runner_settings: - "inferred" - "test" \ No newline at end of file diff --git a/src/data/examples/Good-TestEntity-Complete.yaml b/src/data/examples/Good-TestEntity-Complete.yaml index ad412a8..2671e65 100644 --- a/src/data/examples/Good-TestEntity-Complete.yaml +++ b/src/data/examples/Good-TestEntity-Complete.yaml @@ -11,6 +11,8 @@ # - id # - name # - description +# - tags +# - test_runner_settings # # where the slots are: # diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index c6bbcd2..903a3cf 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -244,7 +244,7 @@ class TestEntity(ConfiguredBaseModel): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestMetadata(TestEntity): @@ -259,7 +259,7 @@ class TestMetadata(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestAsset(TestEntity): @@ -287,7 +287,7 @@ class TestAsset(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class AcceptanceTestAsset(TestAsset): @@ -325,7 +325,7 @@ class AcceptanceTestAsset(TestAsset): 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""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class TestEdgeData(TestAsset): @@ -353,7 +353,7 @@ class TestEdgeData(TestAsset): 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""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class Precondition(TestEntity): @@ -364,7 +364,7 @@ class Precondition(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCase(TestEntity): @@ -384,7 +384,7 @@ class TestCase(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestCase(TestCase): @@ -404,7 +404,7 @@ class AcceptanceTestCase(TestCase): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class QuantitativeTestCase(TestCase): @@ -424,7 +424,7 @@ class QuantitativeTestCase(TestCase): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuiteSpecification(TestEntity): @@ -437,7 +437,7 @@ class TestSuiteSpecification(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuite(TestEntity): @@ -452,7 +452,7 @@ class TestSuite(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestSuite(TestSuite): @@ -465,7 +465,7 @@ class AcceptanceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class BenchmarkTestSuite(ConfiguredBaseModel): @@ -487,7 +487,7 @@ class StandardsComplianceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class OneHopTestSuite(TestSuite): @@ -502,7 +502,7 @@ class OneHopTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCaseResult(TestEntity): @@ -516,7 +516,7 @@ class TestCaseResult(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestRunSession(TestEntity): @@ -534,7 +534,7 @@ class TestRunSession(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestOutput(TestEntity): @@ -547,7 +547,7 @@ class TestOutput(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestResultPKSet(TestEntity): @@ -565,7 +565,7 @@ class TestResultPKSet(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") diff --git a/src/translator_testing_model/datamodel/pydanticmodel_v2.py b/src/translator_testing_model/datamodel/pydanticmodel_v2.py index a42eb05..aae6478 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel_v2.py +++ b/src/translator_testing_model/datamodel/pydanticmodel_v2.py @@ -240,7 +240,7 @@ class TestEntity(ConfiguredBaseModel): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestMetadata(TestEntity): @@ -255,7 +255,7 @@ class TestMetadata(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestAsset(TestEntity): @@ -283,7 +283,7 @@ class TestAsset(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class AcceptanceTestAsset(TestAsset): @@ -321,7 +321,7 @@ class AcceptanceTestAsset(TestAsset): 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""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class TestEdgeData(TestAsset): @@ -349,7 +349,7 @@ class TestEdgeData(TestAsset): 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""") tags: Optional[List[str]] = Field(default_factory=list, description="""One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar settings for the TestRunner, e.g. \"inferred\"""") class Precondition(TestEntity): @@ -360,7 +360,7 @@ class Precondition(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCase(TestEntity): @@ -380,7 +380,7 @@ class TestCase(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestCase(TestCase): @@ -400,7 +400,7 @@ class AcceptanceTestCase(TestCase): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class QuantitativeTestCase(TestCase): @@ -420,7 +420,7 @@ class QuantitativeTestCase(TestCase): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuiteSpecification(TestEntity): @@ -433,7 +433,7 @@ class TestSuiteSpecification(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestSuite(TestEntity): @@ -448,7 +448,7 @@ class TestSuite(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class AcceptanceTestSuite(TestSuite): @@ -461,7 +461,7 @@ class AcceptanceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class BenchmarkTestSuite(ConfiguredBaseModel): @@ -483,7 +483,7 @@ class StandardsComplianceTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class OneHopTestSuite(TestSuite): @@ -498,7 +498,7 @@ class OneHopTestSuite(TestSuite): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestCaseResult(TestEntity): @@ -512,7 +512,7 @@ class TestCaseResult(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestRunSession(TestEntity): @@ -530,7 +530,7 @@ class TestRunSession(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestOutput(TestEntity): @@ -543,7 +543,7 @@ class TestOutput(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") class TestResultPKSet(TestEntity): @@ -561,7 +561,7 @@ class TestResultPKSet(TestEntity): 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""") tags: Optional[List[str]] = Field(default_factory=list, 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.""") - test_runner_settings: List[str] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") + test_runner_settings: Optional[List[str]] = Field(default_factory=list, description="""Scalar parameters for the TestRunner processing a given TestEntity.""") diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index a1bd6be..03f41ac 100644 --- a/src/translator_testing_model/datamodel/translator_testing_model.py +++ b/src/translator_testing_model/datamodel/translator_testing_model.py @@ -1,5 +1,5 @@ # Auto generated from translator_testing_model.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-03-06T16:19:32 +# Generation date: 2024-03-06T18:42:02 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -208,10 +208,10 @@ class TestEntity(YAMLRoot): class_model_uri: ClassVar[URIRef] = TTM.TestEntity id: Union[str, TestEntityId] = None - test_runner_settings: Union[str, List[str]] = None name: Optional[str] = None description: Optional[str] = None tags: Optional[Union[str, List[str]]] = empty_list() + test_runner_settings: Optional[Union[str, List[str]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -219,12 +219,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.id, TestEntityId): self.id = TestEntityId(self.id) - if self._is_empty(self.test_runner_settings): - self.MissingRequiredField("test_runner_settings") - if not isinstance(self.test_runner_settings, list): - self.test_runner_settings = [self.test_runner_settings] if self.test_runner_settings is not None else [] - self.test_runner_settings = [v if isinstance(v, str) else str(v) for v in self.test_runner_settings] - if self.name is not None and not isinstance(self.name, str): self.name = str(self.name) @@ -235,6 +229,10 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): 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] + if not isinstance(self.test_runner_settings, list): + self.test_runner_settings = [self.test_runner_settings] if self.test_runner_settings is not None else [] + self.test_runner_settings = [v if isinstance(v, str) else str(v) for v in self.test_runner_settings] + super().__post_init__(**kwargs) @@ -252,7 +250,6 @@ class TestMetadata(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestMetadata id: Union[str, TestMetadataId] = None - test_runner_settings: Union[str, List[str]] = None test_source: Optional[Union[str, "TestSourceEnum"]] = None test_reference: Optional[Union[str, URIorCURIE]] = None test_objective: Optional[Union[str, "TestObjectiveEnum"]] = None @@ -295,7 +292,6 @@ class TestAsset(TestEntity): id: Union[str, TestAssetId] = None test_metadata: Union[dict, TestMetadata] = None - test_runner_settings: Union[str, List[str]] = None input_id: Optional[Union[str, URIorCURIE]] = None input_name: Optional[str] = None input_category: Optional[Union[str, ConceptCategory]] = None @@ -313,6 +309,7 @@ class TestAsset(TestEntity): well_known: Optional[Union[bool, Bool]] = None test_reference: Optional[Union[str, URIorCURIE]] = None tags: Optional[Union[str, List[str]]] = empty_list() + test_runner_settings: Optional[Union[str, List[str]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -325,12 +322,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if not isinstance(self.test_metadata, TestMetadata): self.test_metadata = TestMetadata(**as_dict(self.test_metadata)) - if self._is_empty(self.test_runner_settings): - self.MissingRequiredField("test_runner_settings") - if not isinstance(self.test_runner_settings, list): - self.test_runner_settings = [self.test_runner_settings] if self.test_runner_settings is not None else [] - self.test_runner_settings = [v if isinstance(v, str) else str(v) for v in self.test_runner_settings] - if self.input_id is not None and not isinstance(self.input_id, URIorCURIE): self.input_id = URIorCURIE(self.input_id) @@ -384,6 +375,10 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): 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] + if not isinstance(self.test_runner_settings, list): + self.test_runner_settings = [self.test_runner_settings] if self.test_runner_settings is not None else [] + self.test_runner_settings = [v if isinstance(v, str) else str(v) for v in self.test_runner_settings] + super().__post_init__(**kwargs) @@ -401,7 +396,6 @@ class AcceptanceTestAsset(TestAsset): id: Union[str, AcceptanceTestAssetId] = None test_metadata: Union[dict, TestMetadata] = None - test_runner_settings: Union[str, List[str]] = None must_pass_date: Optional[Union[str, XSDDate]] = None must_pass_environment: Optional[Union[str, "TestEnvEnum"]] = None scientific_question: Optional[str] = None @@ -467,7 +461,6 @@ class TestEdgeData(TestAsset): id: Union[str, TestEdgeDataId] = None test_metadata: Union[dict, TestMetadata] = None - test_runner_settings: Union[str, List[str]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -491,7 +484,6 @@ class Precondition(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.Precondition id: Union[str, PreconditionId] = None - test_runner_settings: Union[str, List[str]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -517,7 +509,6 @@ class TestCase(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestCase id: Union[str, TestCaseId] = None - test_runner_settings: Union[str, List[str]] = None test_assets: Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]] = empty_dict() query_type: Optional[Union[str, "QueryTypeEnum"]] = None preconditions: Optional[Union[Union[str, PreconditionId], List[Union[str, PreconditionId]]]] = empty_list() @@ -584,7 +575,6 @@ class AcceptanceTestCase(TestCase): class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestCase id: Union[str, AcceptanceTestCaseId] = None - test_runner_settings: Union[str, List[str]] = None test_assets: Union[Dict[Union[str, AcceptanceTestAssetId], Union[dict, AcceptanceTestAsset]], List[Union[dict, AcceptanceTestAsset]]] = empty_dict() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -613,7 +603,6 @@ class QuantitativeTestCase(TestCase): class_model_uri: ClassVar[URIRef] = TTM.QuantitativeTestCase id: Union[str, QuantitativeTestCaseId] = None - test_runner_settings: Union[str, List[str]] = None test_assets: Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]] = empty_dict() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -638,7 +627,6 @@ class TestSuiteSpecification(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestSuiteSpecification id: Union[str, TestSuiteSpecificationId] = None - test_runner_settings: Union[str, List[str]] = None test_data_file_locator: Optional[Union[str, URIorCURIE]] = None test_data_file_format: Optional[Union[str, "FileFormatEnum"]] = None @@ -672,7 +660,6 @@ class TestSuite(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestSuite id: Union[str, TestSuiteId] = None - test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None test_persona: Optional[Union[str, "TestPersonaEnum"]] = None test_cases: Optional[Union[Dict[Union[str, TestCaseId], Union[dict, TestCase]], List[Union[dict, TestCase]]]] = empty_dict() @@ -710,7 +697,6 @@ class AcceptanceTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.AcceptanceTestSuite id: Union[str, AcceptanceTestSuiteId] = None - test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -747,7 +733,6 @@ class StandardsComplianceTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.StandardsComplianceTestSuite id: Union[str, StandardsComplianceTestSuiteId] = None - test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -772,7 +757,6 @@ class OneHopTestSuite(TestSuite): class_model_uri: ClassVar[URIRef] = TTM.OneHopTestSuite id: Union[str, OneHopTestSuiteId] = None - test_runner_settings: Union[str, List[str]] = None test_metadata: Union[dict, TestMetadata] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -797,7 +781,6 @@ class TestCaseResult(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestCaseResult id: Union[str, TestCaseResultId] = None - test_runner_settings: Union[str, List[str]] = None test_suite_id: Optional[Union[str, URIorCURIE]] = None test_case: Optional[Union[dict, TestCase]] = None test_case_result: Optional[Union[str, "TestCaseResultEnum"]] = None @@ -834,7 +817,6 @@ class TestRunSession(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestRunSession id: Union[str, TestRunSessionId] = None - test_runner_settings: Union[str, List[str]] = None components: Optional[Union[Union[str, "ComponentEnum"], List[Union[str, "ComponentEnum"]]]] = empty_list() test_env: Optional[Union[str, "TestEnvEnum"]] = None test_runner_name: Optional[str] = None @@ -886,7 +868,6 @@ class TestOutput(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestOutput id: Union[str, TestOutputId] = None - test_runner_settings: Union[str, List[str]] = None test_case_id: Optional[str] = None pks: Optional[Union[Union[str, TestResultPKSetId], List[Union[str, TestResultPKSetId]]]] = empty_list() @@ -919,7 +900,6 @@ class TestResultPKSet(TestEntity): class_model_uri: ClassVar[URIRef] = TTM.TestResultPKSet id: Union[str, TestResultPKSetId] = None - test_runner_settings: Union[str, List[str]] = None parent_pk: Optional[str] = None merged_pk: Optional[str] = None aragorn: Optional[str] = None @@ -1327,7 +1307,7 @@ class slots: model_uri=TTM.well_known, domain=None, range=Optional[Union[bool, Bool]]) 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=Union[str, List[str]]) + model_uri=TTM.test_runner_settings, domain=None, range=Optional[Union[str, List[str]]]) slots.must_pass_date = Slot(uri=TTM.must_pass_date, name="must_pass_date", curie=TTM.curie('must_pass_date'), model_uri=TTM.must_pass_date, domain=None, range=Optional[Union[str, XSDDate]]) @@ -1435,7 +1415,7 @@ class slots: model_uri=TTM.TestAsset_tags, domain=TestAsset, range=Optional[Union[str, List[str]]]) slots.TestAsset_test_runner_settings = Slot(uri=TTM.test_runner_settings, name="TestAsset_test_runner_settings", curie=TTM.curie('test_runner_settings'), - model_uri=TTM.TestAsset_test_runner_settings, domain=TestAsset, range=Union[str, List[str]]) + model_uri=TTM.TestAsset_test_runner_settings, domain=TestAsset, range=Optional[Union[str, List[str]]]) slots.TestCase_test_assets = Slot(uri=TTM.test_assets, name="TestCase_test_assets", curie=TTM.curie('test_assets'), model_uri=TTM.TestCase_test_assets, domain=TestCase, range=Union[Dict[Union[str, TestAssetId], Union[dict, TestAsset]], List[Union[dict, TestAsset]]]) diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index f1e46ad..acd3c8c 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -528,7 +528,7 @@ slots: Scalar parameters for the TestRunner processing a given TestEntity. range: string multivalued: true - required: true + required: false must_pass_date: description: >- From 4b38acea50b768e7b716d8d9aeea4a30562a3672 Mon Sep 17 00:00:00 2001 From: Richard Bruskiewich Date: Wed, 6 Mar 2024 18:54:20 -0800 Subject: [PATCH 5/6] ditto --- src/data/examples/Bad-TestEntity-001.yaml | 2 ++ .../Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/data/examples/Bad-TestEntity-001.yaml b/src/data/examples/Bad-TestEntity-001.yaml index 9676668..dbe6245 100644 --- a/src/data/examples/Bad-TestEntity-001.yaml +++ b/src/data/examples/Bad-TestEntity-001.yaml @@ -11,6 +11,8 @@ # - id # - name # - description +# - tags +# - test_runner_settings # # where the slots are: # diff --git a/src/data/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not b/src/data/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not index f9357e2..3f8643b 100644 --- a/src/data/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not +++ b/src/data/examples/Bad-TestEntity-002.yaml-uriorcurie_should_fail_but_does_not @@ -11,6 +11,8 @@ # - id # - name # - description +# - tags +# - test_runner_settings # # where the slots are: # From 51964bbecf2181a3df26e3e388d86a682974c904 Mon Sep 17 00:00:00 2001 From: Richard Bruskiewich Date: Thu, 7 Mar 2024 16:26:30 -0800 Subject: [PATCH 6/6] Fixed TestObjectiveEnum values as per feedback from Max --- project/excel/translator_testing_model.xlsx | Bin 18183 -> 18189 bytes .../translator_testing_model.context.jsonld | 2 +- .../jsonld/translator_testing_model.jsonld | 12 +- .../translator_testing_model.schema.json | 4 +- project/owl/translator_testing_model.owl.ttl | 614 +++++----- .../shacl/translator_testing_model.shacl.ttl | 1066 ++++++++--------- .../sqlschema/translator_testing_model.sql | 8 +- .../datamodel/pydanticmodel.py | 6 +- .../datamodel/pydanticmodel_v2.py | 6 +- .../datamodel/translator_testing_model.py | 12 +- .../schema/translator_testing_model.yaml | 6 +- 11 files changed, 868 insertions(+), 868 deletions(-) diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index 07f42ac6d3be903a3fc2eeedd4b47ee42aaa20de..d3abf3d2db153c0e6f1e0f0624247736be4ea295 100644 GIT binary patch delta 4060 zcmeH~XH-+!7RQrN3?)hzl0Yb-L+C_m2z4aV5z&B%Ql%+H=>b$ajCcV-P!teh6e$5@ z(UnIRX#!G*stBkcjLIldP5}9FwC4lN6!TU zfuJDF71tD4F_hBSGA+=Xr#zD)jY4ka%G@-`*3mu75lc)BBvyzeapYa{F(X!aLovwN zuWPPEcJ&JrhM{p@O~3FAD9n&2e~7H0A)Rz5ZCXhcXmV>}9QZYhXZ6*L>T;pM50mnxR*>w{psAR8G@dHkFV7hh3|;&9uuFVPgb=vc*9l zPD)P5i(pwsI!Z#waA*j4rvt#DXmTCX2{3FYO(rQO>vj+jXbcc!kswLrSkSqJu`{Ox zN;0^++25OJ>qJM7S7(zo9*k^ng&rl;O08UUXx~u7Y2#WiS*K`Kv!-Y?`gx5@v}YtZ z^46f6k>d>9ZgVb1st0%m-s_#Py;>nQuZ~;~KH+$6cme4ET6z^zLe1{S7vg{gaq&Bn67Ax5KYNP<1v11 z2_qc*b!Eql@I7y?!Z|+)>1fLxF(?j0cgziY^iFMA^!ybV&VnoXgAh!-a71)V?|ybt zRMuT!=Ad!+A#2%{;{)>{@k(c6MF_{+g3B(Zez`)jM5e78oFa3R>^cZYCH3%2)}!=! z*G1V6#dJt}`KF7V?ag&}HtkV#-{f2xt&n$h%{;@Z@MW=v=lwg$$Hv6EHxKGyb6%Mf zw?CToiP~^$Kjaym$rpU}B+mAZT(CRqsB6sg&d}E}9~&E0tOlS(e`!bBxLc7;b?>K4 zU71=NEK@tse6jKK{A<$3KaJt4dFNe7D`E{hDVz#AgUr%`w(#@08J5T&^&9Df@TgB5Mtp29CR5-^)_RcWAbcUX^A;7Q^j$yS*Pf6sF$83(|TXtt1R0j znasf&Nz(6Wut-JKV?k3b={D*Q{f26#V>GT1vmoY6W(5`RLL@CFSs;i9*O@}xe0%H4 zRWq1oB)uV7BC+}O&Qc3iW8!$R{7;OI?zOFWH)c!AW|b<>6lVx3`tEbm;|~FK;>}6p z`PT3#d`1FHCc@i~aYgyn=20icQR6%!bgAL;WC;Nv|eOjr!;^Kp267ND>PfJHuN^nhN zOt1>5@Z+qIEF4$Zx*uONB`pgkPBig%AnsqnpJFSw|9DinS`LH~4sI7>jSV{D!G_C? zHj#i3Qc8K+hnfsc?y466*vwYsv-U^f_zkV|Qv;u; zhq!o$9pxt5%HQj^KG*CQez>Nvi9#tBtzOt@I8d|}wbwjWe3er>)N>y%m_t=Ujn@K|Si#oRG z6HKg6if})jq_Z4wI;eVgS_CdWF*&!Ue5Xxe4(-oMFjXc&)lD~^jii%N*Lu-M zt6Qz$4IUYpbw~_vD)iVg8RGgicEWvXHIXv9j8$RPbvxV!JlH2t^`GJ2Bh?laJ2YLd0NO98sBEN@t z(*7d9hj`NdBEN@t(*7d9hj`NdBEN@tm;FH=n3jM8YABw6ao^V+{$JdG+Tj1MxGOH* zv|R^-Kt}XCxRZYorlXZWrf5911DK*k$xp0OavB zDH${uXzSbYcvy<+(M(B8pN>oD+16l-<0Rl3qOp&WU_Yh^{8V+P z-jMV25At;O`yW#Qupt7h4e%SnsW+}pxe^C#3ep2)@hhbpSAw kq|RtGL_pqZ0bjMadCUn6lmjaWgrs~!4uC+RxSgxN0nCxJxZR|J6rWU)!*;+{_(aycHh_M`?;_CaDBGxzK>*s)3d>FPgkfE z0t5odg4_y1a^W0Vk)iK5P3g^TGh&^P&pC@zQ8dWODU^DS#PE@vu(P)>Jsy5=j5BPB z(-{3c%iLHVqxi@v;jkS8eK_o1;{|tex^JDH97JbQ)2bjdIW&FeXqmUA%_uVE{=Qnr zr&*5=P-xWL6tBYcp+e09YG3zj&0=SUCF6knMi);cro_K(;(jUI+XC2Mjc4`81m5#i zS`*>ZHZHicP?PYlVTa58gZ%L8TlPae26MT-Y z6O6m<>NrlQ*fm!f5@1}9ow-3B@cryR(Nu+6AnLVPo|39QSj+;5-*rzf3MkQ2lmUTC z3_u_y(M-56!6q_L(LlKBvirb`4xlcJ<~A+$1H;8*BAD<3ARy2npaa9QyzI(k?tauo z=)R%J-M`yFZaiAxysSQoz>M`65`Ic>c5O6z9ToK3Jb`FO?AVi_(-=$8UD5)J95L%D zxTM8+JS9(=1(5KTT}xS*(0s#0?L-*$PyZw0GDKL{@|6Kz`3O8Y-zn&E3pa)f6r zc0FQ z5&ukxiQowt4+V+!^{l2Fc?WwZ&1!u-CK(CQ1FdcO%BJ@SMQ8Nl!cB&b>Vy`xRLO9! zGP6JDr-c7b-!#V!44c3_+rD?$-$YwGoRqYSokNgs?4%Ij}$D^G0w*Vy){=kGs>## zZ`1~z5bTf{_xV^RV5b%&_l`8C&h8?DuMEY}I!@;4-@RU-HL)q+4!^QjE^OI_YGmcg z5Tln{am6Z}*qjBE<=XI;w(L7L^RVwE%Dn`C0}(5-M6nYpR^%l(nwyE}m7p6`iox=W z(tIw3KRqatW{E7Y5~c=ds3BQ#`hH|rEGF459*KfGpv2i7RrG ztH~9|l4G8rcE|fEpB;%ZU@(KSHhT292sp(7=>1n;txcB7=1G?gn5rh{^OVf%S-W4_ zYQM}e?OZo~@qFUhYg>@i4MN4G7xvHegkvg0(r%-gi*J@)7-eQ|J!mXPVO7pat5?IUma@tgAU%{U1wtx#g#r`)L2vtDD!Eb>9}bR$M?91&>-(+NB^BnO zxpO4$)aLq(<<$We?5$RN0mF-m9r1rCbe8KXPJrUNrETDCZwJ!t0E` z7~qYCtKfvumB-@y_-oCn#mA}o({mlAtWIDBSuPSA$q9;@GhYRYx*Sb3Z`Z%VuG%c~+<|`D%|u1sQ#-=`rjw;d zLvz=7n8r?df<^mg=R;!(q&NAvl1ReBCbKk1QMk?dXT>Q+yvKJx!pN8&^qha2(+iKr z=E?D{z#aqPmc)JdKl-G3nf)ATy!1cUXYKg(JEMlJ8*Fw__JixK{PV{+y({Qr*8NwS zaH~Eqsk*wXuA#PThU!Ujp?llbDXg2E#`mwHyL*mfJ{3?O`V-tHXTVv*_JVLu6ftVx zwJ;t15&GSa;zzL?Yy1-XFR}k0h&>3c4%lk{68kT)|4+s4|6luO=Njr_#fuG4sE+}X zDAL?Sw2EZYDby!PoDr;}WHlF2xXwlz5;WBK%QG8i@`Yy>AaShm9B}|wVEI(y@K(o* zp8!|Fn0UFevFmTwJv~ z1qC6Y#Zb~;5I7B}q)1vA77@CzVuHNGUop###E|dbAYWrKRPqI?bU;ChaAIiGLDEZ# zVaQUfXpNnh{;{eqGcnP~QIf&V5e32G#SjB8{f{5J!_2>lY1wfQwk5_nX!IP1&oAub~S0eZl)?EnA( diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index 2772bfe..210efa8 100644 --- a/project/jsonld/translator_testing_model.context.jsonld +++ b/project/jsonld/translator_testing_model.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2024-03-06T18:41:58", + "generation_date": "2024-03-07T16:24:57", "source": "translator_testing_model.yaml" }, "@context": { diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index d71c55d..47de773 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -444,11 +444,11 @@ "description": "Quantitative test" }, { - "text": "OneHopTests", - "description": "One Hop Tests of knowledge graph navigation" + "text": "OneHopTest", + "description": "One Hop Test of knowledge graph navigation" }, { - "text": "StandardsValidation", + "text": "StandardsValidationTest", "description": "TRAPI and Biolink Model (\"reasoner-validator\") validation" } ] @@ -2474,9 +2474,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2024-03-06T18:41:46", - "source_file_size": 26898, - "generation_date": "2024-03-06T18:41:58", + "source_file_date": "2024-03-07T16:23:55", + "source_file_size": 26900, + "generation_date": "2024-03-07T16:24:58", "@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 28966cc..9ad660e 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -1141,8 +1141,8 @@ "AcceptanceTest", "BenchmarkTest", "QuantitativeTest", - "OneHopTests", - "StandardsValidation" + "OneHopTest", + "StandardsValidationTest" ], "title": "TestObjectiveEnum", "type": "string" diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index b72e6b5..28c680d 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -12,10 +12,10 @@ ttm:AcceptanceTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom ttm:AcceptanceTestAsset ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:allValuesFrom ttm:AcceptanceTestAsset ; + owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], ttm:TestCase ; skos:definition "See AcceptanceTestAsset above for more details." ; @@ -65,44 +65,29 @@ ttm:TestRunSession a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunSession" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_entities ], + owl:maxCardinality 1 ; + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:allValuesFrom ttm:ComponentEnum ; owl:onProperty ttm:components ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_results ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty ttm:timestamp ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResult ; - owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:timestamp ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_name ], + owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; owl:allValuesFrom owl:Thing ; owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:test_entities ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Datetime ; owl:onProperty ttm:timestamp ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_run_parameters ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_runner_name ], @@ -110,14 +95,29 @@ ttm:TestRunSession a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:components ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_run_parameters ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCaseResult ; + owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_results ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:test_run_parameters ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:timestamp ], 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 . @@ -145,95 +145,95 @@ ttm:AcceptanceTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_result ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:query_node ], + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; + owl:allValuesFrom ttm:DirectionEnum ; + owl:onProperty ttm:direction ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:answer_informal_concept ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:direction ], + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:notes ], + owl:maxCardinality 1 ; + owl:onProperty ttm:direction ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_date ], + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ExpectedResultsEnum ; - owl:onProperty ttm:expected_result ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_result ], + owl:allValuesFrom ttm:NodeEnum ; + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_environment ], + owl:allValuesFrom linkml:Integer ; + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:answer_informal_concept ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:top_level ], + owl:onProperty ttm:query_node ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:scientific_question ], + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ttm:top_level ], + owl:maxCardinality 1 ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_node ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:DirectionEnum ; - owl:onProperty ttm:direction ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_date ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:answer_informal_concept ], + owl:minCardinality 0 ; + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:allValuesFrom ttm:NodeEnum ; - owl:onProperty ttm:query_node ], + owl:minCardinality 0 ; + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:notes ], + owl:onProperty ttm:expected_result ], ttm:TestAsset ; skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; skos:inScheme . @@ -248,16 +248,16 @@ ttm:TestOutput a owl:Class, rdfs:label "TestOutput" ; rdfs:subClassOf [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_id ], + owl:onProperty ttm:pks ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestResultPKSet ; owl:onProperty ttm:pks ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:pks ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_id ], @@ -344,14 +344,14 @@ ttm:Qualifier a owl:Class, linkml:ClassDefinition ; rdfs:label "Qualifier" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:parameter ], - [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:parameter ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:value ], @@ -359,7 +359,7 @@ ttm:Qualifier a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:value ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:parameter ], ttm:TestEntityParameter ; skos:inScheme . @@ -383,32 +383,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:maxCardinality 1 ; - owl:onProperty ttm:test_case ], + owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_result ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCaseResultEnum ; owl:onProperty ttm:test_case_result ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_suite_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_result ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case ], ttm:TestEntity ; skos:definition "The outcome of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -432,20 +432,20 @@ ttm:TestEntityParameter a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntityParameter" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:value ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:parameter ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:value ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; 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 ] ; @@ -512,9 +512,9 @@ ttm:TestEntityParameter a owl:Class, rdfs:label "BenchmarkTest" ; rdfs:subClassOf ttm:TestObjectiveEnum . - a owl:Class, + a owl:Class, ttm:TestObjectiveEnum ; - rdfs:label "OneHopTests" ; + rdfs:label "OneHopTest" ; rdfs:subClassOf ttm:TestObjectiveEnum . a owl:Class, @@ -522,9 +522,9 @@ ttm:TestEntityParameter a owl:Class, rdfs:label "QuantitativeTest" ; rdfs:subClassOf ttm:TestObjectiveEnum . - a owl:Class, + a owl:Class, ttm:TestObjectiveEnum ; - rdfs:label "StandardsValidation" ; + rdfs:label "StandardsValidationTest" ; rdfs:subClassOf ttm:TestObjectiveEnum . a owl:Class, @@ -551,68 +551,68 @@ ttm:TestResultPKSet a owl:Class, linkml:ClassDefinition ; rdfs:label "TestResultPKSet" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:arax ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:merged_pk ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:merged_pk ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:unsecret ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:merged_pk ], + owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:arax ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:aragorn ], + owl:minCardinality 0 ; + owl:onProperty ttm:arax ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:parent_pk ], + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:improving ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:unsecret ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:bte ], - [ 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:allValuesFrom linkml:String ; - owl:onProperty ttm:unsecret ], + owl:minCardinality 0 ; + owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:merged_pk ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:aragorn ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:unsecret ], ttm:TestEntity ; skos:definition "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; skos:inScheme . @@ -652,23 +652,23 @@ ttm:TestSuiteSpecification a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuiteSpecification" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_data_file_locator ], + [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_data_file_format ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:allValuesFrom ttm:FileFormatEnum ; owl:onProperty ttm:test_data_file_format ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - 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 . @@ -769,23 +769,20 @@ ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_settings ], + owl:maxCardinality 1 ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:input_name ], @@ -793,152 +790,155 @@ ttm:TestAsset a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:output_name ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:association_category ; - owl:onProperty ttm:association ], + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:semantic_severity ], + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:output_id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:well_known ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], + 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:output_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:semantic_severity ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:input_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_name ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:allValuesFrom ttm:SemanticSeverityEnum ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], + owl:minCardinality 0 ; + owl:onProperty ttm:output_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:in_v1 ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_issue ], + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestIssueEnum ; owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], + owl:maxCardinality 1 ; + owl:onProperty ttm:output_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty ttm:semantic_severity ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:association_category ; owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_runner_settings ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:well_known ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], 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 . @@ -947,41 +947,41 @@ ttm:TestMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_source ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_objective ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_objective ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:test_objective ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:TestSourceEnum ; owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_source ], + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_annotations ], + owl:onProperty ttm:test_source ], ttm:TestEntity ; skos:definition "Represents metadata related to (external SME, SMURF, Translator feedback, large scale batch, etc.) like the provenance of test assets, cases and/or suites." ; skos:inScheme . @@ -995,38 +995,38 @@ ttm:TestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuite" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; - owl:onProperty ttm:test_cases ], - [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_persona ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], + owl:allValuesFrom ttm:TestSuiteSpecification ; + owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:test_persona ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_cases ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:test_suite_specification ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestPersonaEnum ; owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSuiteSpecification ; - owl:onProperty ttm:test_suite_specification ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], 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 . @@ -1447,85 +1447,85 @@ ttm:TestCase a owl:Class, rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_input_id ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_type ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_id ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_name ], + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:allValuesFrom owl:Thing ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom ttm:QueryTypeEnum ; - owl:onProperty ttm:query_type ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Precondition ; - owl:onProperty ttm:preconditions ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_case_input_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_objective ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_source ], + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_template ], + owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_case_objective ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:QueryTypeEnum ; + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:preconditions ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TrapiTemplateEnum ; owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], + owl:minCardinality 0 ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_source ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_case_source ], + owl:onProperty ttm:trapi_template ], ttm:TestEntity ; skos:definition "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; skos:inScheme . @@ -1611,44 +1611,44 @@ ttm:TestEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:description ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:description ], + [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:description ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:name ], + owl:minCardinality 0 ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:description ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:name ], + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:description ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:description ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ] ; + owl:maxCardinality 1 ; + owl:onProperty ttm:name ] ; skos:definition "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; skos:inScheme . @@ -1681,12 +1681,12 @@ ttm:TestIssueEnum a owl:Class, ttm:TestObjectiveEnum a owl:Class, linkml:EnumDefinition ; - owl:unionOf ( ) ; + owl:unionOf ( ) ; linkml:permissible_values , , - , + , , - . + . ttm:TestSourceEnum a owl:Class, linkml:EnumDefinition ; diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index 6e84e7a..20f74bc 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -8,18 +8,7 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ 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:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 7 ; sh:path ttm:test_case_predicate_id ], @@ -27,41 +16,48 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 13 ; sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 10 ; sh:path schema1:name ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], [ 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 "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTest" "StandardsValidationTest" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], [ sh:maxCount 1 ; sh:order 8 ; sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ], - [ 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 12 ; - sh:path schema1:additionalType ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:preconditions ], + [ 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: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 ; @@ -71,22 +67,36 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 0 ; - sh:path ttm:query_type ] ; + 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 12 ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:AcceptanceTestCase . ttm:AcceptanceTestSuite a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A Test persona describes the user or operational context of a given test." ; + sh:property [ 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:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; @@ -96,33 +106,23 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; 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:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], [ sh:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], - [ sh: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:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ] ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:AcceptanceTestSuite . ttm:BenchmarkTestSuite a sh:NodeShape ; @@ -135,21 +135,16 @@ 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: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: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 name for a Test Entity" ; 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:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -160,6 +155,20 @@ ttm:OneHopTestSuite a sh:NodeShape ; sh:maxCount 1 ; sh:order 1 ; 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 "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 tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -167,90 +176,81 @@ ttm:OneHopTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ 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:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; 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:path ttm:test_cases ] ; sh:targetClass ttm:OneHopTestSuite . ttm:QuantitativeTestCase a sh:NodeShape ; sh:closed true ; sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh: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:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; + sh:property [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 13 ; sh:path ttm:test_runner_settings ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:preconditions ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ], + sh:order 11 ; + sh:path schema1:description ], + [ sh:class ttm:TestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path ttm:test_assets ], [ sh:datatype xsd:string ; sh:description "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 12 ; 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 9 ; + sh:path schema1:identifier ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:query_type ], [ 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 11 ; - sh:path schema1:description ], + sh:order 10 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], + [ 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:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path schema1:identifier ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTest" "StandardsValidationTest" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_assets ], - [ sh:datatype xsd:string ; + [ sh:description "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_predicate_id ] ; + sh:order 5 ; + sh:path ttm:test_case_source ] ; sh:targetClass ttm:QuantitativeTestCase . ttm:StandardsComplianceTestSuite a sh:NodeShape ; @@ -267,131 +267,131 @@ ttm:StandardsComplianceTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; 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: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 "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:minCount 1 ; 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: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:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], [ sh: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: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: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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ] ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ] ; sh:targetClass ttm:StandardsComplianceTestSuite . ttm:TestEdgeData a sh:NodeShape ; sh:closed true ; sh:description "Represents a single Biolink Model compliant instance of a subject-predicate-object edge that can be used for testing." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:property [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ], - [ 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 8 ; + sh:path ttm:association ], [ 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 15 ; - sh:path ttm:test_reference ], + [ 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:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ 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:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; sh:order 21 ; sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], + sh:order 19 ; + sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 18 ; + sh:path schema1:name ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; sh:order 12 ; sh:path ttm:semantic_severity ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:expected_output ], [ sh:maxCount 1 ; sh:order 7 ; sh:path ttm:output_category ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 17 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], - [ 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: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:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 18 ; - sh:path schema1:name ], + sh:order 14 ; + sh:path ttm:well_known ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:output_name ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_issue ], [ sh:maxCount 1 ; sh:order 0 ; sh:path ttm:input_id ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:input_name ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:expected_output ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path ttm:test_reference ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 17 ; + sh:path schema1:identifier ], [ sh:maxCount 1 ; sh:order 5 ; sh:path ttm:output_id ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], + sh:order 4 ; + sh:path ttm:predicate_name ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -406,101 +406,101 @@ ttm:TestOutput a sh:NodeShape ; sh:description "The output of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 6 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; sh:description "CURIE id of a TestCase registered in the system." ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_case_id ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 2 ; + sh:path schema1:identifier ], [ sh:class ttm:TestResultPKSet ; sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:pks ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:name ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ], + sh:order 4 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 5 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "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 description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ] ; + sh:path schema1:additionalType ] ; 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:description "A unique identifier for a Test Entity" ; + sh:property [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in [ rdf:rest () ] ; + sh:order 0 ; + sh:path ttm:components ], + [ sh:datatype xsd:dateTime ; + sh:description "Date time when a given entity was created." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 7 ; - sh:path schema1:identifier ], + sh:order 6 ; + sh:path ttm:timestamp ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 10 ; sh:path schema1:additionalType ], + [ sh:class ttm:TestCaseResult ; + sh:description "One or more instances of TestCaseResult." ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path ttm:test_case_results ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 7 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:description "Global system name of a TestRunner." ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:test_runner_name ], + [ 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:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 9 ; sh:path schema1:description ], - [ 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:BlankNode ; - sh:order 3 ; - sh:path ttm:test_run_parameters ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 11 ; sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path schema1:name ], - [ 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:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_env ], [ 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 [ rdf:rest () ] ; - sh:order 0 ; - sh:path ttm:components ], - [ sh:datatype xsd:dateTime ; - sh:description "Date time when a given entity was created." ; + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:timestamp ] ; + 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:BlankNode ; + sh:order 3 ; + sh:path ttm:test_run_parameters ] ; sh:targetClass ttm:TestRunSession . ttm:TestSuite a sh:NodeShape ; @@ -508,23 +508,34 @@ ttm:TestSuite a sh:NodeShape ; sh:description "Specification of a set of Test Cases, one of either with a static list of 'test_cases' or a dynamic 'test_suite_specification' slot values. Note: at least one slot or the other, but generally not both(?) needs to be present." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "A human-readable 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 "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:class ttm:TestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:test_cases ], + [ sh:description "A Test persona describes the user or operational context of a given test." ; + sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_persona ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -539,101 +550,39 @@ ttm:TestSuite 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: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 "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ] ; + 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: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 13 ; - sh:path ttm:predicate_id ], - [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:input_category ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 23 ; - sh:path ttm:in_v1 ], - [ sh:datatype xsd:string ; - sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:answer_informal_concept ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_id ], - [ sh:datatype xsd:date ; - sh:description "The date by which this test must pass" ; + sh:property [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:must_pass_date ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + sh:order 22 ; + sh:path ttm:semantic_severity ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 29 ; - sh:path schema1:description ], + sh:order 21 ; + sh:path ttm:test_issue ], [ sh:datatype xsd:string ; sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; sh:order 31 ; sh:path ttm:test_runner_settings ], - [ sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:output_id ], - [ sh:datatype xsd:string ; - sh:description "The notes of the query" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:notes ], - [ 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:BlankNode ; - sh:order 19 ; - sh:path ttm:qualifiers ], [ sh:description "The deployment environment within which this test must pass." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:must_pass_environment ], + [ sh:maxCount 1 ; + sh:order 15 ; + sh:path ttm:output_id ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 24 ; sh:path ttm:well_known ], - [ sh:description "The node of the (templated) TRAPI query to replace" ; - sh:in ( "subject" "object" ) ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:query_node ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:input_name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 20 ; - sh:path ttm:expected_output ], - [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 30 ; - sh:path schema1:additionalType ], [ sh:description "The expected result of the query" ; sh:in ( "include_good" "exclude_bad" ) ; sh:maxCount 1 ; @@ -642,47 +591,77 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; [ sh:maxCount 1 ; sh:order 17 ; sh:path ttm:output_category ], + [ 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 full human-readable scientific question a SME would ask, which is encoded into the test asset." ; + 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 2 ; - sh:path ttm:scientific_question ], + sh:order 5 ; + sh:path ttm:answer_informal_concept ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:predicate_name ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 27 ; - sh:path schema1:identifier ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:order 20 ; + sh:path ttm:expected_output ], + [ sh:datatype xsd:string ; + sh:description "The object of the core triple to be tested" ; sh:maxCount 1 ; - sh:order 25 ; - sh:path ttm:test_reference ], + sh:order 3 ; + sh:path ttm:string_entry ], + [ 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 "The notes of the query" ; sh:maxCount 1 ; - sh:order 28 ; - sh:path schema1:name ], + sh:order 9 ; + sh:path ttm:notes ], [ 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: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:BlankNode ; + sh:order 19 ; + sh:path ttm:qualifiers ], [ 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:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:order 11 ; + sh:path ttm:input_name ], + [ 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 18 ; - sh:path ttm:association ], + sh:order 2 ; + sh:path ttm:scientific_question ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 23 ; + sh:path ttm:in_v1 ], + [ sh:description "The node of the (templated) TRAPI query to replace" ; + sh:in ( "subject" "object" ) ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:query_node ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 30 ; + sh:path schema1:additionalType ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_id ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; @@ -690,15 +669,36 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 26 ; sh:path ttm:test_metadata ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:predicate_id ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 22 ; - sh:path ttm:semantic_severity ], + sh:order 25 ; + sh:path ttm:test_reference ], [ 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 16 ; + sh:path ttm:output_name ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 28 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 27 ; + sh:path schema1:identifier ], + [ 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:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 29 ; + sh:path schema1:description ] ; sh:targetClass ttm:AcceptanceTestAsset . ttm:TestCaseResult a sh:NodeShape ; @@ -706,71 +706,71 @@ ttm:TestCaseResult a sh:NodeShape ; sh:description "The outcome of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; 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:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_case ], + sh:order 4 ; + sh:path schema1:name ], [ sh:description "CURIE id of a TestSuite registered in the system." ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_suite_id ], - [ sh: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:description "Encoded result of a single test run of a given test case" ; - sh:in ( "test_passed" "test_failed" "test_skipped" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_case_result ], [ 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 description for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + [ sh:description "Encoded result of a single test run of a given test case" ; + sh:in ( "test_passed" "test_failed" "test_skipped" ) ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ] ; + sh:order 2 ; + sh:path ttm:test_case_result ], + [ sh:class ttm:TestCase ; + sh:description "Slot referencing a single TestCase." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 1 ; + sh:path ttm:test_case ] ; sh: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 "A human-readable description for a Test Entity" ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path schema1:description ], + sh:order 0 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ], [ sh: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:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path schema1:name ], + sh:order 2 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 4 ; - sh:path ttm:test_runner_settings ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path schema1:identifier ] ; + sh:path ttm:test_runner_settings ] ; sh:targetClass ttm:TestEntity . ttm:TestResultPKSet a sh:NodeShape ; @@ -782,17 +782,18 @@ ttm:TestResultPKSet a sh:NodeShape ; 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 2 ; - sh:path ttm:aragorn ], + 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 0 ; sh:path ttm:parent_pk ], - [ 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 1 ; @@ -809,86 +810,105 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:path schema1:name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 10 ; - sh:path schema1:additionalType ], + sh:order 4 ; + sh:path ttm:unsecret ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 5 ; sh:path ttm:bte ], [ 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: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 6 ; + sh:path ttm:improving ] ; sh:targetClass ttm:TestResultPKSet . ttm:TestAsset a sh:NodeShape ; sh:closed true ; sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:property [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_issue ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 18 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:predicate_name ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path ttm:test_metadata ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], + sh:order 15 ; + sh:path ttm:test_reference ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ], [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; sh:order 12 ; sh:path ttm:semantic_severity ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNode ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 13 ; sh:path ttm:in_v1 ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:association ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:well_known ], - [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; - sh:order 20 ; - sh:path schema1:additionalType ], + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 19 ; + sh:path schema1:description ], [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:predicate_id ], + sh:order 2 ; + sh:path ttm:input_category ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:expected_output ], [ sh:datatype xsd:string ; sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; sh:order 21 ; sh:path ttm:test_runner_settings ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNode ; + sh:order 9 ; + sh:path ttm:qualifiers ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], + sh:order 1 ; + sh:path ttm:input_name ], + [ 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:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -901,29 +921,9 @@ ttm:TestAsset a sh:NodeShape ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:output_name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:expected_output ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path ttm:test_metadata ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 18 ; - sh:path schema1:name ], [ sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:output_category ] ; + sh:order 5 ; + sh:path ttm:output_id ] ; sh:targetClass ttm:TestAsset . ttm:TestEntityParameter a sh:NodeShape ; @@ -951,19 +951,19 @@ ttm:Precondition a sh:NodeShape ; 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 1 ; - sh:path schema1:name ], + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 3 ; + sh:path schema1:additionalType ], [ sh: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:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -990,34 +990,34 @@ 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: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 "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:property [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; + sh:in ( "TSV" "YAML" "JSON" ) ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ], + sh:order 1 ; + sh:path ttm:test_data_file_format ], [ 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: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: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: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 "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 6 ; @@ -1028,70 +1028,70 @@ ttm:TestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh: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 9 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 10 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_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: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 5 ; sh:path ttm:test_case_source ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 12 ; - sh:path schema1:additionalType ], + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 13 ; + sh:path ttm:test_runner_settings ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:trapi_template ], + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTest" "StandardsValidationTest" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:test_case_objective ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_predicate_id ], + sh:order 6 ; + sh:path ttm:test_case_predicate_name ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 11 ; sh:path schema1:description ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], [ 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:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 13 ; - sh:path ttm:test_runner_settings ], + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 10 ; + 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:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], - [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:trapi_template ] ; + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], + [ sh: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 12 ; + sh:path schema1:additionalType ] ; sh:targetClass ttm:TestCase . ttm:TestMetadata a sh:NodeShape ; @@ -1099,46 +1099,46 @@ ttm:TestMetadata a sh:NodeShape ; 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: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 "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTests" "StandardsValidation" ) ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "OneHopTest" "StandardsValidationTest" ) ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:test_objective ], - [ 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:TestEntityParameter ; + sh:description "Metadata annotation." ; + sh:nodeKind sh:BlankNode ; + sh:order 3 ; + sh:path ttm:test_annotations ], [ 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 0 ; sh:path ttm:test_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:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], - [ sh:class ttm:TestEntityParameter ; - sh:description "Metadata annotation." ; - sh:nodeKind sh:BlankNode ; - sh:order 3 ; - sh:path ttm:test_annotations ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_reference ], + [ sh: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 "Document URL where original test source particulars are registered (e.g. Github repo)" ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_reference ] ; + sh:path schema1:name ] ; sh:targetClass ttm:TestMetadata . diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index 67dcb3e..9da5d66 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -7,7 +7,7 @@ CREATE TABLE "AcceptanceTestCase" ( query_type VARCHAR(6), preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(19), + test_case_objective VARCHAR(23), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -36,7 +36,7 @@ CREATE TABLE "QuantitativeTestCase" ( test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(19), + test_case_objective VARCHAR(23), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -52,7 +52,7 @@ CREATE TABLE "TestCase" ( test_assets TEXT NOT NULL, preconditions TEXT, trapi_template VARCHAR(24), - test_case_objective VARCHAR(19), + test_case_objective VARCHAR(23), test_case_source VARCHAR(18), test_case_predicate_name TEXT, test_case_predicate_id TEXT, @@ -72,7 +72,7 @@ CREATE TABLE "TestMetadata" ( description TEXT, test_source VARCHAR(18), test_reference TEXT, - test_objective VARCHAR(19), + test_objective VARCHAR(23), test_annotations TEXT, PRIMARY KEY (id) ); diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index 903a3cf..6c56bd6 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -53,10 +53,10 @@ class TestObjectiveEnum(str, Enum): BenchmarkTest = "BenchmarkTest" # Quantitative test QuantitativeTest = "QuantitativeTest" - # One Hop Tests of knowledge graph navigation - OneHopTests = "OneHopTests" + # One Hop Test of knowledge graph navigation + OneHopTest = "OneHopTest" # TRAPI and Biolink Model ("reasoner-validator") validation - StandardsValidation = "StandardsValidation" + StandardsValidationTest = "StandardsValidationTest" diff --git a/src/translator_testing_model/datamodel/pydanticmodel_v2.py b/src/translator_testing_model/datamodel/pydanticmodel_v2.py index aae6478..a2d0e7e 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel_v2.py +++ b/src/translator_testing_model/datamodel/pydanticmodel_v2.py @@ -49,10 +49,10 @@ class TestObjectiveEnum(str, Enum): BenchmarkTest = "BenchmarkTest" # Quantitative test QuantitativeTest = "QuantitativeTest" - # One Hop Tests of knowledge graph navigation - OneHopTests = "OneHopTests" + # One Hop Test of knowledge graph navigation + OneHopTest = "OneHopTest" # TRAPI and Biolink Model ("reasoner-validator") validation - StandardsValidation = "StandardsValidation" + StandardsValidationTest = "StandardsValidationTest" diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index 03f41ac..1ae9c17 100644 --- a/src/translator_testing_model/datamodel/translator_testing_model.py +++ b/src/translator_testing_model/datamodel/translator_testing_model.py @@ -1,5 +1,5 @@ # Auto generated from translator_testing_model.yaml by pythongen.py version: 0.0.1 -# Generation date: 2024-03-06T18:42:02 +# Generation date: 2024-03-07T16:25:05 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -978,11 +978,11 @@ class TestObjectiveEnum(EnumDefinitionImpl): QuantitativeTest = PermissibleValue( text="QuantitativeTest", description="Quantitative test") - OneHopTests = PermissibleValue( - text="OneHopTests", - description="One Hop Tests of knowledge graph navigation") - StandardsValidation = PermissibleValue( - text="StandardsValidation", + OneHopTest = PermissibleValue( + text="OneHopTest", + description="One Hop Test of knowledge graph navigation") + StandardsValidationTest = PermissibleValue( + text="StandardsValidationTest", description="TRAPI and Biolink Model (\"reasoner-validator\") validation") _defn = EnumDefinition( diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index acd3c8c..894b56a 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -800,9 +800,9 @@ enums: description: Semantic benchmarking QuantitativeTest: description: Quantitative test - OneHopTests: - description: One Hop Tests of knowledge graph navigation - StandardsValidation: + OneHopTest: + description: One Hop Test of knowledge graph navigation + StandardsValidationTest: description: TRAPI and Biolink Model ("reasoner-validator") validation TestEnvEnum: