From fad362a59bb76e65b5d76ed27fcd03c7faefa0d5 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 02:04:50 +0000 Subject: [PATCH 1/4] Replace TestAsset.output_id with multivalued output_ids An expected output can now be named by several CURIEs, any one of which counts as the expected answer. For example, sirolimus is CHEBI:9168 and PUBCHEM.COMPOUND:5284616; node normalization no longer merges these, so Translator returns them as separate answers. This is a breaking change: data still using output_id is rejected by the Pydantic model, and a single CURIE must be given as a one-item list. - schema: output_id -> output_ids (multivalued uriorcurie) - regenerate the datamodels and project artifacts with linkml 1.7.8 - convert the examples, add a two-CURIE sirolimus example, and test the Pydantic model's handling of the new slot - bump version to 0.6.0 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d --- examples/Bad-TestAsset-001.yaml | 3 +- examples/Good-AcceptanceTestAsset-001.yaml | 3 +- examples/Good-AcceptanceTestCase-001.yaml | 3 +- examples/Good-TestAsset-001.json | 2 +- examples/Good-TestAsset-001.yaml | 5 +- examples/Good-TestAsset-002.json | 14 + examples/Good-TestCase-001.json | 2 +- examples/Good-TestCase-001.yaml | 3 +- examples/SampleTestAssetList.json | 4 +- project/excel/translator_testing_model.xlsx | Bin 22694 -> 22721 bytes .../graphql/translator_testing_model.graphql | 6 +- .../translator_testing_model.context.jsonld | 6 +- .../jsonld/translator_testing_model.jsonld | 20 +- .../translator_testing_model.schema.json | 24 +- project/owl/translator_testing_model.owl.ttl | 806 +++++---- .../protobuf/translator_testing_model.proto | 6 +- .../shacl/translator_testing_model.shacl.ttl | 1568 ++++++++--------- project/shex/translator_testing_model.shex | 2 +- .../sqlschema/translator_testing_model.sql | 33 +- pyproject.toml | 2 +- src/data/examples/Bad-TestAsset-001.yaml | 3 +- .../Good-AcceptanceTestAsset-001.yaml | 3 +- .../examples/Good-AcceptanceTestCase-001.yaml | 3 +- src/data/examples/Good-TestAsset-001.json | 2 +- src/data/examples/Good-TestAsset-001.yaml | 5 +- src/data/examples/Good-TestAsset-002.json | 14 + src/data/examples/Good-TestCase-001.json | 2 +- src/data/examples/Good-TestCase-001.yaml | 3 +- src/data/examples/SampleTestAssetList.json | 4 +- .../datamodel/pydanticmodel.py | 6 +- .../datamodel/translator_testing_model.py | 13 +- .../schema/translator_testing_model.yaml | 10 +- .../scripts/generate_suite_for_demo.py | 2 +- tests/test_output_ids.py | 34 + 34 files changed, 1364 insertions(+), 1252 deletions(-) create mode 100644 examples/Good-TestAsset-002.json create mode 100644 src/data/examples/Good-TestAsset-002.json create mode 100644 tests/test_output_ids.py diff --git a/examples/Bad-TestAsset-001.yaml b/examples/Bad-TestAsset-001.yaml index 171adc6..d3554e9 100644 --- a/examples/Bad-TestAsset-001.yaml +++ b/examples/Bad-TestAsset-001.yaml @@ -8,7 +8,8 @@ name: TestAsset001 description: Fingolimod treats multiple sclerosis input_id: PUBCHEM.COMPOUND:107970 predicate_name: treats -output_id: MONDO:0005301 +output_ids: + - MONDO:0005301 expected_output: Acceptable test_runner_settings: - "inferred" diff --git a/examples/Good-AcceptanceTestAsset-001.yaml b/examples/Good-AcceptanceTestAsset-001.yaml index 2a48722..fb30c39 100644 --- a/examples/Good-AcceptanceTestAsset-001.yaml +++ b/examples/Good-AcceptanceTestAsset-001.yaml @@ -26,7 +26,8 @@ name: AcceptanceTestAsset001 description: Iron treats Aceruloplasminemia input_id: MONDO:0011426 predicate_name: treats -output_id: DRUGBANK:DB01592 +output_ids: + - DRUGBANK:DB01592 expected_output: NeverShow test_metadata: id: "test:1" diff --git a/examples/Good-AcceptanceTestCase-001.yaml b/examples/Good-AcceptanceTestCase-001.yaml index ca6f646..d008ecf 100644 --- a/examples/Good-AcceptanceTestCase-001.yaml +++ b/examples/Good-AcceptanceTestCase-001.yaml @@ -22,7 +22,8 @@ test_assets: description: Iron treats Aceruloplasminemia input_id: MONDO:0011426 predicate_name: treats - output_id: DRUGBANK:DB01592 + output_ids: + - DRUGBANK:DB01592 expected_output: NeverShow test_runner_settings: - "inferred" diff --git a/examples/Good-TestAsset-001.json b/examples/Good-TestAsset-001.json index f773550..31a3005 100644 --- a/examples/Good-TestAsset-001.json +++ b/examples/Good-TestAsset-001.json @@ -4,7 +4,7 @@ "description": "Fingolimod treats multiple sclerosis", "input_id": "PUBCHEM.COMPOUND:107970", "predicate_name": "treats", - "output_id": "MONDO:0005301", + "output_ids": ["MONDO:0005301"], "expected_output": "Acceptable", "test_runner_settings": ["inferred", "test"], "test_metadata": { diff --git a/examples/Good-TestAsset-001.yaml b/examples/Good-TestAsset-001.yaml index 31fd44d..2cbd601 100644 --- a/examples/Good-TestAsset-001.yaml +++ b/examples/Good-TestAsset-001.yaml @@ -16,7 +16,7 @@ # - input_category # - predicate_id # - predicate_name -# - output_id +# - output_ids # - output_name # - output_category # - association @@ -45,7 +45,8 @@ description: Iron treats Aceruloplasminemia input_id: MONDO:0011426 input_name: Aceruloplasminemia predicate_name: treats -output_id: DRUGBANK:DB01592 +output_ids: + - DRUGBANK:DB01592 output_name: Iron (PUBCHEM) expected_output: NeverShow test_reference: https://github.com/NCATSTranslator/Feedback/issues/506 diff --git a/examples/Good-TestAsset-002.json b/examples/Good-TestAsset-002.json new file mode 100644 index 0000000..19b3d38 --- /dev/null +++ b/examples/Good-TestAsset-002.json @@ -0,0 +1,14 @@ +{ + "id": "example:TestAsset002", + "name": "TestAsset002", + "description": "Sirolimus treats Castleman disease", + "input_id": "MONDO:0015564", + "predicate_name": "treats", + "output_ids": ["PUBCHEM.COMPOUND:5284616", "CHEBI:9168"], + "output_name": "sirolimus", + "expected_output": "TopAnswer", + "test_runner_settings": ["inferred"], + "test_metadata": { + "id": "example:TestAsset002" + } +} diff --git a/examples/Good-TestCase-001.json b/examples/Good-TestCase-001.json index d4763fe..62df579 100644 --- a/examples/Good-TestCase-001.json +++ b/examples/Good-TestCase-001.json @@ -9,7 +9,7 @@ "description": "Fingolimod treats multiple sclerosis", "input_id": "PUBCHEM.COMPOUND:107970", "predicate_name": "treats", - "output_id": "MONDO:0005301", + "output_ids": ["MONDO:0005301"], "expected_output": "Acceptable", "test_runner_settings": ["inferred", "test"], "test_metadata": { diff --git a/examples/Good-TestCase-001.yaml b/examples/Good-TestCase-001.yaml index 2af86e1..7bb3bdf 100644 --- a/examples/Good-TestCase-001.yaml +++ b/examples/Good-TestCase-001.yaml @@ -41,7 +41,8 @@ test_assets: name: TestAsset001 input_id: MONDO:0011426 predicate_name: treats - output_id: DRUGBANK:DB01592 + output_ids: + - DRUGBANK:DB01592 expected_output: NeverShow test_runner_settings: - "inferred" diff --git a/examples/SampleTestAssetList.json b/examples/SampleTestAssetList.json index 84bb0e0..5240963 100644 --- a/examples/SampleTestAssetList.json +++ b/examples/SampleTestAssetList.json @@ -5,7 +5,7 @@ "description": "Fingolimod treats multiple sclerosis", "input_id": "PUBCHEM.COMPOUND:107970", "predicate_name": "treats", - "output_id": "MONDO:0005301", + "output_ids": ["MONDO:0005301"], "expected_output": "Acceptable", "runner_settings": ["inferred", "test"], "test_metadata": { @@ -19,7 +19,7 @@ "description": "Carbamazepine treats Cerebral palsy", "input_id": "PUBCHEM.COMPOUND:2554", "predicate_name": "treats", - "output_id": "MONDO:0006497", + "output_ids": ["MONDO:0006497"], "expected_output": "number_2_Acceptable", "runner_settings": ["inferred", "test"], "test_metadata": { diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index de1b275bdff18ad64c390123875ea31b5d1926ca..da8aad469ec62aaec1b60c64125a9033ce9146ac 100644 GIT binary patch delta 4070 zcmeH~c|25Y8^_NKBa9_P3>w*uT_&;&A$yr@GeS`c+3P`;jHObejWc5G87bM)gsf%n zu|A|IZI%{#WDg1Nn3?A-J@5O^`_KE&GoR1-%zgdN_deHsUFSaMx=wx>q@fH#z*@1e zZUX>-9SGX$>T24y-#nRSb`=T^eoNhR>zGVLIAx z5^s)0l&HUsxm%x&+V_AeJL8dol7j98*^ROxU{&~W;9GxJ3%t!j{ii}fwh;NE` z@%mFajsYF^*QSwI{T`bOJT~g)s^VdZsDfs7RRG6BcH(UujKyQc+Uj|^6!`z1oA|6$)~%Q zM0cZxC%qRnl(U_)&BLyci>?UifpUDmUl8*R7TsZzU6w-AxRpOIaV5TcLaB}Y9 z+Y?E<>N~A&%stBrYCtvMrYN7y*7tupbd2{ap><-o`;6cdMAT~fcj)HykXfxQTE~H7SX5#7RVahF%N-2i*PNymQ#Sf?55jIKO zKX4r$aSrCScHabqj}$oVt5B1;k7#%3p9-PhE8$o? zchljA=vN)j(oPzan$P1KSpKkU0Bk6)G33s@&X;ruYWKu0e5`9I+BqS(iz9helP4n; zHqyG^pXxpsjERXQy%LHg9Dc`7I;C4C*E5xV0U56|J9nmLHMltYwKF?B<<8oZ%g>vp zmAEwUMB83{N3H3S@ujAgM2W;^w!+8SWfmFLF}g|HEhl5=4KGY4+2oo`3{W0>Vm3SJ*%vbzby)m^Uj5+}^X`0ErHb?4qM~QT zLQVri0%T_-s;I@DGsRbVkQe#Yg;OSl-#Wck7YQqceMEcAwGIpY_NOt2lG)Rj_m$NI zkjJZbcqNU$YJ>}0_}yF{x2asVDupe*XF)~f&k?S)-c=?&t!rO$h=XKS6s**xbjFyp zs#d^i7g0VDti1KlvV0@wi+djDn+j!-!e{UD6;^npO@KnvF&mMnNQ%QtY(&)t`p z2JgSTORG@e4V%J^G_9%lBL;r($%h8Qi`8$tuiDr=Tq-F;h$xvxHkDupE;!>zvTn+Y zahZgfc45uzD@H-8Ram2diM71}u%YA!&2lvu2UM?BqdiH;HzyG~61A^lPP-~Sq+&`( zqS+0mgwN01h8FR64?cV9s7}esj0ucQaIm{Afn(Gw)KqL$v0pB-4{5!YJuUjhC{x`r zGu!;*zMJ?~Bk}2#gofS9VUnGevt20sYzrpj+JUMva()|HpfUHWM~q48Kofc$4U7s+ zFUm+x%9gZ!S@V-7KsG-M)b>iTPqf!WHMkRw0C{a;R0IB5#ug9Vt2T3k1ptz`H?}xI zYvaXHhkF|^q|LR4<1!FE&Ht);XCPF1l{{4ax!k$BX1j5juo=#2R$9k@eTDL8{v>As zR!v+#5>=^`w<3H6W3MSbQe4`SuVaMI%z+jbqsuEJ<=1@?B0dAG*Dd^ZAQUh2zGkz zPx8sVejXX+Pm2OsDrHvXNppSNh$Q$+j@u5$)Jw_bdpy~lh|Mj>X95L6)!uE z?U|R?=25tJUg8`+L2~_BbnuS3$2PHnnnuYF_M~m${i1npv~j*|6q0$~(E5dtwTk`r z6b;n}sGP6lh#j_&Mf4V zcjBwQ_v+BICCef_m65vhz#0eSQ2X3+W?ykn@_N0uNHR>#P@yF*19m!eOEDmF%b)PU znC*1sBBC>vth4nx)y@Bd8(eC_5Z@JBCE_%maK}kab@7c4DR;~ll89DwfOZpf7P>UH&GoJ%A!1B1!$Xh_1Q&(HL0qmqb|Tyqevf*QT*zL2)iOs^iFocCO0%CZ6ncE% zb$7Eq+)Gl5A~QHvwY9cwdZ>5lYv6?=*wC!VXMVH$M~g~i$Yn_pXCCnnt`(p9-C9B3 z!2)lWkBD3{;eIq8u^we4ezeWw7GLl)Zmszf(9x)zh4TD*f32W^YqvcI=YQ!(eiRx2 z0Hyf1gObAkl$w7^&HuI382nGAW}9!}uotb=e1dM&6RMDCD6_pv6f0+8v{#lAe=r&? zFi}jJY9y7&(COBSEYqT1N3}6|XB9an&x4kx-c=L($@-$fw5U92!=LmJtsj&WwQ7&} zzt2fgS9O^dbq7Y7p;K)PE0`k=<09sYt4!W9M;WGJ%=sb~?-@ZrEpIX>+_ny6Vxk8q z5bjN%7hs2tI&wq#wOOb2>-1kVqzM$oN-+9S11tja4m^aFWSG%d1av1mnCKt`8nUx) z#acn2+gN^l!+^B&kZf=mE62dO4kDo9a8R9B5Y#`&C$Zs`!WSHCOuHFIv>sOYFPF6c z=$KM&IvB?Ue}4aL2IYBaAOh?@$i?vThUNvyPoK6)e^Q?qoWMUSCt5r1ikG|k13t~EOH(>KTPgHqlwT2MB$3~Y{G$e0dt;FuRg;tY8D))LAg z2m*n)K&vr$w}Y-NJn;;R%6Rx0kN2@7*yG1SPN;Z=geXS^5v1`B|xOU3EC4;UvqMBMS^u)PMI#M&Ktt3{U!xU5lKls3?_m-F` z8sYCOssAkc!j3`THkk?|@pkB8AuIJ~SJounSL?n-HfoOVp1D(-n3ETFIbe_6(&fN~ z^u+!~shVTUUa)3h1@^1Mm4+xA(km3v=7B0tlBds;d*J|1rchagACsAx!!a(59>JIT z7qtcqDLExmzh`J= zS|jawUBdM)gE@Xcni()FyvEqc8o+S@{~@JSSjn>rSW%l?!^v?`POCQ`6aGq`tM9sla$ydqX}ZAI(L zrVQk|=SlO^7Qot^92+Z0Q{jpMGv5FeE@@gfw-d{vDZtYqEXF#NViAx-zK=KA*-3}V zQIfq>h7f=HG!;JLM~Ch{9tDb#7aR4jqGJGMBIl(C9~-rDf>Mq?v@#4jkOsvZ zjjM|Q=mgP-tG3rs=-R~5e33ein?pA5I~G=p$Jz_h*Yrk$iNn*ri^8p~=-UU>ZoE>} zgD3D@D#V3leBo^j)cqb3Dq|)?ZP8V=A#5)R9!;M}#5JIP%k*lP0OUyZ6hCE}_O7q3 zgN2{367LQ?_p{T7hu_V&fElDul_nyW&6>Vh=~fIszw;oky+2T@V{n4^=^`}qE#(Sy z;M)D66|9$1F|N)%uqAe>;;n_;-R#2zc=+2Jqtz2tNra}*I+(;N7V@;EswM#5*=FjZ zyoKzoTl*1m5a;F>yFv^4-V+FpT|PthoH^gvDvK>{aq$RbAKF3WA;sN2qcc=K`q>2gEx(e?0(bO4|{TZ5zAUs=EAPHWUOR@d7(V#efhTOz)l(J(#Y||4qo? zxuK6Zy-L*^8c{Z~cbL$lJA7KeFI4e_5lLRBGOPJbfgr|T|B=4rnv6$SQu2ebTrZ$p z5J4on1lsQ@D%)-ECVsdP>Zm5c%W3NW@a*{#7p(}N;@n{DR+y7)rM2Up1=TIL=;nH< zk4p~T%`N>$T| ztFZhwsOeT2!D)i(3SmsND6BZ;NxA8r`32(bZOfJS)QNpMXO>EH5|1bygSB_bd`Frh z`zWNSQaU_p=w-X_c?{2>hI)NkD*c0og8Ks{^8;Ha8^aQk9>Ge__THxE^mo3_Q$MR{ zGCqE^XIwz%O$JA`&_RVy$QT}EGS7e^zahnhv>tF@HzRr!W1x*Fuy93oC2WaAw1!H0 zt^6^6=9wX?m;jd*xqZPhSHx8ayIONnQVqPQSqe-D84*`n5}_;6->aoWMq`8wvm{}| zpB5#thf8OFtI$H8*ufJR7{1eabnhv?WMLreSj*C`$@UR=_l~dnms{ZapEBWr;`v8{ z6Sf*~Cvp@&RvMO&?tV+oAM<-!Ys5F2&wm}A`+P1t_;lIYV%JqWJP2AOCpn=gH!M*F z@h%$bOy(h4)M_dE8We2fV8C5Sf|s!b*BuuunRKx!g$(n#yXbL4(4Ph~w%{t~Daz)K zoT;`=d*)_&-g6}JUfR}SIki~9=4-ES&My1uNp1VSv^L)>aPwnYux)CY?R4Iu`Z-Qv zn_T4F>@ujqeH=_2wa)2Ue4D_`NL)-mcA$)2}2=9dl3pC%c31a$4Fo7<=GRe9>di>OfT zsT!AWrn= zRh}i*({t;bz~SEBRUB9JF!76owFr%---aHk{H|@=^ltBRaVWk&tA?6&GO8I-@y&iR zD;JmPVD1dyc=w+wjCu3a#}{sLIf|)sa70)|x+CBrUc@ zqw4%MhN>e2VDT`Tq@D;{PiMap`z=7fhE?pws>=DI!61+=l;Nuw&D7`|tEEFPe|DxY zaBG0b2w~B;zEE2Kh-Xa+;B$`hU#Gy`4$KZifLXI36bXM^CZYJ&Yie9D-x1{_pAMMHoa`Rx+OA z5Rgd(bKn||9hZPT0+N7aV$YGBfSEmO<{z681QPo@8W1BMJrt9C&VD;fbVGn&nu&G) zgn>H%u!9_nqU3;p#LF`&9uC`?k*UpIcK*yrgDJ;meQRYV@umY?KhqHbiBe@^?|;S` z)tH#N<4-)0CKHSK88g;mVwqZ;{F@gI*w9YV+1MQbH=do44Xkq?6T{*Kq&C(}q07Kz zh2d<(Kb++U&fwWWQt$|ffj)EG2%fbnKfaR9L9QAyiD)PGq`FQB$Q@%QM)(Vhb3%aA zfjlQ9D~XLxh<$K#5Xkem58;H0^2Yz>cqn_)8=@Gy8N&?%@%_AL;LqlOfU^WM^UHGs o<$8=@x)=<^FQi;6pxX)w1UU1sW{h!0fO&z7&a#}9wj0F%0_Km$r2qf` diff --git a/project/graphql/translator_testing_model.graphql b/project/graphql/translator_testing_model.graphql index 0e8e82a..3d43928 100644 --- a/project/graphql/translator_testing_model.graphql +++ b/project/graphql/translator_testing_model.graphql @@ -7,7 +7,7 @@ type AcceptanceTestAsset inputCategory: ConceptCategory predicateId: PredicateType predicateName: String - outputId: Uriorcurie + outputIds: [Uriorcurie] outputName: String outputCategory: ConceptCategory association: AssociationCategory @@ -234,7 +234,7 @@ type TestAsset inputCategory: ConceptCategory predicateId: PredicateType predicateName: String - outputId: Uriorcurie + outputIds: [Uriorcurie] outputName: String outputCategory: ConceptCategory association: AssociationCategory @@ -295,7 +295,7 @@ type TestEdgeData inputCategory: ConceptCategory predicateId: PredicateType predicateName: String - outputId: Uriorcurie + outputIds: [Uriorcurie] outputName: String outputCategory: ConceptCategory association: AssociationCategory diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index bd68ee0..2a7ebd7 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": "2025-10-22T15:23:25", + "generation_date": "2026-10-29T02:03:21", "source": "translator_testing_model.yaml" }, "@context": { @@ -137,9 +137,9 @@ "@type": "@id", "@id": "output_category" }, - "output_id": { + "output_ids": { "@type": "@id", - "@id": "output_id" + "@id": "output_ids" }, "output_name": { "@id": "output_name" diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index 3c5066b..4c40041 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -1411,14 +1411,16 @@ "@type": "SlotDefinition" }, { - "name": "output_id", - "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/output_id", + "name": "output_ids", + "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/output_ids", + "description": "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "aliases": [ "OutputID", "ObjectID" ], - "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/output_id", + "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/output_ids", + "multivalued": true, "owner": "TestAsset", "domain_of": [ "TestAsset" @@ -2502,7 +2504,7 @@ "input_category", "predicate_id", "predicate_name", - "output_id", + "output_ids", "output_name", "output_category", "association", @@ -2565,7 +2567,7 @@ "input_category", "predicate_id", "predicate_name", - "output_id", + "output_ids", "output_name", "output_category", "association", @@ -2609,7 +2611,7 @@ "input_category", "predicate_id", "predicate_name", - "output_id", + "output_ids", "output_name", "output_category", "association", @@ -3039,9 +3041,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2025-10-22T15:23:19", - "source_file_size": 32116, - "generation_date": "2025-10-22T15:23:25", + "source_file_date": "2026-10-29T02:02:06", + "source_file_size": 32414, + "generation_date": "2026-10-29T02:03: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 f228878..5555dd9 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -63,8 +63,12 @@ "output_category": { "type": "string" }, - "output_id": { - "type": "string" + "output_ids": { + "description": "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept.", + "items": { + "type": "string" + }, + "type": "array" }, "output_name": { "type": "string" @@ -1263,8 +1267,12 @@ "output_category": { "type": "string" }, - "output_id": { - "type": "string" + "output_ids": { + "description": "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept.", + "items": { + "type": "string" + }, + "type": "array" }, "output_name": { "type": "string" @@ -1663,8 +1671,12 @@ "output_category": { "type": "string" }, - "output_id": { - "type": "string" + "output_ids": { + "description": "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept.", + "items": { + "type": "string" + }, + "type": "array" }, "output_name": { "type": "string" diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index cbc49c9..09f5ed1 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -45,10 +45,10 @@ ttm:PerformanceTestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "PerformanceTestSuite" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:PerformanceTestCase ; + owl:minCardinality 0 ; owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:PerformanceTestCase ; owl:onProperty ttm:test_cases ], ttm:TestSuite ; skos:definition "A small test suite designed to test the performance of the Translator system." ; @@ -79,59 +79,59 @@ ttm:TestRunSession a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunSession" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], + owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_entities ], + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_env ], + owl:allValuesFrom linkml:Datetime ; + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEntity ; - owl:onProperty ttm:test_entities ], + owl:minCardinality 0 ; + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestEnvEnum ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:maxCardinality 1 ; + owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestCaseResult ; + owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:components ], + owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_run_parameters ], + owl:allValuesFrom ttm:TestEntity ; + owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:test_entities ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:timestamp ], - [ 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:timestamp ], + owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_results ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResult ; - owl:onProperty ttm:test_case_results ], + owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Datetime ; - owl:onProperty ttm:timestamp ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_run_parameters ], ttm:TestEntity ; skos:definition "Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite)." ; skos:inScheme . @@ -204,61 +204,76 @@ ttm:AcceptanceTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "AcceptanceTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:query_node ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:answer_informal_concept ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:top_level ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:direction ], [ a owl:Restriction ; owl:minCardinality 0 ; + 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:scientific_question ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ExpectedResultsEnum ; owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ttm:top_level ], + owl:allValuesFrom linkml:Date ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:expected_result ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:query_node ], + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_result ], + owl:onProperty ttm:query_node ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:scientific_question ], + owl:minCardinality 0 ; + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:notes ], + owl:onProperty ttm:string_entry ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:notes ], + owl:minCardinality 0 ; + owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_environment ], + owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:answer_informal_concept ], + owl:minCardinality 0 ; + owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:top_level ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:answer_informal_concept ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:notes ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestEnvEnum ; @@ -266,33 +281,18 @@ ttm:AcceptanceTestAsset a owl:Class, [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:must_pass_environment ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:scientific_question ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:DirectionEnum ; - owl:onProperty ttm:direction ], + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; + owl:maxCardinality 1 ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; owl:allValuesFrom ttm:NodeEnum ; owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:must_pass_date ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_date ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:direction ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:scientific_question ], + 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 . @@ -301,107 +301,107 @@ ttm:PathfinderTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:PathfinderPathNode ; - owl:onProperty ttm:path_nodes ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:target_input_id ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:target_input_name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:source_input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:source_input_id ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:source_input_category ], + owl:maxCardinality 1 ; + owl:onProperty ttm:target_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:minimum_required_path_nodes ], + owl:onProperty ttm:target_input_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:source_input_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:source_input_category ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:source_input_category ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:source_input_name ], + owl:minCardinality 0 ; + owl:onProperty ttm:source_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:source_input_name ], + owl:onProperty ttm:source_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:target_input_category ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:source_input_category ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:source_input_id ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:path_nodes ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ttm:minimum_required_path_nodes ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:source_input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:target_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:target_input_name ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:target_input_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:target_input_id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], + owl:allValuesFrom ttm:PathfinderPathNode ; + owl:onProperty ttm:path_nodes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_category ], + owl:onProperty ttm:target_input_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; + owl:onProperty ttm:source_input_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:source_input_category ], + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:target_input_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:target_input_category ], + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:source_input_id ], + owl:minCardinality 1 ; + owl:onProperty ttm:path_nodes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:predicate_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 . @@ -415,7 +415,10 @@ ttm:TestOutput a owl:Class, linkml:ClassDefinition ; rdfs:label "TestOutput" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; + owl:onProperty ttm:pks ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestResultPKSet ; @@ -424,10 +427,7 @@ ttm:TestOutput a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:test_case_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:pks ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_id ], ttm:TestEntity ; skos:definition "The output of a TestRunner run of one specific TestCase." ; @@ -507,20 +507,20 @@ ttm:PathfinderPathNode a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderPathNode" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:name ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:name ], + owl:onProperty ttm:ids ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:ids ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:ids ] ; + owl:onProperty ttm:name ] ; skos:definition "Represents an output path node" ; skos:inScheme . @@ -550,19 +550,10 @@ ttm:TestCaseResult a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCaseResult" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_id ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_id ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; - owl:onProperty ttm:test_case ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResultEnum ; owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:minCardinality 0 ; owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; @@ -574,8 +565,17 @@ ttm:TestCaseResult a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:test_case ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_result ], + owl:allValuesFrom ttm:TestCaseResultEnum ; + 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_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." ; skos:inScheme . @@ -599,22 +599,22 @@ 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:maxCardinality 1 ; - owl:onProperty ttm:value ], + owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:value ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + 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:minCardinality 0 ; + owl:onProperty ttm:value ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:value ] ; skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; skos:inScheme . @@ -718,68 +718,68 @@ ttm:TestResultPKSet a owl:Class, linkml:ClassDefinition ; rdfs:label "TestResultPKSet" ; rdfs:subClassOf [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:aragorn ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:merged_pk ], + [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:bte ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + 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:arax ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:arax ], + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:parent_pk ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:unsecret ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:aragorn ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:improving ], + owl:maxCardinality 1 ; + owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:unsecret ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:aragorn ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:merged_pk ], + 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 . @@ -819,23 +819,23 @@ ttm:TestSuiteSpecification a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuiteSpecification" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:FileFormatEnum ; - owl:onProperty ttm:test_data_file_format ], + 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:minCardinality 0 ; + 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:maxCardinality 1 ; owl:onProperty ttm:test_data_file_locator ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_data_file_locator ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_data_file_locator ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_data_file_format ], ttm:TestEntity ; skos:definition "Parameters for a Test Case instances either dynamically generated from some external source of Test Assets." ; skos:inScheme . @@ -878,6 +878,15 @@ ttm:ids a owl:ObjectProperty, rdfs:label "ids" ; skos:inScheme . +ttm:output_ids a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "output_ids" ; + rdfs:range linkml:Uriorcurie ; + skos:altLabel "ObjectID", + "OutputID" ; + skos:definition "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; + skos:inScheme . + ttm:path_nodes a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "path_nodes" ; @@ -1012,35 +1021,35 @@ ttm:PathfinderTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:components ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom ttm:PathfinderTestAsset ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:PathfinderTestAsset ; + owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:TestEnvEnum ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_case_objective ], [ 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:ComponentEnum ; + owl:onProperty ttm:components ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:components ], ttm:TestEntity ; skos:inScheme . @@ -1048,29 +1057,29 @@ ttm:PerformanceTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "PerformanceTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_run_time ], - [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:test_run_time ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestAsset ; - owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:test_run_time ], + owl:onProperty ttm:spawn_rate ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:spawn_rate ], + owl:onProperty ttm:test_run_time ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Float ; + owl:maxCardinality 1 ; owl:onProperty ttm:spawn_rate ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:test_run_time ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Float ; owl:onProperty ttm:spawn_rate ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestAsset ; + owl:onProperty ttm:test_assets ], ttm:TestCase ; skos:definition "Represents a performance test case." ; skos:inScheme . @@ -1079,26 +1088,14 @@ ttm:TestMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_annotations ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_objective ], - [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_annotations ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_source ], [ a owl:Restriction ; owl:minCardinality 0 ; 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:maxCardinality 1 ; owl:onProperty ttm:test_reference ], @@ -1106,14 +1103,26 @@ ttm:TestMetadata a owl:Class, owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_objective ], [ 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_objective ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_annotations ], + [ 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:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + 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 . @@ -1232,14 +1241,6 @@ ttm:notes a owl:ObjectProperty, skos:definition "The notes of the query" ; skos:inScheme . -ttm:output_id a owl:ObjectProperty, - linkml:SlotDefinition ; - rdfs:label "output_id" ; - rdfs:range linkml:Uriorcurie ; - skos:altLabel "ObjectID", - "OutputID" ; - skos:inScheme . - ttm:output_name a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "output_name" ; @@ -1498,22 +1499,22 @@ ttm:Qualifier a owl:Class, linkml:ClassDefinition ; rdfs:label "Qualifier" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:parameter ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:value ], [ a owl:Restriction ; 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:parameter ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + 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 . @@ -1541,176 +1542,173 @@ ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:input_name ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:output_ids ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], + owl:allValuesFrom ttm:TestMetadata ; + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:semantic_severity ], + owl:onProperty ttm:output_ids ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:association ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:SemanticSeverityEnum ; owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:well_known ], + owl:minCardinality 0 ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_issue ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:in_v1 ], + owl:allValuesFrom ttm:TestIssueEnum ; + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:in_v1 ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:allValuesFrom ttm:association_category ; + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_id ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; - owl:onProperty ttm:test_metadata ], + owl:minCardinality 0 ; + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestIssueEnum ; - owl:onProperty ttm:test_issue ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_id ], + 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:test_runner_settings ], + 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:test_reference ], + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:input_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; + owl:minCardinality 0 ; owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:well_known ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_name ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:output_name ], + owl:minCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_name ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:output_category ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_id ], - [ a owl:Restriction ; - 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:minCardinality 0 ; owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:association ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:association ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:well_known ], + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_issue ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], + owl:maxCardinality 1 ; + owl:onProperty ttm:semantic_severity ], 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 . @@ -1719,25 +1717,22 @@ ttm:TestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuite" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:TestPersonaEnum ; owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:allValuesFrom [ owl:intersectionOf ( [ owl:unionOf ( ttm:PathfinderTestCase ttm:TestCase ttm:PerformanceTestCase ) ] ttm:TestCase ) ] ; - owl:onProperty ttm:test_cases ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:TestMetadata ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_cases ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; @@ -1746,10 +1741,13 @@ ttm:TestSuite a owl:Class, owl:allValuesFrom ttm:TestSuiteSpecification ; owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestPersonaEnum ; - owl:onProperty ttm:test_persona ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom [ owl:intersectionOf ( [ owl:unionOf ( ttm:PathfinderTestCase ttm:TestCase ttm:PerformanceTestCase ) ] ttm:TestCase ) ] ; + owl:onProperty ttm:test_cases ], + [ a owl:Restriction ; + owl:minCardinality 0 ; 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." ; @@ -1906,125 +1904,125 @@ ttm:TestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:query_type ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:maxCardinality 1 ; owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestAsset ; - owl:onProperty ttm:test_assets ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_name ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:QueryTypeEnum ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + 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:minCardinality 1 ; owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestAsset ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_source ], + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEnvEnum ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_type ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_source ], + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], + owl:minCardinality 0 ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:trapi_template ], + owl:minCardinality 0 ; + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_predicate_id ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TrapiTemplateEnum ; + owl:onProperty ttm:trapi_template ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestSourceEnum ; owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:allValuesFrom ttm:QueryTypeEnum ; - owl:onProperty ttm:query_type ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_input_id ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Precondition ; - owl:onProperty ttm:preconditions ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:input_category ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:components ], + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:query_type ], 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 . @@ -2072,41 +2070,41 @@ ttm:TestEntity a owl:Class, rdfs:subClassOf [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:description ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:name ], + owl:minCardinality 1 ; + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:description ], + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:name ], + owl:onProperty ttm:description ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:onProperty ttm:description ], [ 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:minCardinality 1 ; - owl:onProperty ttm:id ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; + owl:onProperty ttm:name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; 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 fcdaaaa..902f303 100644 --- a/project/protobuf/translator_testing_model.proto +++ b/project/protobuf/translator_testing_model.proto @@ -8,7 +8,7 @@ message AcceptanceTestAsset conceptCategory inputCategory = 0 predicateType predicateId = 0 string predicateName = 0 - uriorcurie outputId = 0 + repeated uriorcurie outputIds = 0 string outputName = 0 conceptCategory outputCategory = 0 associationCategory association = 0 @@ -231,7 +231,7 @@ message TestAsset conceptCategory inputCategory = 0 predicateType predicateId = 0 string predicateName = 0 - uriorcurie outputId = 0 + repeated uriorcurie outputIds = 0 string outputName = 0 conceptCategory outputCategory = 0 associationCategory association = 0 @@ -292,7 +292,7 @@ message TestEdgeData conceptCategory inputCategory = 0 predicateType predicateId = 0 string predicateName = 0 - uriorcurie outputId = 0 + repeated uriorcurie outputIds = 0 string outputName = 0 conceptCategory outputCategory = 0 associationCategory association = 0 diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index a88243e..c2be02a 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -9,118 +9,129 @@ 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:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:property [ sh:description "Deployment environment within which the associated TestSuite is run." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 13 ; sh:path ttm:test_env ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 18 ; - sh:path ttm:test_runner_settings ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_category ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ], + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], [ sh:maxCount 1 ; sh:order 11 ; sh:path ttm:output_category ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description 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 16 ; - sh:path schema1:description ], + sh:order 5 ; + sh:path ttm:test_case_source ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 14 ; + sh:path schema1:identifier ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 2 ; sh:path ttm:preconditions ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:description "A 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 18 ; + 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 7 ; - sh:path ttm:test_case_predicate_id ], + sh:order 15 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; sh:order 17 ; sh:path schema1:additionalType ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:query_type ], [ sh:maxCount 1 ; sh:order 8 ; sh:path ttm:test_case_input_id ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], + sh:order 16 ; + 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; sh:order 12 ; sh:path ttm:components ], - [ sh:description "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:AcceptanceTestAsset ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_assets ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:test_case_source ] ; + sh:order 6 ; + sh:path ttm:test_case_predicate_name ] ; sh:targetClass ttm:AcceptanceTestCase . ttm:AcceptanceTestSuite a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - sh:order 2 ; - sh:path ttm:test_cases ], - [ sh:description "A unique identifier for a Test Entity" ; + 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: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:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; sh:path schema1:description ], - [ sh: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: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:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], + [ sh:description "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; + sh:order 2 ; + sh:path ttm:test_cases ], + [ sh: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 ; @@ -130,32 +141,23 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; - sh:path ttm:test_suite_specification ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ] ; + sh:path ttm:test_suite_specification ] ; sh:targetClass ttm:AcceptanceTestSuite . ttm:BenchmarkTestSuite 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:order 8 ; - sh:path ttm:test_runner_settings ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + sh: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:order 1 ; - sh:path ttm:test_persona ], + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:description "List of explicitly enumerated Test Cases." ; sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; @@ -165,10 +167,6 @@ ttm:BenchmarkTestSuite a sh:NodeShape ; 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: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 ; @@ -180,17 +178,19 @@ ttm:BenchmarkTestSuite a sh:NodeShape ; 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:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + [ 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 0 ; - sh:path ttm:test_metadata ] ; + 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 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:BenchmarkTestSuite . ttm:OneHopTestSuite a sh:NodeShape ; @@ -198,18 +198,24 @@ 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 "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh: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 "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - sh:order 2 ; - sh:path ttm:test_cases ], + sh:description "A 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 ; @@ -221,15 +227,60 @@ 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:description "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; + sh:order 2 ; + sh:path ttm:test_cases ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; - sh:path ttm:test_runner_settings ], + sh:path ttm:test_runner_settings ] ; + sh:targetClass ttm:OneHopTestSuite . + +ttm:PerformanceTestSuite a sh:NodeShape ; + sh:closed true ; + sh:description "A small test suite designed to test the performance of the Translator system." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:class ttm:PerformanceTestCase ; + 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: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:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 5 ; sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ], + [ sh:description "A Test persona describes the user or operational context of a given test." ; + sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_persona ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; @@ -241,174 +292,132 @@ ttm:OneHopTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ] ; - sh:targetClass ttm:OneHopTestSuite . + sh:targetClass ttm:PerformanceTestSuite . -ttm:PerformanceTestSuite a sh:NodeShape ; +ttm:QuantitativeTestCase a sh:NodeShape ; sh:closed true ; - sh:description "A small test suite designed to test the performance of the Translator system." ; + sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; + sh:property [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:test_env ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 12 ; + sh:path ttm:components ], + [ sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:output_category ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; - sh: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:path ttm:test_case_objective ], + [ 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 schema1:description ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], + [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; + sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; sh:maxCount 1 ; sh:order 5 ; - sh:path schema1:name ], + sh:path ttm:test_case_source ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 14 ; + sh:path schema1:identifier ], + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh: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 human-readable name for a Test Entity" ; sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:name ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_category ], + [ sh:class ttm:TestAsset ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; + sh:minCount 1 ; sh:nodeKind sh:IRI ; - sh:order 3 ; - sh:path ttm:test_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:PerformanceTestCase ; - 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:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_metadata ] ; - sh:targetClass ttm:PerformanceTestSuite . - -ttm:QuantitativeTestCase a sh:NodeShape ; - sh:closed true ; - sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + sh:path 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:test_case_objective ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 12 ; - sh:path ttm:components ], - [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], + sh:order 3 ; + sh:path ttm:trapi_template ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 18 ; sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 15 ; - sh:path schema1:name ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path ttm:qualifiers ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:test_env ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:test_case_source ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 16 ; sh:path schema1:description ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - 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 17 ; + sh:path schema1:additionalType ], [ 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 "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], - [ sh:class ttm:TestAsset ; - sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 1 ; - sh:path ttm:test_assets ], [ sh: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:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ] ; + sh:path ttm:test_case_predicate_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:property [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], + [ sh:description "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; + sh:order 2 ; + sh:path ttm:test_cases ], + [ sh:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], + [ sh: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:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], [ sh:description "A Test persona describes the user or operational context of a given test." ; sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; sh:maxCount 1 ; @@ -419,15 +428,6 @@ ttm:StandardsComplianceTestSuite a sh:NodeShape ; sh:maxCount 1 ; sh:order 6 ; sh:path schema1:description ], - [ sh:description "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - sh:order 2 ; - sh:path ttm:test_cases ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], [ sh: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 ; @@ -438,30 +438,14 @@ 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:property [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:predicate_name ], - [ 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:boolean ; - sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:well_known ], + sh:order 11 ; + sh:path ttm:test_issue ], [ 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 "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: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:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -470,63 +454,79 @@ ttm:TestEdgeData a sh:NodeShape ; [ sh:maxCount 1 ; sh:order 0 ; sh:path ttm:input_id ], + [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; + sh:order 5 ; + sh:path ttm:output_ids ], [ sh: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:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:input_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:nodeKind sh:IRI ; sh:order 16 ; sh:path ttm:test_metadata ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_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 "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:order 19 ; + sh:path schema1:description ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], + sh:minCount 1 ; + sh:order 17 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:output_name ], [ 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: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:order 4 ; + sh:path ttm:predicate_name ], + [ 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 name for a Test Entity" ; sh:maxCount 1 ; sh:order 18 ; 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 20 ; - sh:path schema1:additionalType ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], [ 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: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 11 ; - sh:path ttm:test_issue ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:order 8 ; + sh:path ttm:association ], + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], - [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ] ; + sh:order 14 ; + sh:path ttm:well_known ] ; sh:targetClass ttm:TestEdgeData . ttm:TestOutput a sh:NodeShape ; @@ -534,21 +534,6 @@ 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 "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ], - [ 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 6 ; sh:path ttm:test_runner_settings ], @@ -557,46 +542,37 @@ ttm:TestOutput a sh:NodeShape ; 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: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:path ttm:pks ], + [ 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:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "CURIE id of a TestCase registered in the system." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_case_id ] ; sh:targetClass ttm:TestOutput . ttm:TestRunSession a sh:NodeShape ; sh:closed true ; sh:description "Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite)." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 11 ; - sh:path ttm:test_runner_settings ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 7 ; - sh:path schema1:identifier ], - [ sh:class ttm:TestEntityParameter ; - sh:description "Different TestRunners could expect additional global test configuration parameters, like the applicable TRAPI version (\"trapi_version\") or Biolink Model versions (\"biolink_version\")." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path ttm:test_run_parameters ], - [ sh: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 "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:TestCaseResult ; + sh:property [ sh:class ttm:TestCaseResult ; sh:description "One or more instances of TestCaseResult." ; sh:nodeKind sh:IRI ; sh:order 5 ; @@ -606,224 +582,248 @@ ttm:TestRunSession a sh:NodeShape ; sh:maxCount 1 ; sh:order 8 ; sh:path schema1:name ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 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:BlankNodeOrIRI ; + sh:order 3 ; + sh:path ttm:test_run_parameters ], [ sh:datatype xsd:string ; sh:description "Global system name of a TestRunner." ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:test_runner_name ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 0 ; - sh:path ttm:components ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 10 ; + sh:path schema1:additionalType ], + [ sh:description "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:dateTime ; sh:description "Date time when a given entity was created." ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:timestamp ], + [ 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 description for a Test Entity" ; sh:maxCount 1 ; 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:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 11 ; + sh:path ttm:test_runner_settings ] ; sh:targetClass ttm:TestRunSession . ttm:TestSuite a sh:NodeShape ; sh:closed true ; sh:description "Specification of a set of Test Cases, one of either with a static list of 'test_cases' or a dynamic 'test_suite_specification' slot values. Note: at least one slot or the other, but generally not both(?) needs to be present." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:class ttm:TestMetadata ; + sh:property [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ sh:description "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - sh:order 2 ; - sh:path ttm:test_cases ], - [ sh:description "A 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:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; sh:path schema1:description ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], + [ sh: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: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 "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; + sh:order 2 ; + sh:path ttm:test_cases ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ] ; sh:targetClass ttm: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:in ( "High" "Low" "NotApplicable" ) ; + sh:property [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 22 ; - sh:path ttm:semantic_severity ], - [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:order 16 ; + sh:path ttm:output_name ], + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 21 ; - sh:path ttm:test_issue ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 20 ; + 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:minCount 1 ; - sh:order 27 ; - sh:path schema1:identifier ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 19 ; - sh:path ttm:qualifiers ], + 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:order 14 ; + sh:path ttm:predicate_name ], + [ sh:description "The expected result of the query" ; + sh:in ( "include_good" "exclude_bad" ) ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:expected_result ], [ sh:description "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: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 "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 31 ; + sh:path ttm:test_runner_settings ], + [ 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: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:BlankNodeOrIRI ; + sh:order 19 ; + sh:path ttm:qualifiers ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:predicate_id ], + [ sh:datatype xsd:string ; + sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:scientific_question ], [ sh: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 "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], - [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:order 31 ; - sh:path ttm:test_runner_settings ], + sh:order 28 ; + sh:path schema1:name ], + [ sh:maxCount 1 ; + sh:order 17 ; + sh:path ttm:output_category ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 27 ; + sh:path schema1:identifier ], + [ 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:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 26 ; sh:path ttm:test_metadata ], - [ sh:datatype xsd:string ; - sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:scientific_question ], - [ sh:datatype xsd:string ; - sh:description "The notes of the query" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:notes ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_id ], - [ 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: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 "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 17 ; - sh:path ttm:output_category ], - [ 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 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:datatype xsd:string ; + [ sh:description "The direction of the expected query result triple" ; + sh:in ( "increased" "decreased" ) ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:input_name ], + sh:order 4 ; + sh:path ttm:direction ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 23 ; sh:path ttm:in_v1 ], - [ 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 12 ; - sh:path ttm:input_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 "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 28 ; - sh:path schema1:name ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 24 ; sh:path ttm:well_known ], - [ sh:datatype xsd:string ; + [ sh:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], + 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 20 ; - sh:path ttm:expected_output ], - [ sh:description "The direction of the expected query result triple" ; - sh:in ( "increased" "decreased" ) ; + sh:order 29 ; + sh:path schema1:description ], + [ 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 4 ; - sh:path ttm:direction ], + sh:order 5 ; + sh:path ttm:answer_informal_concept ], [ sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:input_category ], + [ 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 "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; sh:order 15 ; - sh:path ttm:output_id ] ; + sh:path ttm:output_ids ], + [ sh:datatype xsd:string ; + sh:description "The notes of the query" ; + sh:maxCount 1 ; + sh:order 9 ; + sh:path ttm:notes ], + [ 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:targetClass ttm:AcceptanceTestAsset . ttm:PathfinderPathNode a sh:NodeShape ; @@ -831,13 +831,13 @@ ttm:PathfinderPathNode a sh:NodeShape ; sh:description "Represents an output path node" ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:order 0 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 1 ; - sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:order 0 ; - sh:path schema1:additionalType ] ; + sh:path schema1:name ] ; sh:targetClass ttm:PathfinderPathNode . ttm:PathfinderTestAsset a sh:NodeShape ; @@ -848,57 +848,40 @@ ttm:PathfinderTestAsset a sh:NodeShape ; sh:order 2 ; sh:path ttm:source_input_category ], [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:target_input_name ], + sh:order 14 ; + 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 15 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:predicate_name ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 8 ; sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:predicate_name ], - [ 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:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:expected_output ], [ sh:maxCount 1 ; sh:order 3 ; sh:path ttm:target_input_id ], - [ sh:datatype xsd:integer ; - sh:description "The number of nodes required in a path to pass this test." ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 9 ; - sh:path ttm:minimum_required_path_nodes ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:source_input_name ], + [ sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:predicate_id ], [ sh:maxCount 1 ; sh:order 5 ; sh:path ttm:target_input_category ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:expected_output ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 16 ; 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 14 ; - sh:path schema1:description ], [ sh:maxCount 1 ; sh:order 0 ; sh:path ttm:source_input_id ], @@ -908,40 +891,44 @@ ttm:PathfinderTestAsset a sh:NodeShape ; sh:order 10 ; sh:path ttm:path_nodes ], [ 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 15 ; - sh:path schema1:additionalType ], - [ sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:predicate_id ] ; + 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 1 ; + sh:path ttm:source_input_name ], + [ sh:datatype xsd:integer ; + sh:description "The number of nodes required in a path to pass this test." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 9 ; + sh:path ttm:minimum_required_path_nodes ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:target_input_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:PathfinderTestAsset . ttm:TestCaseResult a sh:NodeShape ; sh:closed true ; sh:description "The outcome of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh: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:description "Encoded result of a single test run of a given test case" ; + sh:property [ sh:description "Encoded result of a single test run of a given test case" ; sh:in ( "PASSED" "FAILED" "SKIPPED" ) ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:test_case_result ], - [ sh: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 "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 ; @@ -953,6 +940,19 @@ ttm:TestCaseResult a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_case ], + [ sh:description "CURIE id of a TestSuite registered in the system." ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:test_suite_id ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 6 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; @@ -968,6 +968,10 @@ ttm:TestEntity a sh:NodeShape ; sh:maxCount 1 ; sh:order 0 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 3 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; @@ -977,10 +981,6 @@ ttm:TestEntity a sh:NodeShape ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 4 ; sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 3 ; - sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -994,8 +994,8 @@ 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 4 ; + sh:path ttm:unsecret ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 2 ; @@ -1004,45 +1004,45 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:maxCount 1 ; sh:order 5 ; sh:path ttm:bte ], + [ 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:order 3 ; + sh:path ttm:arax ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:parent_pk ], + sh:order 1 ; + sh:path ttm:merged_pk ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 9 ; sh:path schema1:description ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 8 ; - 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 10 ; + sh:path schema1:additionalType ], [ 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:maxCount 1 ; + sh:order 0 ; + sh:path ttm:parent_pk ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:unsecret ], + sh:order 6 ; + sh:path ttm:improving ], [ 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: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 8 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestResultPKSet . ttm:TestEntityParameter a sh:NodeShape ; @@ -1066,53 +1066,57 @@ ttm:TestAsset a sh:NodeShape ; 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:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:predicate_name ], - [ 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 "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 "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], + [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 15 ; - sh:path ttm:test_reference ], + sh:minCount 1 ; + sh:order 17 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:input_name ], [ sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:output_id ], + sh:order 2 ; + sh:path ttm:input_category ], + [ sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:output_category ], [ sh:maxCount 1 ; sh:order 0 ; sh:path ttm:input_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:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ], + sh:order 6 ; + sh:path ttm:output_name ], + [ 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:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 16 ; - sh:path ttm:test_metadata ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:datatype xsd:string ; + sh:description "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 10 ; @@ -1121,49 +1125,46 @@ ttm:TestAsset a sh:NodeShape ; sh:maxCount 1 ; sh:order 13 ; sh:path ttm:in_v1 ], - [ 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:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 19 ; - sh:path schema1:description ], + sh:order 18 ; + sh:path schema1:name ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:well_known ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 16 ; + sh:path ttm:test_metadata ], + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path ttm:test_reference ], [ sh:maxCount 1 ; sh:order 3 ; sh:path ttm:predicate_id ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 17 ; - sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; + sh:order 5 ; + sh:path ttm:output_ids ], + [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; - sh:order 18 ; - sh:path schema1:name ] ; + sh:order 8 ; + sh:path ttm:association ] ; sh:targetClass ttm:TestAsset . ttm:Precondition a sh:NodeShape ; sh:closed true ; sh:description "Represents a precondition for a TestCase" ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 4 ; - sh:path ttm:test_runner_settings ], + 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 ; @@ -1173,322 +1174,321 @@ ttm:Precondition 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 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 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 4 ; + sh:path ttm:test_runner_settings ] ; sh:targetClass ttm:Precondition . ttm:PathfinderTestCase a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh: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 "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], - [ sh:class ttm:PathfinderTestAsset ; + sh:property [ sh:class ttm:PathfinderTestAsset ; sh:description "List of explicitly enumerated Test Assets. The class attributes of TestAsset would be included in the TestCase versus being referred to by the identifier (curie) of the TestAsset. That is, this would be a list of objects (in JSONSchema serialization) versus a list of strings (where each string is an identifier pointing to another class)." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 0 ; 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 3 ; - sh:path ttm:test_env ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:test_case_objective ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh: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 "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; sh:order 2 ; sh:path ttm:components ], [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ] ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], + [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:in ( "dev" "ci" "test" "prod" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:test_env ] ; sh:targetClass ttm:PathfinderTestCase . ttm:PerformanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a performance test case." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ 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 ttm:test_env ], - [ sh:datatype xsd:integer ; + 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:order 0 ; - sh:path ttm:test_run_time ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + sh:order 7 ; + 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 6 ; - sh:path ttm:test_case_objective ], + sh:order 5 ; + 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 19 ; sh:path schema1:additionalType ], + [ 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 18 ; + 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 3 ; + sh:path ttm:test_assets ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 20 ; + sh:path ttm:test_runner_settings ], [ sh:class ttm:Precondition ; sh:nodeKind sh:IRI ; sh:order 4 ; 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 14 ; + sh:path ttm:components ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 16 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_predicate_name ], [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 1 ; sh:path ttm:spawn_rate ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:output_category ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 9 ; sh:path ttm:test_case_predicate_id ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:datatype xsd:integer ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 16 ; - sh:path schema1:identifier ], + sh:order 0 ; + sh:path ttm:test_run_time ], + [ 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 ttm:test_env ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:test_case_objective ], [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:test_case_input_id ], + sh:order 12 ; + sh:path ttm:input_category ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 2 ; sh:path ttm:query_type ], - [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 17 ; - 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 "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:trapi_template ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 11 ; - sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 18 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 20 ; - sh:path ttm:test_runner_settings ], - [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:output_category ], - [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:input_category ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 14 ; - 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 3 ; - sh:path ttm:test_assets ] ; + sh:path ttm:qualifiers ] ; sh:targetClass ttm:PerformanceTestCase . 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; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], + sh:property [ sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:output_category ], [ 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:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 12 ; - sh:path ttm:components ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], - [ sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:test_case_input_id ], + sh:order 7 ; + 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 13 ; + sh:path ttm:test_env ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:query_type ], [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; sh:maxCount 1 ; sh:order 3 ; 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 5 ; - sh:path ttm:test_case_source ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 12 ; + sh:path ttm:components ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 18 ; - sh:path ttm:test_runner_settings ], + 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:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 15 ; sh:path schema1:name ], [ sh:datatype xsd:string ; - sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; - sh:path schema1:additionalType ], + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path schema1:description ], + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 18 ; + sh:path ttm:test_runner_settings ], [ sh: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 "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], - [ sh:datatype xsd:string ; + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_predicate_id ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], + sh:order 4 ; + sh:path ttm:test_case_objective ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_predicate_name ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh: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 unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 14 ; sh:path schema1:identifier ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:test_env ], [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ] ; + sh:order 10 ; + sh:path ttm:input_category ] ; sh:targetClass ttm:TestCase . ttm:TestSuiteSpecification a sh:NodeShape ; sh:closed true ; sh:description "Parameters for a Test Case instances either dynamically generated from some external source of Test Assets." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "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 "An web accessible file resource link to test entity data (e.g. a web accessible text file of Test Asset entries)" ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_data_file_locator ], + sh:minCount 1 ; + sh:order 2 ; + sh:path schema1:identifier ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path schema1:name ], + sh:order 4 ; + sh:path schema1:description ], [ sh: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: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 4 ; - sh:path schema1:description ], - [ sh:description "A unique identifier for a Test Entity" ; + 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:minCount 1 ; - sh:order 2 ; - sh:path schema1:identifier ], + sh:order 1 ; + sh:path ttm:test_data_file_format ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 5 ; - sh:path schema1:additionalType ] ; + sh: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:targetClass ttm:TestSuiteSpecification . ttm:Qualifier a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "The 'value' of should be a suitable value generally drawn from an applicable Biolink Model (\"Enum\") value set of the specified Qualifier." ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:value ], - [ sh:datatype xsd:string ; sh:description "The 'parameter' of a Qualifier should be a `qualifier` slot name from the Biolink Model ('biolink' namespace) 'biolink:qualifier' hierarchy." ; sh:maxCount 1 ; sh:order 0 ; - sh:path ttm:parameter ] ; + sh:path ttm:parameter ], + [ sh:datatype xsd:string ; + sh:description "The 'value' of should be a suitable value generally drawn from an applicable Biolink Model (\"Enum\") value set of the specified Qualifier." ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:value ] ; sh:targetClass ttm:Qualifier . ttm:TestMetadata a sh:NodeShape ; 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 "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 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:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -1498,29 +1498,29 @@ ttm:TestMetadata a sh:NodeShape ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; sh:path ttm:test_runner_settings ], - [ sh:description "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 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 "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_objective ], + sh:order 1 ; + sh:path ttm:test_reference ], [ sh:class ttm:TestEntityParameter ; sh:description "Metadata annotation." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; - sh:path ttm:test_annotations ] ; + sh:path ttm:test_annotations ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:test_objective ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ] ; sh:targetClass ttm:TestMetadata . diff --git a/project/shex/translator_testing_model.shex b/project/shex/translator_testing_model.shex index 58ca779..3dc12b7 100644 --- a/project/shex/translator_testing_model.shex +++ b/project/shex/translator_testing_model.shex @@ -222,7 +222,7 @@ linkml:Sparqlpath xsd:string @ ? ; @ ? ; @linkml:String ? ; - @linkml:Uriorcurie ? ; + @linkml:Uriorcurie * ; @linkml:String ? ; @ ? ; @ ? ; diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index 5dd3653..966be34 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -37,7 +37,6 @@ -- * Slot: input_category Description: -- * Slot: predicate_id Description: -- * Slot: predicate_name Description: --- * Slot: output_id Description: -- * Slot: output_name Description: -- * Slot: output_category Description: -- * Slot: association Description: Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement @@ -85,7 +84,6 @@ -- * Slot: input_category Description: -- * Slot: predicate_id Description: -- * Slot: predicate_name Description: --- * Slot: output_id Description: -- * Slot: output_name Description: -- * Slot: output_category Description: -- * Slot: association Description: Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement @@ -106,7 +104,6 @@ -- * Slot: input_category Description: -- * Slot: predicate_id Description: -- * Slot: predicate_name Description: --- * Slot: output_id Description: -- * Slot: output_name Description: -- * Slot: output_category Description: -- * Slot: association Description: Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement @@ -288,6 +285,9 @@ -- # Class: "PathfinderPathNode_ids" Description: "" -- * Slot: PathfinderPathNode_id Description: Autocreated FK slot -- * Slot: ids Description: +-- # Class: "TestAsset_output_ids" Description: "" +-- * Slot: TestAsset_id Description: Autocreated FK slot +-- * Slot: output_ids Description: One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept. -- # Class: "TestAsset_tags" Description: "" -- * Slot: TestAsset_id Description: Autocreated FK slot -- * Slot: tags Description: One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a "Block List" collection @@ -303,12 +303,18 @@ -- # Class: "PathfinderTestAsset_test_runner_settings" Description: "" -- * Slot: PathfinderTestAsset_id Description: Autocreated FK slot -- * Slot: test_runner_settings Description: Scalar parameters for the TestRunner processing a given TestEntity. +-- # Class: "AcceptanceTestAsset_output_ids" Description: "" +-- * Slot: AcceptanceTestAsset_id Description: Autocreated FK slot +-- * Slot: output_ids Description: One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept. -- # Class: "AcceptanceTestAsset_tags" Description: "" -- * Slot: AcceptanceTestAsset_id Description: Autocreated FK slot -- * Slot: tags Description: One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a "Block List" collection -- # Class: "AcceptanceTestAsset_test_runner_settings" Description: "" -- * Slot: AcceptanceTestAsset_id Description: Autocreated FK slot -- * Slot: test_runner_settings Description: Scalar settings for the TestRunner, e.g. "inferred" +-- # Class: "TestEdgeData_output_ids" Description: "" +-- * Slot: TestEdgeData_id Description: Autocreated FK slot +-- * Slot: output_ids Description: One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept. -- # Class: "TestEdgeData_tags" Description: "" -- * Slot: TestEdgeData_id Description: Autocreated FK slot -- * Slot: tags Description: One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a "Block List" collection @@ -600,7 +606,6 @@ CREATE TABLE "AcceptanceTestAsset" ( input_category TEXT, predicate_id TEXT, predicate_name TEXT, - output_id TEXT, output_name TEXT, output_category TEXT, association TEXT, @@ -625,7 +630,6 @@ CREATE TABLE "TestEdgeData" ( input_category TEXT, predicate_id TEXT, predicate_name TEXT, - output_id TEXT, output_name TEXT, output_category TEXT, association TEXT, @@ -944,6 +948,12 @@ CREATE TABLE "PathfinderTestAsset_test_runner_settings" ( PRIMARY KEY ("PathfinderTestAsset_id", test_runner_settings), FOREIGN KEY("PathfinderTestAsset_id") REFERENCES "PathfinderTestAsset" (id) ); +CREATE TABLE "AcceptanceTestAsset_output_ids" ( + "AcceptanceTestAsset_id" TEXT, + output_ids TEXT, + PRIMARY KEY ("AcceptanceTestAsset_id", output_ids), + FOREIGN KEY("AcceptanceTestAsset_id") REFERENCES "AcceptanceTestAsset" (id) +); CREATE TABLE "AcceptanceTestAsset_tags" ( "AcceptanceTestAsset_id" TEXT, tags TEXT, @@ -956,6 +966,12 @@ CREATE TABLE "AcceptanceTestAsset_test_runner_settings" ( PRIMARY KEY ("AcceptanceTestAsset_id", test_runner_settings), FOREIGN KEY("AcceptanceTestAsset_id") REFERENCES "AcceptanceTestAsset" (id) ); +CREATE TABLE "TestEdgeData_output_ids" ( + "TestEdgeData_id" TEXT, + output_ids TEXT, + PRIMARY KEY ("TestEdgeData_id", output_ids), + FOREIGN KEY("TestEdgeData_id") REFERENCES "TestEdgeData" (id) +); CREATE TABLE "TestEdgeData_tags" ( "TestEdgeData_id" TEXT, tags TEXT, @@ -1046,7 +1062,6 @@ CREATE TABLE "TestAsset" ( input_category TEXT, predicate_id TEXT, predicate_name TEXT, - output_id TEXT, output_name TEXT, output_category TEXT, association TEXT, @@ -1153,6 +1168,12 @@ CREATE TABLE "Qualifier" ( FOREIGN KEY("QuantitativeTestCase_id") REFERENCES "QuantitativeTestCase" (id), FOREIGN KEY("PerformanceTestCase_id") REFERENCES "PerformanceTestCase" (id) ); +CREATE TABLE "TestAsset_output_ids" ( + "TestAsset_id" TEXT, + output_ids TEXT, + PRIMARY KEY ("TestAsset_id", output_ids), + FOREIGN KEY("TestAsset_id") REFERENCES "TestAsset" (id) +); CREATE TABLE "TestAsset_tags" ( "TestAsset_id" TEXT, tags TEXT, diff --git a/pyproject.toml b/pyproject.toml index 5beaff6..c62bf03 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "translator_testing_model" -version = "0.5.0" +version = "0.6.0" description = "This is the project description." authors = ["Sierra Moxon ", "Richard Bruskiewich "] license = "MIT" diff --git a/src/data/examples/Bad-TestAsset-001.yaml b/src/data/examples/Bad-TestAsset-001.yaml index 171adc6..d3554e9 100644 --- a/src/data/examples/Bad-TestAsset-001.yaml +++ b/src/data/examples/Bad-TestAsset-001.yaml @@ -8,7 +8,8 @@ name: TestAsset001 description: Fingolimod treats multiple sclerosis input_id: PUBCHEM.COMPOUND:107970 predicate_name: treats -output_id: MONDO:0005301 +output_ids: + - MONDO:0005301 expected_output: Acceptable test_runner_settings: - "inferred" diff --git a/src/data/examples/Good-AcceptanceTestAsset-001.yaml b/src/data/examples/Good-AcceptanceTestAsset-001.yaml index 2a48722..fb30c39 100644 --- a/src/data/examples/Good-AcceptanceTestAsset-001.yaml +++ b/src/data/examples/Good-AcceptanceTestAsset-001.yaml @@ -26,7 +26,8 @@ name: AcceptanceTestAsset001 description: Iron treats Aceruloplasminemia input_id: MONDO:0011426 predicate_name: treats -output_id: DRUGBANK:DB01592 +output_ids: + - DRUGBANK:DB01592 expected_output: NeverShow test_metadata: id: "test:1" diff --git a/src/data/examples/Good-AcceptanceTestCase-001.yaml b/src/data/examples/Good-AcceptanceTestCase-001.yaml index ca6f646..d008ecf 100644 --- a/src/data/examples/Good-AcceptanceTestCase-001.yaml +++ b/src/data/examples/Good-AcceptanceTestCase-001.yaml @@ -22,7 +22,8 @@ test_assets: description: Iron treats Aceruloplasminemia input_id: MONDO:0011426 predicate_name: treats - output_id: DRUGBANK:DB01592 + output_ids: + - DRUGBANK:DB01592 expected_output: NeverShow test_runner_settings: - "inferred" diff --git a/src/data/examples/Good-TestAsset-001.json b/src/data/examples/Good-TestAsset-001.json index f773550..31a3005 100644 --- a/src/data/examples/Good-TestAsset-001.json +++ b/src/data/examples/Good-TestAsset-001.json @@ -4,7 +4,7 @@ "description": "Fingolimod treats multiple sclerosis", "input_id": "PUBCHEM.COMPOUND:107970", "predicate_name": "treats", - "output_id": "MONDO:0005301", + "output_ids": ["MONDO:0005301"], "expected_output": "Acceptable", "test_runner_settings": ["inferred", "test"], "test_metadata": { diff --git a/src/data/examples/Good-TestAsset-001.yaml b/src/data/examples/Good-TestAsset-001.yaml index 31fd44d..2cbd601 100644 --- a/src/data/examples/Good-TestAsset-001.yaml +++ b/src/data/examples/Good-TestAsset-001.yaml @@ -16,7 +16,7 @@ # - input_category # - predicate_id # - predicate_name -# - output_id +# - output_ids # - output_name # - output_category # - association @@ -45,7 +45,8 @@ description: Iron treats Aceruloplasminemia input_id: MONDO:0011426 input_name: Aceruloplasminemia predicate_name: treats -output_id: DRUGBANK:DB01592 +output_ids: + - DRUGBANK:DB01592 output_name: Iron (PUBCHEM) expected_output: NeverShow test_reference: https://github.com/NCATSTranslator/Feedback/issues/506 diff --git a/src/data/examples/Good-TestAsset-002.json b/src/data/examples/Good-TestAsset-002.json new file mode 100644 index 0000000..19b3d38 --- /dev/null +++ b/src/data/examples/Good-TestAsset-002.json @@ -0,0 +1,14 @@ +{ + "id": "example:TestAsset002", + "name": "TestAsset002", + "description": "Sirolimus treats Castleman disease", + "input_id": "MONDO:0015564", + "predicate_name": "treats", + "output_ids": ["PUBCHEM.COMPOUND:5284616", "CHEBI:9168"], + "output_name": "sirolimus", + "expected_output": "TopAnswer", + "test_runner_settings": ["inferred"], + "test_metadata": { + "id": "example:TestAsset002" + } +} diff --git a/src/data/examples/Good-TestCase-001.json b/src/data/examples/Good-TestCase-001.json index d4763fe..62df579 100644 --- a/src/data/examples/Good-TestCase-001.json +++ b/src/data/examples/Good-TestCase-001.json @@ -9,7 +9,7 @@ "description": "Fingolimod treats multiple sclerosis", "input_id": "PUBCHEM.COMPOUND:107970", "predicate_name": "treats", - "output_id": "MONDO:0005301", + "output_ids": ["MONDO:0005301"], "expected_output": "Acceptable", "test_runner_settings": ["inferred", "test"], "test_metadata": { diff --git a/src/data/examples/Good-TestCase-001.yaml b/src/data/examples/Good-TestCase-001.yaml index 2af86e1..7bb3bdf 100644 --- a/src/data/examples/Good-TestCase-001.yaml +++ b/src/data/examples/Good-TestCase-001.yaml @@ -41,7 +41,8 @@ test_assets: name: TestAsset001 input_id: MONDO:0011426 predicate_name: treats - output_id: DRUGBANK:DB01592 + output_ids: + - DRUGBANK:DB01592 expected_output: NeverShow test_runner_settings: - "inferred" diff --git a/src/data/examples/SampleTestAssetList.json b/src/data/examples/SampleTestAssetList.json index 84bb0e0..5240963 100644 --- a/src/data/examples/SampleTestAssetList.json +++ b/src/data/examples/SampleTestAssetList.json @@ -5,7 +5,7 @@ "description": "Fingolimod treats multiple sclerosis", "input_id": "PUBCHEM.COMPOUND:107970", "predicate_name": "treats", - "output_id": "MONDO:0005301", + "output_ids": ["MONDO:0005301"], "expected_output": "Acceptable", "runner_settings": ["inferred", "test"], "test_metadata": { @@ -19,7 +19,7 @@ "description": "Carbamazepine treats Cerebral palsy", "input_id": "PUBCHEM.COMPOUND:2554", "predicate_name": "treats", - "output_id": "MONDO:0006497", + "output_ids": ["MONDO:0006497"], "expected_output": "number_2_Acceptable", "runner_settings": ["inferred", "test"], "test_metadata": { diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index f833af5..6108dbe 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -287,7 +287,7 @@ class TestAsset(TestEntity): input_category: Optional[str] = Field(None) predicate_id: Optional[str] = Field(None) predicate_name: Optional[str] = Field(None) - output_id: Optional[str] = Field(None) + output_ids: Optional[List[str]] = Field(default_factory=list, description="""One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept.""") output_name: Optional[str] = Field(None) output_category: Optional[str] = Field(None) association: Optional[str] = Field(None, description="""Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement""") @@ -348,7 +348,7 @@ class AcceptanceTestAsset(TestAsset): input_category: Optional[str] = Field(None) predicate_id: Optional[str] = Field(None) predicate_name: Optional[str] = Field(None) - output_id: Optional[str] = Field(None) + output_ids: Optional[List[str]] = Field(default_factory=list, description="""One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept.""") output_name: Optional[str] = Field(None) output_category: Optional[str] = Field(None) association: Optional[str] = Field(None, description="""Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement""") @@ -376,7 +376,7 @@ class TestEdgeData(TestAsset): input_category: Optional[str] = Field(None) predicate_id: Optional[str] = Field(None) predicate_name: Optional[str] = Field(None) - output_id: Optional[str] = Field(None) + output_ids: Optional[List[str]] = Field(default_factory=list, description="""One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept.""") output_name: Optional[str] = Field(None) output_category: Optional[str] = Field(None) association: Optional[str] = Field(None, description="""Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement""") diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index 9ea99ac..8e21322 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: 2025-10-22T15:23:25 +# Generation date: 2026-10-29T02:03:22 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -344,7 +344,7 @@ class TestAsset(TestEntity): input_category: Optional[Union[str, ConceptCategory]] = None predicate_id: Optional[Union[str, PredicateType]] = None predicate_name: Optional[str] = None - output_id: Optional[Union[str, URIorCURIE]] = None + output_ids: Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]] = empty_list() output_name: Optional[str] = None output_category: Optional[Union[str, ConceptCategory]] = None association: Optional[Union[str, AssociationCategory]] = None @@ -380,8 +380,9 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self.predicate_name is not None and not isinstance(self.predicate_name, str): self.predicate_name = str(self.predicate_name) - if self.output_id is not None and not isinstance(self.output_id, URIorCURIE): - self.output_id = URIorCURIE(self.output_id) + if not isinstance(self.output_ids, list): + self.output_ids = [self.output_ids] if self.output_ids is not None else [] + self.output_ids = [v if isinstance(v, URIorCURIE) else URIorCURIE(v) for v in self.output_ids] if self.output_name is not None and not isinstance(self.output_name, str): self.output_name = str(self.output_name) @@ -1652,8 +1653,8 @@ class slots: slots.biolink_qualified_predicate = Slot(uri=TTM.biolink_qualified_predicate, name="biolink_qualified_predicate", curie=TTM.curie('biolink_qualified_predicate'), model_uri=TTM.biolink_qualified_predicate, domain=None, range=Optional[Union[str, URIorCURIE]]) -slots.output_id = Slot(uri=TTM.output_id, name="output_id", curie=TTM.curie('output_id'), - model_uri=TTM.output_id, domain=None, range=Optional[Union[str, URIorCURIE]]) +slots.output_ids = Slot(uri=TTM.output_ids, name="output_ids", curie=TTM.curie('output_ids'), + model_uri=TTM.output_ids, domain=None, range=Optional[Union[Union[str, URIorCURIE], List[Union[str, URIorCURIE]]]]) slots.output_name = Slot(uri=TTM.output_name, name="output_name", curie=TTM.curie('output_name'), model_uri=TTM.output_name, domain=None, range=Optional[str]) diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index 1e8f1e2..f82fc47 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -125,7 +125,7 @@ classes: - input_category - predicate_id - predicate_name - - output_id + - output_ids - output_name - output_category - association @@ -596,9 +596,15 @@ slots: The qualified_predicate in Biolink model corresponding to the shorthand predicate name used in the test asset. range: uriorcurie - output_id: + output_ids: aliases: ["OutputID", "ObjectID"] + description: >- + One or more CURIEs that identify the expected output. Any one of them + may stand for the expected answer, eg the same chemical under its ChEBI + and PubChem identifiers when node normalization no longer merges them + into one concept. range: uriorcurie + multivalued: true output_name: aliases: ["OutputName", "ObjectName"] diff --git a/src/translator_testing_model/scripts/generate_suite_for_demo.py b/src/translator_testing_model/scripts/generate_suite_for_demo.py index f041f5d..b3dd964 100644 --- a/src/translator_testing_model/scripts/generate_suite_for_demo.py +++ b/src/translator_testing_model/scripts/generate_suite_for_demo.py @@ -132,7 +132,7 @@ def create_test_asset(row, toolkit): input_id=row.get("InputID").strip(), predicate_name=converted_predicate, predicate_id=f"biolink:{converted_predicate}", - output_id=row.get("OutputID").strip(), + output_ids=[row.get("OutputID").strip()], output_name=row.get("OutputName").strip(), output_category=output_category, expected_output=expected_output.strip(), diff --git a/tests/test_output_ids.py b/tests/test_output_ids.py new file mode 100644 index 0000000..c2bfe8e --- /dev/null +++ b/tests/test_output_ids.py @@ -0,0 +1,34 @@ +"""Test that a TestAsset can name its expected output by several CURIEs.""" +import unittest + +from pydantic import ValidationError + +from src.translator_testing_model.datamodel.pydanticmodel import TestAsset + + +class TestOutputIds(unittest.TestCase): + """Testing the multivalued output_ids slot on the Pydantic model.""" + + def test_several_output_ids(self): + """Every CURIE given for the expected output is kept, in order.""" + asset = TestAsset( + id="example:TestAsset002", + output_ids=["PUBCHEM.COMPOUND:5284616", "CHEBI:9168"], + ) + assert asset.output_ids == ["PUBCHEM.COMPOUND:5284616", "CHEBI:9168"] + + def test_output_ids_default_empty(self): + """An asset with no expected output, eg a performance asset, has none.""" + assert TestAsset(id="example:TestAsset003").output_ids == [] + + def test_bare_string_rejected(self): + """A single CURIE must still be given as a list.""" + with self.assertRaises(ValidationError): + TestAsset(id="example:TestAsset004", output_ids="CHEBI:9168") + + def test_old_output_id_rejected(self): + """Data still using the old single-valued output_id fails loudly.""" + with self.assertRaises(ValidationError): + TestAsset.model_validate( + {"id": "example:TestAsset005", "output_id": "CHEBI:9168"} + ) From 39609c1eedfa93fcb8dac6714226e8350fe2eb8b Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 16:39:45 +0000 Subject: [PATCH 2/4] Remove test_env from test cases A suite is the same in every environment, so test cases no longer say which one they run in: the TestHarness is told. TestCase and PathfinderTestCase (and so every test case class) drop test_env, and data that still has it is rejected. TestRunSession keeps it, since a record of a run says where it ran. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d --- examples/Good-TestCase-001.yaml | 1 - project/excel/translator_testing_model.xlsx | Bin 22721 -> 22583 bytes .../graphql/translator_testing_model.graphql | 5 - .../translator_testing_model.context.jsonld | 2 +- .../jsonld/translator_testing_model.jsonld | 17 +- .../translator_testing_model.schema.json | 30 +- project/owl/translator_testing_model.owl.ttl | 840 +++++----- .../protobuf/translator_testing_model.proto | 5 - .../shacl/translator_testing_model.shacl.ttl | 1491 ++++++++--------- project/shex/translator_testing_model.shex | 10 +- .../sqlschema/translator_testing_model.sql | 12 +- src/data/examples/Good-TestCase-001.yaml | 1 - .../datamodel/pydanticmodel.py | 7 +- .../datamodel/translator_testing_model.py | 10 +- .../schema/translator_testing_model.yaml | 6 +- .../scripts/generate_suite_for_demo.py | 2 - tests/test_test_env.py | 27 + 17 files changed, 1185 insertions(+), 1281 deletions(-) create mode 100644 tests/test_test_env.py diff --git a/examples/Good-TestCase-001.yaml b/examples/Good-TestCase-001.yaml index 7bb3bdf..191cf5e 100644 --- a/examples/Good-TestCase-001.yaml +++ b/examples/Good-TestCase-001.yaml @@ -11,7 +11,6 @@ # TestCase, used to probe a particular test condition. # is_a: TestEntity # slots: -# - test_env # - test_case_type # - query_type # - test_assets diff --git a/project/excel/translator_testing_model.xlsx b/project/excel/translator_testing_model.xlsx index da8aad469ec62aaec1b60c64125a9033ce9146ac..8568fe00d8fb1e26c7f9009ffcd04ebbb76c6c6b 100644 GIT binary patch delta 5522 zcmeHL`9GBF|DG9p*6jP5Eeu7(P(t=y#*)Eskg;V6*&dUnh{7n8r7V%`PSz2UT^NzF zBukd4lapQe%slG!J$?UxemV2Qyzja0_w#=4xu4hlysztOt%TNAKidN==AHp%N=u9Fs=`0pm6~x>yI7o~A4Jb1_;dxS+A1&m1}*xO$=a8RkjO&tU=a9c~kv zraPLSjs}|zzfVdv%XegUMW3j`4K1GMI^&F>O`!B7pmk_^@X@peoB(R48g0z(ryKZi z=h?t6X1*g)KR7fbEF*2eGfnpjcZO#IyGpLGz=r^{(+pl@R_*f&yN!{qr;M2b=<3i5 zb59!@r_RWA)7rbaB(IKp+1$j)Z0&^m?JYJ_XDJ1`9k`WvmnFDiJ>QQucgz0YeL$fy z>@r1|s=q={Q^E+*)iTs!P-4W%P>WU%(pZtk)snPHFj8!!4+7`dI7O>%7zaU2ikTOT zdaONUq#QQRb?`SGPbQRsw85EGkC)uYAdu=KxJWoRZjhG>Aoz``FzvB*3}B4X@7J_J zYK8St3()ibm9fl{7^3Dpo4w+R7f!(`u zwpTSRxQ=`l2y9!F4q@tB7t7OUx=k4~(E?j6bA*`8=4D@4aBK>!iK^h&=5X7)nphP0 zZLs32Nk`WEzMguo^ojhoA|6i|S^Tvl-OUb{DLTlFJi7-%3kb6hq1yr99z@t~56qY5 zUzc**ACYuvThtuZL(3Rw`qwtbhUWAO81WjUigrWSl0Mus z$t4Uhe@PmA7cKE#b166yxbB4i}BQ8gBV` zHC}ukG+uL-qTG~2Xo|;i>Y}rll96%W0k^YsDTQI3nBMrpRyxfz)&&!*yS*C~)q7x? z$oE0Nw`U-4!9eHr$938MhJ&!vz`?ByY5&F(4Nfb8fMSKcXdMkY2fJxlrZY`Wn6`MR zVAz+YJ?3@30~->XOvv7vQ{O2_cFVhwzS^x5wI#v*0vH={U8oxsXwJ^cWYR{=g{|k- z*qFvb^yZHwJJsu9+^;bU={==_w_~R1>y>yazAy`jH|@`@hv7|+97#d8rmz^c}&0zIQCDkTtesz`uBFQ+_tIomE@*SWi== z+Szi&U_T}m*}*+0VHyL&c4P^)mb;n+IkWCA@ad8GpRoSWcJJNiUgzfeA+uUt9z*dS z(2Z0No;8WI0%3)qbpvf_IqfoyPtj!cCn~Ot2jqUtp$VJp^OaD%=ib+H&!%K|L#_X zUY<=C41C7r==PNz*pOYR9mwy`OW98CE|w04SqA2JxVA+cNPDFE z>Lmxg;bT*-@l1?De2l4aXKgZU0cJun=~DPE`xM_p2uk^t9}kA?FU1Ht)zn(tqqLJ- z3?c9J^;712S({)yOK4HSBQ~8*(!Q`{_3rT60x;i^A( z#$N-7ucN4a=64zt>A8C@`emKn=ZB=wk8OK5>$2NCj0=5)`dOa{i`#8VhyfSpRQPiZ z%oO14OIW?jBH4A0)Zg+oAPiSKn02G&_w?_F>Azxr%L0$kOq+-9tZ|~8X9-xuVnASm zOApzYRp*~s7>4$MaKq;42i;p+m#Ho}+(v3xUQbB}Y?U!tWFaZV)xHAT8LIEfL~6=y zdN$2$M1VN>nnI0n0weCW70}3VpH2sN?x44QX*(kTmAK6HFlTzKo#9g?&%(uLF-(6j zZMY-aN+X>;8(D*-kDoL5_)?M?E0AKR0xk5&sIwFg_qpTT zcDzQHO7({8<03jAbkLR(mH*mm`rO-h!P$HFrz;Z*+X!n1E+rEA@xy>vOdn`&|@{79}%% zD)TB)PYKh4dTQV}3jk^;8X6%l_aXHV0W}T#3V79A*=vgZXHp0u_YS!K*CdV#q{tO`2!^Zo=C=KvhV1^$5ECZI`f@ zKQk~bQ*gaf{@`P36?#qbV}35_KV0Zuq zcjK{IMmORZon}m*YnAXvE_kUsbd?&JnzLXgVs~s{pIOE@jEZhHQ%W{b z{Y_udtH^1U=%+X$#9`E;w;Ulso5eI2<31m>KB~*+ChgmM@IW6R$|_z^R)vQ1_Tnu{ zPyhX*rz1aN|LmE7vG>!xzKmn+fas~b=9;wY3Lyp1`$MNZG)E9Ij-w2l^j$t)y2wP4 z!TX9uepjcZ-*lwlz387VoqkqZ>a9108sA~XYoMY-d?H_7^cNd7I>z3q&;}C=6W1G0 z+e%+wFdN34)8F2t5>Gp5^IDOxvJH&jZpsW{?e;A{duD0>>(bgR6?=c57a%*x#^LP| z)rE{*PTJrK9pNCHovVhD z61uh&v~UGq1_0^uEz+l$uxV~PbS$b08LM1wDEeq$a-}E28T~Q-%QklhNmT_VEL0nu z$eElndU5BGdp&+Lk|i=gaztCYzvJc(lWQ2Y6Lu&h;w~>-eO{P}PHE+d1sirWscC85 z=UqiKfi})h+_7`u3BBQl#sWoygY+?Ue8HP|QLIEMKoz47bFa18j7GLxDNnDFouJhE zOebd?-5^%F1#h|K=M^RJq3S}keN{yF4f>8QmpTMm)0@t7vVgCCU6$_IXFg>%kC!K1 z9ovt;4nIgn$d%l$3{fvDVn8q5u(J<$ooIu_Qm8ij-C~Fuq~jl(`Bha_2g1cc&m%`p zgA{Q&a$?mq@}MsQj*U+J949Ls`X%Mchq>j-VmMPIMK!-F2UtVtj4T*0sn@|k|77~l za>lDr2*iYpc;30Hbu{Ck^dw(JbbHOZgoqpA062H`rWPKwYMyF`f=f85w?J}Zc=YqY zYAuF-;Ix8q0qEe2o2dTde&Ga6l}M|$Ha$xUQ>MJQr=}8zLoHGeH3NgkVW>O|n}DR<09Q1+&SnTHu^Vb~saj=;Eg~Pj^Tu!rIBkrgUk?s6@dGBPv z#DWXV#QjLI{f-L)2_)HESo F^*5LyJpMiW8}h>Ua6X3 z2*e7)b0u>$vEsRKxR7Iuddbhk0k0MWN4#tCcy2o$l`peYTv)OLs^IhKgir0hL=g{f zsk5unj+79ebdmCnC$elWv{*+_5k%ic)16NWLN8$q6M{n|*dgMRyjrOjqvnhVrwVP= zb>4DE4~R{jZxnQnHnKq_M_Xqk3})a`P`#aVf)q11b+?!uy3%rqJf{`ifuPCW_&u2& zdV`r$4HXkNF9;#!Y15v|s!Dmzd8T2PGRrRQ)G8=IcFq_0&rskq7nhEI2?aksnjt4q6kpJEX z94^x(Tav5#GguP}!E;qBu||M5Em?_Gy1I`IOCMM7*?t8=w|6;18EgEzq^liaeGH!h zk1)fU@pUrMG5ouh7;_GxZ14{H21n#XOh+?;K$+XgyAg15pD+tx9XO=PwXTqq_bdzX zqNW9;W_C^{RN9isQ%u+JNYxI<0PIK5#=3ooVSu1^=KCmtEA}h)s~vaqLaKtP^Mat@ zkosGZyN(+l)F~vSYP(mf1jS_#to;wkF0k4f@II&i)K&cLg8qrp0tV39UCF-t>(JDRV}W z*jF$#Z`<-*UnmrkSsX|~)SD+*YqV~I@-YjLHfCs$B(_{l(kKjFSYpJq@a=2=_nNU@ zno@DX_LGs5DYxAhrKgIjNX7Zib@yUf(0RFr!WN`LaDy+v!Zg@_AkILOq~Rr`?1^p< zc`VyM5z0ozoN{dxmmx|zcr2aM@-yNlm=`S{xDO8LhraE-o^2US&6asXUD8R3L$fY4 zn|fUgTJS2mSc$-Q0r@MUoO6@I{wg@}2Wvy2Ij| zNXqI5>PmnF_3&aaMel{a@AZ`;u1`a>``~ZooE^v4ph3@}cFKFRnTIn-FDj3~UamsB zm+iwXv4kgg?!F^$oEpxH#$HdflH{x!wwDMPF^*W5$19dIAEFY?hSR@h92~dK^s+Pi zwk#{VZ6kqwMh@!~5(&TOq9uo`1VRSBf9xvhEhz&cGlz-&{2q0+2744*>`YSy3BAz~ z2sD?7o`!kL(a6(9BZncP<6gT2r!Qc3zz%wjcgRUZO1GQDe077jZd@)^>cLm)>mA9? z=0a(Y3ojQC9j)R)X7AaPkJh8TyrX$`o7J)?k9yIV>S5khbD~7@5g;gJm9xYhfOyt9F2~w8hE-&miqydO7vyFF|e{{A&nNWbh%W4K|(^`j1266x5MB&N6Ta!S!7ssW)rasn04&^M}qA(XM!A z)l8~Ljz6?duDw|UU6`#_jVcm+(`Tf7=Zoj)jGlLGkNt!|KICdo0}{zWzSzz=pnjd* zOAy@`^)6@siW3jz{-K!9;)!X8DK(?hxy7|lksZ}L?|u%8=M?m%^@JMQz8KKI-1x=| z$XFyP`B!#bbP|88CTl?et-Q-e^kQ4oE>MM%uind zzy@K{WA3y0Bf@+VU1yt1OyXACoaQhQHbv7Wk)15}rwc4u_|_s)P@gHK+eP9oy#wC3 zk}f+BR|qe$6dqar_;B)@V5nDI=>-#wrqoNg5s2+actaf5*M(1w3bXwWSc++h8ma@z zLtUs|BEFCb|DJF|Nb*crzzsf4l6@0qr!30N?qOX}zmq=P(~O+t`wRm6#x%7#={Z>i`c2Sa#oY+3ukIB{g>4abhUUWg)DsoaY|D8l?Xv zsFR5e^YP%IfD?FI{xPNK7UuJCP6Q^!Evkk++Rd`|jta5)CKo<_pcCl{-$gdS z54QPTWCQ$Qo8Lt?zz??hU1S6NV4L4XHoy(u2$B!Vd?T7LKoWe7`=9p()iT6P`v`tKCRc4ZZTm46U2eF$S(aSzOQ1+l>$Zgx8w;x_FLq+v1;SnwyEI4Z7&l>X z+hUqu@R;WF{CLaj516TEqt7@eG=!^}&gfpPjKXO&$$7{2-{3fD%_6+7;sZ66&G59H z?gNU3B!AG+3y$ki3tzq8ynXBM$1XcnRrlytt9EL%1V+75_o?5;ql81=IuZIa242p9 zo9>E9V7R|Dmd9lTZ<%HF%zXFDTKp<}yjMo*MjQ78j`wiJD>!EZQo6+NG;AUP-d%|b z4|XPus^6uxpS1jJJJ)O`G-Jx?^V&4F^5glv#K|ORdY>-phU;68fil_MWyXrdvwr5R zD+xlcc&_!0ujz#AE=rZPphF4I*B6(7&*_0Y!`(iW*|)GKN@Eb|@xxc-dFOH$H{AXR z>7k~hDki3>hh6+SmnGWm^lb(t%Y|PT8_ri7#4gI^Uk;yddYZT)gtg5sM27}7Xztma zqHb_QxAf?VjQ!`N)Y6J89Ar~dTVENF%wa)iyP{yH^vVoc&S<_4YS1WoOW3{50T_2` z%;vd-i{2@yyF$6WT>1tsy>PXy*d3*2J7cpU9OC)l2?B{!A8jGLnj~T#5s>vKsyoIa zTTe?76W=w*2!V?%l#xD>D%n^HBHz+2@KJ3^NjG)>TsCtwE&e;AKx$6(c4*Gb2%GK8 zur`rVm6!eGGA6Pvxjy)PRIC&SkR0KC$Jj0Ii@30OAa%G*`w;upKLm`2ovXoVLd>xq zyDP2P8@5-qxJTr5j~?i zM!7FCuMkryf6P3$R*Ggd)A8Pk@gqR3g$(RBiqszpUa3ASO|-sJO| zzc!lJ|0?j`J#h7u(jL0{LZ%^QscsBbAYG^F7VtTZ{&4q9!sU*PAw zny4+pP;tt2_cH8jeJaCd7*;S8AyZ=-!z!T8Fk-HoexQp#$!3KN81hg6WBI0KF+(u2 z#_0ShwvkgY8uVN2!RXTs%*uGn2$S(va`Yi(%R}2T->iknM%Ii4Uuy=mddqyv>=e+rtJ6gIv0f%C(k2yl5DvdxWAf_zvC1n$tt$8{|7WKLr+E~ z{>b*%|MKtIa^x96H+g3AkSz!OQ73GLA*YlXUM^+k9aa`#2p`i=g_6AYurP#-V61u^ z=BDH6o)@YN51`6St~|`hLiY;oqkDNZ>5bGsq;b{QToxkh+Wi?&xPQ~bzxm>MekT5) z&F~Plq2#VD+@PH>L_v??<*;Yq#O;M4E(aJMTYDbH#?Wdu54m6v2(!r%zwYu*BL*;Q zE3{%Ww9T0A!Km*0-`m9D2AJnjHk$&32|EbH`SV?E+H>F=C=iI?vo|m(%;$LE|Avwg zSYe2a85xZgq(6)2<_u;|PS`xf)4zgmvo9-kHt+8-3YVuX diff --git a/project/graphql/translator_testing_model.graphql b/project/graphql/translator_testing_model.graphql index 3d43928..a3de7a3 100644 --- a/project/graphql/translator_testing_model.graphql +++ b/project/graphql/translator_testing_model.graphql @@ -52,7 +52,6 @@ type AcceptanceTestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] - testEnv: TestEnvEnum tags: [String] testAssets: [AcceptanceTestAsset]! } @@ -133,7 +132,6 @@ type PathfinderTestCase testAssets: [PathfinderTestAsset]! testCaseObjective: TestObjectiveEnum components: [ComponentEnum] - testEnv: TestEnvEnum } type PerformanceTestCase @@ -154,7 +152,6 @@ type PerformanceTestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] - testEnv: TestEnvEnum tags: [String] testRunTime: Integer! spawnRate: Float! @@ -208,7 +205,6 @@ type QuantitativeTestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] - testEnv: TestEnvEnum tags: [String] } @@ -270,7 +266,6 @@ type TestCase inputCategory: ConceptCategory outputCategory: ConceptCategory components: [ComponentEnum] - testEnv: TestEnvEnum tags: [String] } diff --git a/project/jsonld/translator_testing_model.context.jsonld b/project/jsonld/translator_testing_model.context.jsonld index 2a7ebd7..8388f5e 100644 --- a/project/jsonld/translator_testing_model.context.jsonld +++ b/project/jsonld/translator_testing_model.context.jsonld @@ -1,7 +1,7 @@ { "comments": { "description": "Auto generated by LinkML jsonld context generator", - "generation_date": "2026-10-29T02:03:21", + "generation_date": "2026-10-29T16:38:18", "source": "translator_testing_model.yaml" }, "@context": { diff --git a/project/jsonld/translator_testing_model.jsonld b/project/jsonld/translator_testing_model.jsonld index 4c40041..76e18e4 100644 --- a/project/jsonld/translator_testing_model.jsonld +++ b/project/jsonld/translator_testing_model.jsonld @@ -1779,13 +1779,11 @@ { "name": "test_env", "definition_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_env", - "description": "Deployment environment within which the associated TestSuite is run.", + "description": "Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test.", "from_schema": "https://w3id.org/TranslatorSRI/TranslatorTestingModel", "slot_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/test_env", "owner": "TestRunSession", "domain_of": [ - "TestCase", - "PathfinderTestCase", "TestRunSession" ], "range": "TestEnvEnum", @@ -2672,7 +2670,6 @@ "input_category", "output_category", "components", - "test_env", "TestCase_tags" ], "slot_usage": {}, @@ -2692,8 +2689,7 @@ "test_runner_settings", "PathfinderTestCase_test_assets", "test_case_objective", - "components", - "test_env" + "components" ], "slot_usage": {}, "class_uri": "https://w3id.org/TranslatorSRI/TranslatorTestingModel/PathfinderTestCase", @@ -2722,7 +2718,6 @@ "input_category", "output_category", "components", - "test_env", "TestCase_tags", "AcceptanceTestCase_test_assets" ], @@ -2754,7 +2749,6 @@ "input_category", "output_category", "components", - "test_env", "TestCase_tags" ], "slot_usage": {}, @@ -2784,7 +2778,6 @@ "input_category", "output_category", "components", - "test_env", "TestCase_tags", "performanceTestCase__test_run_time", "performanceTestCase__spawn_rate", @@ -3041,9 +3034,9 @@ ], "metamodel_version": "1.7.0", "source_file": "translator_testing_model.yaml", - "source_file_date": "2026-10-29T02:02:06", - "source_file_size": 32414, - "generation_date": "2026-10-29T02:03:21", + "source_file_date": "2026-10-29T16:38:03", + "source_file_size": 32498, + "generation_date": "2026-10-29T16:38:18", "@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 5555dd9..575c41f 100644 --- a/project/jsonschema/translator_testing_model.schema.json +++ b/project/jsonschema/translator_testing_model.schema.json @@ -217,10 +217,6 @@ "$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": { @@ -690,10 +686,6 @@ "$ref": "#/$defs/TestObjectiveEnum", "description": "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" }, - "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": { @@ -789,10 +781,6 @@ "$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_run_time": { "type": "integer" }, @@ -897,10 +885,6 @@ "$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_run_time": { "type": "integer" }, @@ -1110,10 +1094,6 @@ "$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": { @@ -1405,10 +1385,6 @@ "$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": { @@ -1611,10 +1587,6 @@ "$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": { @@ -2017,7 +1989,7 @@ }, "test_env": { "$ref": "#/$defs/TestEnvEnum", - "description": "Deployment environment within which the associated TestSuite is run." + "description": "Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test." }, "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\").", diff --git a/project/owl/translator_testing_model.owl.ttl b/project/owl/translator_testing_model.owl.ttl index 09f5ed1..607a188 100644 --- a/project/owl/translator_testing_model.owl.ttl +++ b/project/owl/translator_testing_model.owl.ttl @@ -79,58 +79,58 @@ ttm:TestRunSession a owl:Class, linkml:ClassDefinition ; rdfs:label "TestRunSession" ; rdfs:subClassOf [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_name ], + owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:TestCaseResult ; owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:timestamp ], + owl:onProperty ttm:test_env ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_results ], [ a owl:Restriction ; owl:allValuesFrom linkml:Datetime ; owl:onProperty ttm:timestamp ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEntity ; + owl:onProperty ttm:test_entities ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:components ], + owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], + owl:minCardinality 0 ; + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:test_run_parameters ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:timestamp ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCaseResult ; - owl:onProperty ttm:test_case_results ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:test_env ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEntity ; + owl:minCardinality 0 ; owl:onProperty ttm:test_entities ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:ComponentEnum ; + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_entities ], + owl:onProperty ttm:components ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_runner_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_run_parameters ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:ComponentEnum ; - owl:onProperty ttm:components ], + owl:onProperty ttm:timestamp ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:test_run_parameters ], 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)." ; @@ -204,95 +204,95 @@ 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:notes ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; - owl:onProperty ttm:top_level ], - [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:direction ], + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:scientific_question ], + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:allValuesFrom ttm:DirectionEnum ; owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; - owl:allValuesFrom ttm:ExpectedResultsEnum ; - owl:onProperty ttm:expected_result ], + owl:minCardinality 0 ; + owl:onProperty ttm:direction ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Date ; - owl:onProperty ttm:must_pass_date ], + owl:allValuesFrom ttm:NodeEnum ; + owl:onProperty ttm:query_node ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_result ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:notes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:notes ], + owl:onProperty ttm:query_node ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:string_entry ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:query_node ], + owl:onProperty ttm:scientific_question ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:top_level ], + owl:onProperty ttm:expected_result ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:answer_informal_concept ], + owl:onProperty ttm:direction ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:direction ], - [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:expected_result ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:string_entry ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:top_level ], + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:scientific_question ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:string_entry ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestEnvEnum ; + owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:answer_informal_concept ], + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:notes ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:must_pass_environment ], + owl:maxCardinality 1 ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:must_pass_environment ], + owl:onProperty ttm:must_pass_date ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Integer ; + owl:onProperty ttm:top_level ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:must_pass_environment ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:ExpectedResultsEnum ; + owl:onProperty ttm:expected_result ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Date ; owl:onProperty ttm:must_pass_date ], [ a owl:Restriction ; - owl:allValuesFrom ttm:NodeEnum ; - owl:onProperty ttm:query_node ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:answer_informal_concept ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_node ], + owl:onProperty ttm:notes ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:string_entry ], ttm:TestAsset ; skos:definition "Model derived from Jenn's test asset design and Shervin's runner JSON here as an example." ; skos:inScheme . @@ -301,107 +301,107 @@ ttm:PathfinderTestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderTestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:source_input_name ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:allValuesFrom ttm:PathfinderPathNode ; + owl:onProperty ttm:path_nodes ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:predicate_id ], - [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:minimum_required_path_nodes ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:source_input_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:target_input_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:allValuesFrom ttm:Qualifier ; owl:onProperty ttm:qualifiers ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:source_input_category ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:target_input_name ], [ a owl:Restriction ; owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:source_input_category ], + owl:onProperty ttm:target_input_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:source_input_id ], + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:target_input_category ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:source_input_id ], + owl:minCardinality 1 ; + owl:onProperty ttm:minimum_required_path_nodes ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:source_input_category ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:source_input_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:target_input_category ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:predicate_type ; + owl:onProperty ttm:predicate_id ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:source_input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:source_input_category ], + owl:onProperty ttm:minimum_required_path_nodes ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:source_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:source_input_category ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:target_input_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:target_input_name ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:target_input_category ], + owl:maxCardinality 1 ; + owl:onProperty ttm:source_input_category ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:target_input_id ], [ a owl:Restriction ; - owl:allValuesFrom ttm:PathfinderPathNode ; + owl:minCardinality 1 ; owl:onProperty ttm:path_nodes ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:target_input_name ], + owl:onProperty ttm:target_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:source_input_name ], + owl:onProperty ttm:target_input_id ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; + owl:onProperty ttm:expected_output ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:target_input_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:source_input_name ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:path_nodes ], + owl:maxCardinality 1 ; + owl:onProperty ttm:source_input_id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], + owl:maxCardinality 1 ; + owl:onProperty ttm:target_input_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 . @@ -415,20 +415,20 @@ ttm:TestOutput a owl:Class, linkml:ClassDefinition ; rdfs:label "TestOutput" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:pks ], - [ 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: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:allValuesFrom ttm:TestResultPKSet ; + owl:onProperty ttm:pks ], ttm:TestEntity ; skos:definition "The output of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -507,20 +507,20 @@ ttm:PathfinderPathNode a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderPathNode" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:name ], + [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:ids ], + owl:onProperty ttm:name ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:ids ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:name ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:name ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:name ] ; + owl:onProperty ttm:ids ] ; skos:definition "Represents an output path node" ; skos:inScheme . @@ -550,32 +550,32 @@ ttm:TestCaseResult a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCaseResult" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_result ], + owl:allValuesFrom ttm:TestCase ; + owl:onProperty ttm:test_case ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_id ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ttm:test_case ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + 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 ], + owl:onProperty ttm:test_suite_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_suite_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestCaseResultEnum ; owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestCase ; - owl:onProperty ttm:test_case ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_result ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_suite_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_suite_id ], + owl:onProperty ttm:test_case ], ttm:TestEntity ; skos:definition "The outcome of a TestRunner run of one specific TestCase." ; skos:inScheme . @@ -602,7 +602,7 @@ ttm:TestEntityParameter a owl:Class, owl:maxCardinality 1 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:value ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; @@ -611,10 +611,10 @@ ttm:TestEntityParameter a owl:Class, owl:minCardinality 0 ; owl:onProperty ttm:parameter ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:value ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:value ] ; skos:definition "A single 'tag = value' pair (where 'value' is a simple string)." ; skos:inScheme . @@ -718,68 +718,68 @@ ttm:TestResultPKSet a owl:Class, linkml:ClassDefinition ; rdfs:label "TestResultPKSet" ; rdfs:subClassOf [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:bte ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:arax ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:aragorn ], + owl:onProperty ttm:unsecret ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:improving ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:arax ], + owl:minCardinality 0 ; + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:arax ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:aragorn ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:improving ], + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:parent_pk ], + owl:onProperty ttm:bte ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:merged_pk ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:bte ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:minCardinality 0 ; owl:onProperty ttm:improving ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:parent_pk ], - [ a owl:Restriction ; - owl:minCardinality 0 ; owl:onProperty ttm:unsecret ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:bte ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:merged_pk ], + owl:onProperty ttm:aragorn ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:arax ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:unsecret ], + owl:onProperty ttm:parent_pk ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:aragorn ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:bte ], + owl:onProperty ttm:merged_pk ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:improving ], + 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 . @@ -819,14 +819,11 @@ ttm:TestSuiteSpecification a owl:Class, linkml:ClassDefinition ; 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: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 ], @@ -834,8 +831,11 @@ ttm:TestSuiteSpecification a owl:Class, owl:maxCardinality 1 ; 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:minCardinality 0 ; + owl:onProperty ttm:test_data_file_format ], ttm:TestEntity ; skos:definition "Parameters for a Test Case instances either dynamically generated from some external source of Test Assets." ; skos:inScheme . @@ -1021,35 +1021,26 @@ ttm:PathfinderTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "PathfinderTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:allValuesFrom ttm:TestObjectiveEnum ; owl:onProperty ttm:test_case_objective ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:PathfinderTestAsset ; - owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_env ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 1 ; owl:onProperty ttm:test_assets ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:minCardinality 0 ; + owl:onProperty ttm:components ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_case_objective ], + owl:allValuesFrom ttm:PathfinderTestAsset ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:allValuesFrom ttm:ComponentEnum ; owl:onProperty ttm:components ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:components ], ttm:TestEntity ; skos:inScheme . @@ -1057,26 +1048,26 @@ ttm:PerformanceTestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "PerformanceTestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:Integer ; + owl:maxCardinality 1 ; + owl:onProperty ttm:spawn_rate ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_run_time ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:Float ; owl:onProperty ttm:spawn_rate ], [ a owl:Restriction ; - owl:minCardinality 1 ; + owl:allValuesFrom linkml:Integer ; owl:onProperty ttm:test_run_time ], [ a owl:Restriction ; owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:spawn_rate ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; owl:onProperty ttm:test_run_time ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Float ; + owl:minCardinality 1 ; owl:onProperty ttm:spawn_rate ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestAsset ; owl:onProperty ttm:test_assets ], @@ -1088,41 +1079,41 @@ ttm:TestMetadata a owl:Class, linkml:ClassDefinition ; rdfs:label "TestMetadata" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; 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_source ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_objective ], + owl:maxCardinality 1 ; + 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_annotations ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_annotations ], + owl:onProperty ttm:test_source ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_annotations ], + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_objective ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_objective ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_source ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], + owl:allValuesFrom linkml:String ; + 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 . @@ -1402,6 +1393,13 @@ ttm:test_data_file_locator a owl:ObjectProperty, 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 . +ttm:test_env a owl:ObjectProperty, + linkml:SlotDefinition ; + rdfs:label "test_env" ; + rdfs:range ttm:TestEnvEnum ; + skos:definition "Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test." ; + skos:inScheme . + ttm:test_issue a owl:ObjectProperty, linkml:SlotDefinition ; rdfs:label "test_issue" ; @@ -1499,23 +1497,23 @@ 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:minCardinality 0 ; owl:onProperty ttm:value ], [ 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:minCardinality 0 ; + 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 ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:parameter ], ttm:TestEntityParameter ; skos:inScheme . @@ -1542,173 +1540,173 @@ ttm:TestAsset a owl:Class, linkml:ClassDefinition ; rdfs:label "TestAsset" ; rdfs:subClassOf [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_metadata ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_name ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:output_name ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:test_runner_settings ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:expected_output ], + owl:allValuesFrom ttm:Qualifier ; + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:output_ids ], + owl:allValuesFrom ttm:association_category ; + owl:onProperty ttm:association ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:well_known ], + owl:allValuesFrom ttm:SemanticSeverityEnum ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:input_name ], [ a owl:Restriction ; owl:allValuesFrom ttm:TestMetadata ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_ids ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:association ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; owl:onProperty ttm:input_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:SemanticSeverityEnum ; - owl:onProperty ttm:semantic_severity ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:allValuesFrom linkml:Boolean ; owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:input_id ], + owl:onProperty ttm:output_name ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:output_ids ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Boolean ; - owl:onProperty ttm:well_known ], + owl:minCardinality 0 ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:predicate_name ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestIssueEnum ; - owl:onProperty ttm:test_issue ], + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:id ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:in_v1 ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:allValuesFrom ttm:association_category ; + owl:minCardinality 0 ; + owl:onProperty ttm:semantic_severity ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:input_name ], + [ a owl:Restriction ; + owl:minCardinality 0 ; owl:onProperty ttm:association ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:output_name ], + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:expected_output ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_name ], + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:output_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_reference ], - [ 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:output_category ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Qualifier ; - owl:onProperty ttm:qualifiers ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_name ], + owl:allValuesFrom linkml:Boolean ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:output_name ], [ a owl:Restriction ; - owl:allValuesFrom linkml:Uriorcurie ; - owl:onProperty ttm:input_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:in_v1 ], + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; - owl:allValuesFrom ttm:predicate_type ; - owl:onProperty ttm:predicate_id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:predicate_name ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:well_known ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:semantic_severity ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:expected_output ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:well_known ], + owl:onProperty ttm:output_category ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:id ], + owl:onProperty ttm:in_v1 ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:qualifiers ], + owl:onProperty ttm:predicate_id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:predicate_id ], + owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_settings ], + owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:id ], + owl:maxCardinality 1 ; + owl:onProperty ttm:input_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:onProperty ttm:association ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], + owl:maxCardinality 1 ; + owl:onProperty ttm:semantic_severity ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:test_reference ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestIssueEnum ; owl:onProperty ttm:test_issue ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:expected_output ], + owl:minCardinality 0 ; + owl:onProperty ttm:output_ids ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:association ], + owl:onProperty ttm:test_runner_settings ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:predicate_type ; owl:onProperty ttm:predicate_id ], - [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:predicate_name ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_issue ], + owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_reference ], + owl:onProperty ttm:id ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:Uriorcurie ; + owl:onProperty ttm:input_id ], + [ a owl:Restriction ; + owl:minCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], + owl:onProperty ttm:test_reference ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:semantic_severity ], + owl:minCardinality 0 ; + owl:onProperty ttm:in_v1 ], ttm:TestEntity ; skos:definition "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; skos:inScheme . @@ -1717,37 +1715,37 @@ ttm:TestSuite a owl:Class, linkml:ClassDefinition ; rdfs:label "TestSuite" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom ttm:TestPersonaEnum ; + owl:minCardinality 0 ; owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_persona ], + owl:allValuesFrom [ owl:intersectionOf ( [ owl:unionOf ( ttm:PathfinderTestCase ttm:TestCase ttm:PerformanceTestCase ) ] ttm:TestCase ) ] ; + owl:onProperty ttm:test_cases ], [ a owl:Restriction ; owl:maxCardinality 1 ; + owl:onProperty ttm:test_metadata ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestSuiteSpecification ; owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; - owl:minCardinality 0 ; + owl:maxCardinality 1 ; owl:onProperty ttm:test_persona ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestMetadata ; + owl:minCardinality 0 ; owl:onProperty ttm:test_metadata ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_metadata ], + owl:allValuesFrom ttm:TestPersonaEnum ; + owl:onProperty ttm:test_persona ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_suite_specification ], + owl:onProperty ttm:test_cases ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSuiteSpecification ; + 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 [ owl:intersectionOf ( [ owl:unionOf ( ttm:PathfinderTestCase ttm:TestCase ttm:PerformanceTestCase ) ] ttm:TestCase ) ] ; - owl:onProperty ttm:test_cases ], + owl:onProperty ttm:test_suite_specification ], [ a owl:Restriction ; - owl:minCardinality 0 ; + 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." ; @@ -1904,136 +1902,120 @@ ttm:TestCase a owl:Class, linkml:ClassDefinition ; rdfs:label "TestCase" ; rdfs:subClassOf [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:input_category ], + owl:minCardinality 0 ; + owl:onProperty ttm:preconditions ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_source ], + owl:onProperty ttm:test_case_predicate_id ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom ttm:QueryTypeEnum ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TrapiTemplateEnum ; owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:concept_category ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:output_category ], [ a owl:Restriction ; - owl:allValuesFrom ttm:concept_category ; + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_input_id ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; owl:onProperty ttm:input_category ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + owl:minCardinality 0 ; 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_source ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_id ], + owl:allValuesFrom ttm:TestAsset ; + owl:onProperty ttm:test_assets ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_objective ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:trapi_template ], + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_case_predicate_name ], [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:output_category ], + owl:minCardinality 1 ; + owl:onProperty ttm:test_assets ], + [ a owl:Restriction ; + owl:maxCardinality 1 ; + owl:onProperty ttm:query_type ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:TestSourceEnum ; + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:allValuesFrom linkml:Uriorcurie ; owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:allValuesFrom ttm:concept_category ; - owl:onProperty ttm:output_category ], + owl:onProperty ttm:input_category ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:tags ], + [ a owl:Restriction ; + owl:minCardinality 0 ; + owl:onProperty ttm:query_type ], [ a owl:Restriction ; owl:allValuesFrom ttm:ComponentEnum ; owl:onProperty ttm:components ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:Precondition ; - owl:onProperty ttm:preconditions ], [ a owl:Restriction ; 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:allValuesFrom ttm:TestObjectiveEnum ; - owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_env ], + owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; - owl:minCardinality 1 ; - owl:onProperty ttm:test_assets ], + owl:minCardinality 0 ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestAsset ; - owl:onProperty ttm:test_assets ], + owl:maxCardinality 1 ; + owl:onProperty ttm:test_case_input_id ], [ a owl:Restriction ; owl:minCardinality 0 ; owl:onProperty ttm:qualifiers ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_env ], [ a owl:Restriction ; owl:allValuesFrom ttm:Qualifier ; owl:onProperty ttm:qualifiers ], [ a owl:Restriction ; - owl:allValuesFrom ttm:TestEnvEnum ; - owl:onProperty ttm:test_env ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:input_category ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:test_case_input_id ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:tags ], - [ a owl:Restriction ; - owl:minCardinality 0 ; - owl:onProperty ttm:components ], + owl:allValuesFrom ttm:TestObjectiveEnum ; + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:test_case_predicate_id ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TrapiTemplateEnum ; - owl:onProperty ttm:trapi_template ], - [ a owl:Restriction ; - owl:allValuesFrom ttm:TestSourceEnum ; - owl:onProperty ttm:test_case_source ], - [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_source ], [ a owl:Restriction ; owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:test_case_objective ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:test_case_input_id ], + owl:minCardinality 0 ; + owl:onProperty ttm:output_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_case_predicate_name ], + owl:onProperty ttm:components ], [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:query_type ], + owl:minCardinality 0 ; + owl:onProperty ttm:input_category ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:query_type ], + owl:onProperty ttm:trapi_template ], + [ a owl:Restriction ; + owl:allValuesFrom ttm:Precondition ; + owl:onProperty ttm:preconditions ], ttm:TestEntity ; skos:definition "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; 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." ; - skos:inScheme . - ttm:ExpectedOutputEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -2055,6 +2037,14 @@ ttm:concept_category a owl:Class, linkml:TypeDefinition ; rdfs:subClassOf ttm:category_type . +ttm:TestEnvEnum a owl:Class, + linkml:EnumDefinition ; + owl:unionOf ( ) ; + linkml:permissible_values , + , + , + . + ttm:TrapiTemplateEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; @@ -2068,55 +2058,47 @@ ttm:TestEntity a owl:Class, linkml:ClassDefinition ; rdfs:label "TestEntity" ; rdfs:subClassOf [ a owl:Restriction ; - owl:maxCardinality 1 ; - owl:onProperty ttm:description ], + owl:minCardinality 1 ; + owl:onProperty ttm:id ], [ a owl:Restriction ; owl:maxCardinality 1 ; owl:onProperty ttm:id ], [ a owl:Restriction ; - owl:allValuesFrom linkml:String ; + 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:Uriorcurie ; owl:onProperty ttm:id ], [ 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:allValuesFrom linkml:String ; + owl:maxCardinality 1 ; owl:onProperty ttm:description ], [ a owl:Restriction ; owl:allValuesFrom linkml:String ; owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:test_runner_settings ], + owl:onProperty ttm:tags ], [ a owl:Restriction ; owl:minCardinality 0 ; - owl:onProperty ttm:tags ], + owl:onProperty ttm:name ], [ a owl:Restriction ; - owl:maxCardinality 1 ; + owl:allValuesFrom linkml:String ; owl:onProperty ttm:name ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:description ], [ a owl:Restriction ; owl:minCardinality 0 ; + owl:onProperty ttm:description ], + [ a owl:Restriction ; + owl:allValuesFrom linkml:String ; + owl:onProperty ttm:test_runner_settings ], + [ a owl:Restriction ; + 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 . -ttm:TestEnvEnum a owl:Class, - linkml:EnumDefinition ; - owl:unionOf ( ) ; - linkml:permissible_values , - , - , - . - ttm:TestIssueEnum a owl:Class, linkml:EnumDefinition ; owl:unionOf ( ) ; diff --git a/project/protobuf/translator_testing_model.proto b/project/protobuf/translator_testing_model.proto index 902f303..4d604fd 100644 --- a/project/protobuf/translator_testing_model.proto +++ b/project/protobuf/translator_testing_model.proto @@ -53,7 +53,6 @@ message AcceptanceTestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 - testEnvEnum testEnv = 0 repeated string tags = 0 repeated acceptanceTestAsset testAssets = 0 } @@ -131,7 +130,6 @@ message PathfinderTestCase repeated pathfinderTestAsset testAssets = 0 testObjectiveEnum testCaseObjective = 0 repeated componentEnum components = 0 - testEnvEnum testEnv = 0 } // Represents a performance test case. message PerformanceTestCase @@ -152,7 +150,6 @@ message PerformanceTestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 - testEnvEnum testEnv = 0 repeated string tags = 0 integer testRunTime = 0 float spawnRate = 0 @@ -205,7 +202,6 @@ message QuantitativeTestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 - testEnvEnum testEnv = 0 repeated string tags = 0 } // Test suite for testing Translator components against releases of standards like TRAPI and the Biolink Model. @@ -267,7 +263,6 @@ message TestCase conceptCategory inputCategory = 0 conceptCategory outputCategory = 0 repeated componentEnum components = 0 - testEnvEnum testEnv = 0 repeated string tags = 0 } // The outcome of a TestRunner run of one specific TestCase. diff --git a/project/shacl/translator_testing_model.shacl.ttl b/project/shacl/translator_testing_model.shacl.ttl index c2be02a..6ca8410 100644 --- a/project/shacl/translator_testing_model.shacl.ttl +++ b/project/shacl/translator_testing_model.shacl.ttl @@ -9,99 +9,114 @@ ttm:AcceptanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "See AcceptanceTestAsset above for more details." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:test_env ], + sh: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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 12 ; + sh:path ttm:components ], [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], + sh:order 11 ; + sh:path ttm:output_category ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 17 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 7 ; sh:path ttm:test_case_predicate_id ], - [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:test_case_source ], + 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 14 ; + sh:order 13 ; 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; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:test_case_objective ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], [ sh:description "A 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 18 ; - 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:path schema1:name ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; + sh:order 16 ; sh:path schema1:additionalType ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], [ sh:maxCount 1 ; sh:order 8 ; sh:path ttm:test_case_input_id ], - [ sh: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 "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 12 ; - sh:path ttm:components ], [ sh:class ttm:AcceptanceTestAsset ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in 'test_assets' slot (\"Block List\") collection." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_assets ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:test_case_objective ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:query_type ], + [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_category ], [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ] ; + sh:order 14 ; + sh:path schema1:name ], + [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; + sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:test_case_source ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:description ] ; sh: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:class ttm:TestSuiteSpecification ; + sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], + [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 7 ; sh:path schema1:additionalType ], + [ sh:description "A Test persona describes the user or operational context of a given test." ; + sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ttm:test_persona ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; @@ -113,11 +128,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 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 ; @@ -126,7 +136,17 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; [ sh:description "List of explicitly enumerated Test Cases." ; sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; - sh:path ttm:test_cases ], + sh:path ttm:test_cases ] ; + sh:targetClass ttm:AcceptanceTestSuite . + +ttm:BenchmarkTestSuite a sh:NodeShape ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], [ sh:description "A Test persona describes the user or operational context of a given test." ; sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; sh:maxCount 1 ; @@ -136,16 +156,41 @@ ttm:AcceptanceTestSuite a sh:NodeShape ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; sh:path ttm:test_runner_settings ], + [ sh:description "List of explicitly enumerated Test Cases." ; + sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; + sh:order 2 ; + sh:path ttm:test_cases ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh: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: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:targetClass ttm:AcceptanceTestSuite . + 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:targetClass ttm:BenchmarkTestSuite . -ttm:BenchmarkTestSuite a sh:NodeShape ; +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." ; @@ -153,51 +198,22 @@ ttm:BenchmarkTestSuite a sh:NodeShape ; sh:nodeKind sh:IRI ; sh:order 0 ; sh:path ttm:test_metadata ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:description "List of explicitly enumerated Test Cases." ; - sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; - sh:order 2 ; - sh:path ttm:test_cases ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:name ], + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], [ sh:class ttm:TestSuiteSpecification ; sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 3 ; sh:path ttm:test_suite_specification ], - [ sh:datatype xsd:string ; - sh:description "A human-readable 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 "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:targetClass ttm:BenchmarkTestSuite . - -ttm:OneHopTestSuite a sh:NodeShape ; - sh:closed true ; - sh:description "Test case for testing the integrity of \"One Hop\" knowledge graph retrievals sensa legacy SRI_Testing harness." ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh: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 ], @@ -206,48 +222,36 @@ ttm:OneHopTestSuite a sh:NodeShape ; 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: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: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: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 "List of explicitly enumerated Test Cases." ; sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; sh:path ttm:test_cases ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ] ; + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ] ; sh:targetClass ttm:OneHopTestSuite . ttm:PerformanceTestSuite a sh:NodeShape ; sh:closed true ; sh:description "A small test suite designed to test the performance of the Translator system." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:PerformanceTestCase ; + sh:property [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 4 ; + sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 7 ; + sh:path schema1:additionalType ], + [ sh:class ttm:PerformanceTestCase ; sh:description "List of explicitly enumerated Test Cases." ; sh:nodeKind sh:IRI ; sh:order 2 ; @@ -258,150 +262,151 @@ ttm:PerformanceTestSuite 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: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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], - [ sh:description "A Test persona describes the user or operational context of a given test." ; - sh:in ( "All" "Clinical" "LookUp" "Mechanistic" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_persona ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], [ sh: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: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 description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path schema1:description ] ; sh:targetClass ttm:PerformanceTestSuite . ttm:QuantitativeTestCase a sh:NodeShape ; sh:closed true ; sh:description "Assumed additional model from Shervin's runner JSON here as an example. This schema is not yet complete." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:property [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_category ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 17 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; + sh:order 16 ; + sh:path schema1:additionalType ], + [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; + sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:test_env ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 12 ; - sh:path ttm:components ], + sh:order 5 ; + sh:path ttm:test_case_source ], [ sh:maxCount 1 ; sh:order 11 ; sh:path ttm:output_category ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:description ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - sh:path ttm:test_case_predicate_id ], - [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; - sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:test_case_source ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; - sh:order 14 ; + sh:order 13 ; sh:path schema1:identifier ], - [ 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:maxCount 1 ; - sh:order 15 ; - sh:path schema1:name ], - [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ], [ 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: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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 18 ; - sh:path ttm:test_runner_settings ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path ttm:qualifiers ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 16 ; - sh:path schema1:description ], + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], [ 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 "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path schema1:name ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 12 ; + sh:path ttm:components ], [ sh:description "Type of TestCase query." ; sh:in ( "treats" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:query_type ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_predicate_name ] ; + [ sh:maxCount 1 ; + sh:order 8 ; + sh:path ttm:test_case_input_id ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ] ; 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 "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], - [ sh:description "List of explicitly enumerated Test Cases." ; + sh:property [ sh:description "List of explicitly enumerated Test Cases." ; sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; sh:path ttm:test_cases ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh: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: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:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_metadata ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; @@ -412,223 +417,208 @@ ttm:StandardsComplianceTestSuite a sh:NodeShape ; sh:minCount 1 ; sh:order 4 ; sh:path schema1:identifier ], - [ sh:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; - sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 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 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 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:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; 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:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], + sh:order 19 ; + sh:path schema1:description ], [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:input_id ], + sh:order 7 ; + sh:path ttm:output_category ], [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; sh:order 5 ; sh:path ttm:output_ids ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 14 ; + sh:path ttm:well_known ], [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 20 ; + sh:path schema1:additionalType ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:input_name ], + sh:order 11 ; + sh:path ttm:test_issue ], [ sh:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 16 ; sh:path ttm:test_metadata ], - [ sh: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 "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 13 ; + sh:path ttm:in_v1 ], [ 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:order 6 ; + sh:path ttm:output_name ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 17 ; sh:path schema1:identifier ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:output_name ], - [ 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:in ( "High" "Low" "NotApplicable" ) ; sh:maxCount 1 ; sh:order 12 ; sh:path ttm:semantic_severity ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:predicate_name ], - [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:order 21 ; - sh:path ttm:test_runner_settings ], + [ sh:description "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 "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 18 ; sh:path schema1:name ], - [ 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: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: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 2 ; + sh:path ttm:input_category ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:predicate_id ] ; sh:targetClass ttm:TestEdgeData . ttm:TestOutput a sh:NodeShape ; sh:closed true ; sh:description "The output of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 6 ; - sh:path ttm:test_runner_settings ], - [ sh:description "A unique identifier for a Test Entity" ; + sh: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 "CURIE id of a TestCase registered in the system." ; + sh:maxCount 1 ; + 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 tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 5 ; - sh:path schema1:additionalType ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ], + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 6 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 3 ; sh:path schema1:name ], [ sh:datatype xsd:string ; - sh:description "CURIE id of a TestCase registered in the system." ; + 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 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 "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: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:property [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 10 ; + sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 8 ; sh:path schema1:name ], - [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; - sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 0 ; - sh:path ttm:components ], - [ sh:class ttm:TestEntity ; - sh:description "Different TestRunners could expect specific kinds of TestEntity as an input. These 'test_entities' are one or more instances of TestAsset, TestCase or (preferably?) TestSuite." ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - sh:path ttm:test_entities ], [ sh:class ttm:TestEntityParameter ; sh:description "Different TestRunners could expect additional global test configuration parameters, like the applicable TRAPI version (\"trapi_version\") or Biolink Model versions (\"biolink_version\")." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ttm:test_run_parameters ], - [ sh:datatype xsd:string ; - sh:description "Global system name of a TestRunner." ; + [ sh:datatype xsd:dateTime ; + sh:description "Date time when a given entity was created." ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_runner_name ], + sh:order 6 ; + sh:path ttm:timestamp ], + [ sh:class ttm:TestCaseResult ; + sh:description "One or more instances of TestCaseResult." ; + sh:nodeKind sh:IRI ; + sh:order 5 ; + sh:path ttm:test_case_results ], [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 10 ; - sh:path schema1:additionalType ], - [ sh:description "Deployment environment within which the associated TestSuite is run." ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 11 ; + sh:path ttm:test_runner_settings ], + [ sh:description "Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test." ; sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:test_env ], - [ 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:description "A unique identifier for a Test Entity" ; + [ sh:datatype xsd:string ; + sh:description "Global system name of a TestRunner." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 7 ; - sh:path schema1:identifier ], + sh: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:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 11 ; - sh:path ttm:test_runner_settings ] ; + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 7 ; + sh:path schema1:identifier ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 0 ; + sh:path ttm:components ], + [ sh:class ttm:TestEntity ; + sh:description "Different TestRunners could expect specific kinds of TestEntity as an input. These 'test_entities' are one or more instances of TestAsset, TestCase or (preferably?) TestSuite." ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path ttm:test_entities ] ; sh:targetClass ttm:TestRunSession . ttm:TestSuite a sh:NodeShape ; @@ -641,150 +631,167 @@ 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 tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; sh:order 6 ; sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], [ sh: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:description "List of explicitly enumerated Test Cases." ; sh:or ( [ sh:class ttm:PathfinderTestCase ] [ sh:class ttm:TestCase ] [ sh:class ttm:PerformanceTestCase ] ) ; sh:order 2 ; sh:path ttm:test_cases ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:class ttm:TestSuiteSpecification ; + sh:description "Declarative specification of a Test Suite of Test Cases whose generation is deferred, (i.e. within a Test Runner) or whose creation is achieved by stream processing of an external data source." ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ] ; + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_suite_specification ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 8 ; + sh:path ttm:test_runner_settings ], + [ sh: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: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:maxCount 1 ; - sh:order 16 ; - sh:path ttm:output_name ], + sh:property [ sh:maxCount 1 ; + sh:order 10 ; + sh:path ttm:input_id ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 20 ; - sh:path ttm:expected_output ], + sh:order 14 ; + sh:path ttm:predicate_name ], [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; sh:maxCount 1 ; sh:order 18 ; sh:path ttm:association ], - [ sh:datatype xsd:string ; + [ sh:datatype xsd:date ; + sh:description "The date by which this test must pass" ; sh:maxCount 1 ; - sh:order 14 ; - sh:path ttm:predicate_name ], - [ sh:description "The expected result of the query" ; - sh:in ( "include_good" "exclude_bad" ) ; + sh:order 0 ; + sh:path ttm:must_pass_date ], + [ sh:datatype xsd:integer ; + sh:description "The answer must return in these many results" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:expected_result ], + sh:order 7 ; + sh:path ttm:top_level ], [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; sh:order 25 ; sh:path ttm:test_reference ], - [ sh:datatype xsd: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 "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:order 31 ; - sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; - sh:description "The object of the core triple to be tested" ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:string_entry ], + sh:order 20 ; + sh:path ttm:expected_output ], [ sh: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 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:BlankNodeOrIRI ; - sh:order 19 ; - sh:path ttm:qualifiers ], + sh:order 5 ; + sh:path ttm:answer_informal_concept ], [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:predicate_id ], - [ sh:datatype xsd:string ; - sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:scientific_question ], + sh:order 17 ; + sh:path ttm:output_category ], [ 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 "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:string ; + sh:maxCount 1 ; + sh:order 16 ; + sh:path ttm:output_name ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 31 ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 29 ; + sh:path schema1:description ], [ sh:maxCount 1 ; - sh:order 17 ; - sh:path ttm:output_category ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 12 ; + sh:path ttm:input_category ], + [ sh:datatype xsd:boolean ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 27 ; - sh:path schema1:identifier ], + sh:order 23 ; + sh:path ttm:in_v1 ], [ 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:class ttm:TestMetadata ; - sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + [ sh:description "The deployment environment within which this test must pass." ; + sh:in ( "dev" "ci" "test" "prod" ) ; sh:maxCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 26 ; - sh:path ttm:test_metadata ], + sh:order 1 ; + sh:path ttm:must_pass_environment ], + [ sh:description "The expected result of the query" ; + sh:in ( "include_good" "exclude_bad" ) ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:expected_result ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 27 ; + sh:path schema1:identifier ], + [ sh:description "The direction of the expected query result triple" ; + sh:in ( "increased" "decreased" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ttm:direction ], + [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; + sh:order 15 ; + sh:path ttm:output_ids ], [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; sh:order 30 ; sh:path schema1:additionalType ], [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_id ], - [ sh:description "The direction of the expected query result triple" ; - sh:in ( "increased" "decreased" ) ; + sh:order 13 ; + sh:path ttm:predicate_id ], + [ sh:datatype xsd:string ; + sh:description "The object of the core triple to be tested" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:direction ], - [ sh:datatype xsd:boolean ; + sh:order 3 ; + sh:path ttm:string_entry ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 23 ; - sh:path ttm:in_v1 ], + sh:order 28 ; + sh:path schema1:name ], + [ sh:class ttm:TestMetadata ; + sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 26 ; + sh:path ttm:test_metadata ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 24 ; @@ -794,36 +801,19 @@ ttm:AcceptanceTestAsset a sh:NodeShape ; 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 29 ; - sh:path schema1:description ], - [ sh:datatype xsd:string ; - sh:description "An answer that is returned from the test case, note: this must be combined with the expected_result to form a complete answer. It might make sense to couple these in their own object instead of strictly sticking to the flat schema introduced by the spreadsheet here: https://docs.google.com/spreadsheets/d/1yj7zIchFeVl1OHqL_kE_pqvzNLmGml_FLbHDs-8Yvig/edit#gid=0" ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:answer_informal_concept ], - [ sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:input_category ], - [ 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 "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; - sh:order 15 ; - sh:path ttm:output_ids ], + sh:order 11 ; + sh:path ttm:input_name ], [ sh:datatype xsd:string ; - sh:description "The notes of the query" ; - sh:maxCount 1 ; - sh:order 9 ; - sh:path ttm:notes ], - [ sh:description "The deployment environment within which this test must pass." ; - sh:in ( "dev" "ci" "test" "prod" ) ; + sh:description "The full human-readable scientific question a SME would ask, which is encoded into the test asset." ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:must_pass_environment ] ; + sh:order 2 ; + sh:path ttm:scientific_question ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 19 ; + sh:path ttm:qualifiers ] ; sh:targetClass ttm:AcceptanceTestAsset . ttm:PathfinderPathNode a sh:NodeShape ; @@ -844,47 +834,30 @@ ttm:PathfinderTestAsset a sh:NodeShape ; sh:closed true ; sh:description "Represents a Test Asset, which is a single specific instance of TestCase-agnostic semantic parameters representing the specification of a Translator test target with inputs and (expected) outputs." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:source_input_category ], + sh:property [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 8 ; + sh:path ttm:qualifiers ], [ 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 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 15 ; - sh:path schema1:additionalType ], + sh:order 4 ; + sh:path ttm:target_input_name ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 7 ; sh:path ttm:predicate_name ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 8 ; - sh:path ttm:qualifiers ], - [ sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:target_input_id ], [ sh:maxCount 1 ; sh:order 6 ; sh:path ttm:predicate_id ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 12 ; + sh:path schema1:identifier ], [ sh:maxCount 1 ; sh:order 5 ; sh:path ttm:target_input_category ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:expected_output ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 16 ; - sh:path ttm:test_runner_settings ], - [ sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:source_input_id ], [ sh:class ttm:PathfinderPathNode ; sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -895,10 +868,14 @@ ttm:PathfinderTestAsset a sh:NodeShape ; sh:maxCount 1 ; sh:order 13 ; sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 16 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:source_input_name ], + sh:order 11 ; + sh:path ttm:expected_output ], [ sh:datatype xsd:integer ; sh:description "The number of nodes required in a path to pass this test." ; sh:maxCount 1 ; @@ -907,85 +884,98 @@ ttm:PathfinderTestAsset a sh:NodeShape ; sh:path ttm:minimum_required_path_nodes ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:target_input_name ], - [ sh:description "A unique identifier for a Test Entity" ; + sh:order 1 ; + sh:path ttm:source_input_name ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:source_input_id ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 15 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 12 ; - sh:path schema1:identifier ] ; + sh:order 14 ; + sh:path schema1:description ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:source_input_category ], + [ sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:target_input_id ] ; sh:targetClass ttm:PathfinderTestAsset . ttm:TestCaseResult a sh:NodeShape ; sh:closed true ; sh:description "The outcome of a TestRunner run of one specific TestCase." ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Encoded result of a single test run of a given test case" ; - sh:in ( "PASSED" "FAILED" "SKIPPED" ) ; + sh:property [ 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 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:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path schema1:description ], + sh:order 4 ; + sh:path schema1:name ], [ sh:class ttm:TestCase ; sh:description "Slot referencing a single TestCase." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 1 ; sh:path ttm:test_case ], - [ sh:description "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 ( "PASSED" "FAILED" "SKIPPED" ) ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_suite_id ], + sh:order 2 ; + sh:path ttm:test_case_result ], + [ 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 "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 "A human-readable name for a Test Entity" ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:name ] ; + 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: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 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:closed false ; + sh:description "Abstract global 'identification' class shared as a parent with all major model classes within the data model for Translator testing." ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 4 ; + sh:path ttm:test_runner_settings ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; sh:order 1 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 4 ; - sh:path ttm:test_runner_settings ], [ sh: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 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 ; @@ -993,56 +983,56 @@ ttm:TestResultPKSet a sh:NodeShape ; sh:description "Primary keys for a given ARA result set from a SmokeTest result for a given TestCase." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path ttm:unsecret ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:aragorn ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:bte ], - [ 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 3 ; - sh:path ttm:arax ], + sh:order 9 ; + sh:path schema1:description ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:merged_pk ], [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; - sh:order 9 ; - sh:path schema1:description ], + sh:order 0 ; + sh:path ttm:parent_pk ], [ sh:datatype xsd:string ; sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; sh:order 10 ; sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:parent_pk ], + sh:order 3 ; + sh:path ttm:arax ], [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:improving ], + sh:order 5 ; + sh:path ttm:bte ], [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 7 ; sh:path schema1:identifier ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 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:path schema1:name ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:improving ], + [ 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:targetClass ttm:TestResultPKSet . ttm:TestEntityParameter a sh:NodeShape ; @@ -1065,95 +1055,95 @@ 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 4 ; - sh:path ttm:predicate_name ], - [ sh:in ( "High" "Low" "NotApplicable" ) ; - sh:maxCount 1 ; - sh:order 12 ; - sh:path ttm:semantic_severity ], - [ sh:datatype xsd:string ; - sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; - sh:order 21 ; - sh:path ttm:test_runner_settings ], - [ sh:description "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 1 ; - sh:path ttm:input_name ], - [ sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:input_category ], - [ sh:maxCount 1 ; + sh:property [ sh:maxCount 1 ; sh:order 7 ; sh:path ttm:output_category ], - [ 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: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:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:test_issue ], + sh:minCount 1 ; + sh:order 17 ; + sh:path schema1:identifier ], [ sh:class ttm:Qualifier ; sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 9 ; sh:path ttm:qualifiers ], - [ sh:datatype xsd:string ; - sh: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 10 ; sh:path ttm:expected_output ], - [ sh:datatype xsd:boolean ; - sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:in_v1 ], [ sh:datatype xsd:string ; - sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 18 ; - sh:path schema1:name ], + sh:order 1 ; + sh:path ttm:input_name ], [ sh:datatype xsd:boolean ; sh:maxCount 1 ; sh:order 14 ; sh:path ttm:well_known ], + [ sh:datatype xsd:string ; + sh:description "One or more 'tags' slot values (inherited from TestEntity) should generally be defined to specify TestAsset membership in a \"Block List\" collection" ; + sh:order 20 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh: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: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:class ttm:TestMetadata ; sh:description "Test metadata describes the external provenance, cross-references and objectives for a given test." ; sh:maxCount 1 ; sh:nodeKind sh:IRI ; sh:order 16 ; sh:path ttm:test_metadata ], + [ sh:in ( "High" "Low" "NotApplicable" ) ; + sh:maxCount 1 ; + sh:order 12 ; + sh:path ttm:semantic_severity ], + [ sh:maxCount 1 ; + sh:order 0 ; + sh:path ttm:input_id ], [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; sh:order 15 ; sh:path ttm:test_reference ], + [ sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:input_category ], [ sh:maxCount 1 ; sh:order 3 ; sh:path ttm:predicate_id ], [ sh:description "One or more CURIEs that identify the expected output. Any one of them may stand for the expected answer, eg the same chemical under its ChEBI and PubChem identifiers when node normalization no longer merges them into one concept." ; sh:order 5 ; sh:path ttm:output_ids ], - [ sh:description "Specific Biolink Model association 'category' which applies to the test asset defined knowledge statement" ; + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 8 ; - sh:path ttm:association ] ; + sh:order 18 ; + sh:path schema1:name ], + [ sh:datatype xsd:string ; + sh:description "Scalar settings for the TestRunner, e.g. \"inferred\"" ; + sh:order 21 ; + sh:path ttm:test_runner_settings ], + [ sh:in ( "causes not treats" "TMKP" "category too generic" "contraindications" "chemical roles" "test_issue" ) ; + sh:maxCount 1 ; + sh:order 11 ; + sh:path ttm:test_issue ], + [ sh:datatype xsd:boolean ; + sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:in_v1 ] ; sh:targetClass ttm:TestAsset . ttm:Precondition a sh:NodeShape ; @@ -1165,15 +1155,6 @@ ttm:Precondition a sh:NodeShape ; 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:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 3 ; - sh:path schema1:additionalType ], [ sh:datatype xsd:string ; sh:description "A human-readable description for a Test Entity" ; sh:maxCount 1 ; @@ -1182,155 +1163,154 @@ ttm:Precondition a sh:NodeShape ; [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 4 ; - sh:path ttm:test_runner_settings ] ; + sh:path ttm:test_runner_settings ], + [ sh:datatype xsd:string ; + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 3 ; + sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:description "A human-readable name for a Test Entity" ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path schema1:name ] ; sh:targetClass ttm:Precondition . ttm:PathfinderTestCase a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ttm:PathfinderTestAsset ; - sh:description "List of explicitly enumerated Test Assets. The class attributes of TestAsset would be included in the TestCase versus being referred to by the identifier (curie) of the TestAsset. That is, this would be a list of objects (in JSONSchema serialization) versus a list of strings (where each string is an identifier pointing to another class)." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:order 0 ; - sh:path ttm:test_assets ], + sh:property [ 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:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 7 ; + sh:path ttm:test_runner_settings ], [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; sh:order 1 ; sh:path ttm:test_case_objective ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 3 ; + sh:path schema1:identifier ], + [ sh:class ttm:PathfinderTestAsset ; + sh:description "List of explicitly enumerated Test Assets. The class attributes of TestAsset would be included in the TestCase versus being referred to by the identifier (curie) of the TestAsset. That is, this would be a list of objects (in JSONSchema serialization) versus a list of strings (where each string is an identifier pointing to another class)." ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:order 0 ; + sh:path ttm:test_assets ], [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 8 ; - sh:path ttm:test_runner_settings ], + sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; + sh:order 6 ; + 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:order 5 ; 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 "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; sh:order 2 ; - sh:path ttm:components ], - [ 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 "Deployment environment within which the associated TestSuite is run." ; - sh:in ( "dev" "ci" "test" "prod" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:test_env ] ; + sh:path ttm:components ] ; sh:targetClass ttm:PathfinderTestCase . ttm:PerformanceTestCase a sh:NodeShape ; sh:closed true ; sh:description "Represents a performance test case." ; 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 7 ; - 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:property [ sh:description "A unique identifier for a Test Entity" ; sh:maxCount 1 ; - sh:order 5 ; - sh:path ttm:trapi_template ], + sh:minCount 1 ; + sh:order 15 ; + 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 19 ; + sh:order 18 ; sh:path schema1:additionalType ], - [ 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:datatype xsd:integer ; sh:maxCount 1 ; - sh:order 18 ; - 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 3 ; - sh:path ttm:test_assets ], + sh:order 0 ; + sh:path ttm:test_run_time ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 20 ; + sh:order 19 ; sh:path ttm:test_runner_settings ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 4 ; - 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 ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; - sh:order 14 ; - sh:path ttm:components ], - [ sh:description "A unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 16 ; - sh:path schema1:identifier ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 8 ; sh:path ttm:test_case_predicate_name ], + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; + sh:maxCount 1 ; + sh:order 6 ; + sh:path ttm:test_case_objective ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 11 ; + sh:path ttm:qualifiers ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 17 ; + sh:path schema1:description ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 4 ; + sh:path ttm:preconditions ], [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:minCount 1 ; sh:order 1 ; sh:path ttm:spawn_rate ], + [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; + sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; + sh:order 14 ; + sh:path ttm:components ], [ sh:maxCount 1 ; - sh:order 13 ; - sh:path ttm:output_category ], + sh:order 10 ; + sh:path ttm:test_case_input_id ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 17 ; + sh:order 16 ; sh:path schema1:name ], - [ 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 9 ; - sh:path ttm:test_case_predicate_id ], - [ sh:datatype xsd:integer ; + sh:order 7 ; + sh:path ttm:test_case_source ], + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; + sh:order 2 ; + sh:path ttm:query_type ], + [ sh: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 0 ; - sh:path ttm:test_run_time ], - [ 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 ttm:test_env ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; - sh:maxCount 1 ; - sh:order 6 ; - sh:path ttm:test_case_objective ], + sh:nodeKind sh:IRI ; + sh:order 3 ; + sh:path ttm:test_assets ], [ sh:maxCount 1 ; sh:order 12 ; sh:path ttm:input_category ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; + [ sh:datatype xsd:string ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:query_type ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 11 ; - sh:path ttm:qualifiers ] ; + sh:order 9 ; + sh:path ttm:test_case_predicate_id ], + [ sh:maxCount 1 ; + sh:order 13 ; + sh:path ttm:output_category ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 5 ; + sh:path ttm:trapi_template ] ; sh:targetClass ttm:PerformanceTestCase . ttm:TestCase a sh:NodeShape ; @@ -1338,56 +1318,47 @@ ttm:TestCase a sh:NodeShape ; sh:description "Represents a single enumerated instance of Test Case, derived from a given collection of one or more TestAsset instances (the value of the 'test_assets' slot) which define the 'inputs' and 'outputs' of the TestCase, used to probe a particular test condition." ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:maxCount 1 ; - sh:order 11 ; - sh:path ttm:output_category ], - [ sh:datatype xsd:string ; - sh:maxCount 1 ; - sh:order 7 ; - 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 13 ; - sh:path ttm:test_env ], - [ sh:description "Type of TestCase query." ; - sh:in ( "treats" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:query_type ], - [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; - sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ttm:trapi_template ], + sh:order 10 ; + sh:path ttm:input_category ], [ sh:description "The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX." ; sh:in ( infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ) ; sh:order 12 ; sh:path ttm:components ], - [ sh:class ttm:Precondition ; - sh:nodeKind sh:IRI ; - sh:order 2 ; - sh:path ttm:preconditions ], [ sh:datatype xsd:string ; sh:description "One or more 'tags' slot values (slot inherited from TestEntity) should generally be defined as filters to specify TestAsset membership in a \"Block List\" collection." ; - sh:order 17 ; + sh:order 16 ; sh:path schema1:additionalType ], + [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:order 7 ; + sh:path ttm:test_case_predicate_id ], [ sh:datatype xsd:string ; sh:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 15 ; + sh:order 14 ; sh:path schema1:name ], - [ sh:datatype xsd:string ; - sh:description "A human-readable description for a Test Entity" ; + [ sh:description "Type of TestCase query." ; + sh:in ( "treats" ) ; sh:maxCount 1 ; - sh:order 16 ; - sh:path schema1:description ], + sh:order 0 ; + sh:path ttm:query_type ], [ sh:maxCount 1 ; sh:order 8 ; sh:path ttm:test_case_input_id ], - [ sh:datatype xsd:string ; - sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; - sh:order 18 ; - sh:path ttm:test_runner_settings ], + [ sh:description "A unique identifier for a Test Entity" ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:order 13 ; + sh:path schema1:identifier ], + [ sh:class ttm:Precondition ; + sh:nodeKind sh:IRI ; + sh:order 2 ; + sh:path ttm:preconditions ], + [ sh:class ttm:Qualifier ; + sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 9 ; + sh:path ttm:qualifiers ], [ 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 ; @@ -1399,28 +1370,32 @@ ttm:TestCase a sh:NodeShape ; sh:maxCount 1 ; sh:order 4 ; sh:path ttm:test_case_objective ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 15 ; + sh:path schema1:description ], + [ sh:description "A template for a query, which can be used to generate a query for a test case. note: the current enumerated values for this slot come from the Benchmarks repo config/benchmarks.json \"templates\" collection and refer to the \"name\" field of each template. Templates themselves are currently stored in the config/[source_name]/templates directory." ; + sh:in ( "ameliorates" "treats" "three_hop" "drug_treats_rare_disease" "drug-to-gene" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ttm:trapi_template ], [ sh:datatype xsd:string ; sh:maxCount 1 ; sh:order 6 ; sh:path ttm:test_case_predicate_name ], - [ sh:class ttm:Qualifier ; - sh:description "Optional qualifiers which constrain to the test asset defined knowledge statement. Note that this field records such qualifier slots and values as tag=value pairs, where the tag is the Biolink Model qualifier slot named and the value is an acceptable (Biolink Model enum?) value of the said qualifier slot." ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 9 ; - sh:path ttm:qualifiers ], [ sh: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 unique identifier for a Test Entity" ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 14 ; - sh:path schema1:identifier ], [ sh:maxCount 1 ; - sh:order 10 ; - sh:path ttm:input_category ] ; + sh:order 11 ; + sh:path ttm:output_category ], + [ sh:datatype xsd:string ; + sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; + sh:order 17 ; + sh:path ttm:test_runner_settings ] ; sh:targetClass ttm:TestCase . ttm:TestSuiteSpecification a sh:NodeShape ; @@ -1433,10 +1408,10 @@ ttm:TestSuiteSpecification a sh:NodeShape ; 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 name for a Test Entity" ; sh:maxCount 1 ; - sh:order 4 ; - sh:path schema1:description ], + 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 ; @@ -1445,6 +1420,11 @@ ttm:TestSuiteSpecification a sh:NodeShape ; sh:maxCount 1 ; sh:order 0 ; sh:path ttm:test_data_file_locator ], + [ sh:datatype xsd:string ; + sh:description "A human-readable description for a Test Entity" ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path schema1:description ], [ sh:description "File format of test entity data (e.g. TSV, YAML or JSON)" ; sh:in ( "TSV" "YAML" "JSON" ) ; sh:maxCount 1 ; @@ -1453,12 +1433,7 @@ ttm:TestSuiteSpecification a sh:NodeShape ; [ 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:path schema1:additionalType ] ; sh:targetClass ttm:TestSuiteSpecification . ttm:Qualifier a sh:NodeShape ; @@ -1480,47 +1455,47 @@ 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 "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:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ttm:test_source ], - [ sh:datatype xsd:string ; - sh:description "A human-readable tags for categorical memberships of a TestEntity (preferably a URI or CURIE). Typically used to aggregate instances of TestEntity into formally typed or ad hoc lists." ; - sh:order 7 ; - sh:path schema1:additionalType ], + sh:order 1 ; + sh:path ttm:test_reference ], + [ sh: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:description "A human-readable name for a Test Entity" ; sh:maxCount 1 ; - sh:order 6 ; - sh:path schema1:description ], + sh:order 5 ; + sh:path schema1:name ], [ sh:datatype xsd:string ; sh:description "Scalar parameters for the TestRunner processing a given TestEntity." ; sh:order 8 ; sh:path ttm:test_runner_settings ], - [ sh:description "A unique identifier for a Test Entity" ; + [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; + sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; sh:maxCount 1 ; - sh:minCount 1 ; - sh:order 4 ; - sh:path schema1:identifier ], - [ sh:description "Document URL where original test source particulars are registered (e.g. Github repo)" ; + sh:order 2 ; + sh:path ttm:test_objective ], + [ sh:description "Provenance of a specific set of test assets, cases and/or suites. Or, the person who cares about this, know about this. We would like this to be an ORCID eventually, but currently it is just a string." ; + sh:in ( "SME" "SMURF" "GitHubUserFeedback" "TACT" "BenchMark" "TranslatorTeam" "TestDataLocation" ) ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ttm:test_reference ], + 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:class ttm:TestEntityParameter ; sh:description "Metadata annotation." ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ttm:test_annotations ], - [ sh:description "Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)" ; - sh:in ( "AcceptanceTest" "BenchmarkTest" "QuantitativeTest" "StandardsValidationTest" "OneHopTest" ) ; - sh:maxCount 1 ; - sh:order 2 ; - sh:path ttm:test_objective ], [ sh: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:targetClass ttm:TestMetadata . diff --git a/project/shex/translator_testing_model.shex b/project/shex/translator_testing_model.shex index 3dc12b7..18033a4 100644 --- a/project/shex/translator_testing_model.shex +++ b/project/shex/translator_testing_model.shex @@ -149,11 +149,7 @@ linkml:Sparqlpath xsd:string [ infores:ncats-ars infores:arax infores:explanatory-agent infores:improving-agent infores:aragorn infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict - infores:knowledge-collaboratory infores:connections-hypothesis ] * ; - [ - - - ] ? + infores:knowledge-collaboratory infores:connections-hypothesis ] * ) ; rdf:type [ ] ) @@ -283,10 +279,6 @@ linkml:Sparqlpath xsd:string infores:biothings-explorer infores:unsecret-agent infores:rtx-kg2 infores:icees-kg infores:cam-kp infores:spoke infores:molepro infores:genetics-data-provider infores:textmining-kp infores:cohd infores:openpredict infores:knowledge-collaboratory infores:connections-hypothesis ] * ; - [ - - - ] ? ; schema1:additionalType @linkml:String * ) ; rdf:type [ ] diff --git a/project/sqlschema/translator_testing_model.sql b/project/sqlschema/translator_testing_model.sql index 966be34..a5d2fc2 100644 --- a/project/sqlschema/translator_testing_model.sql +++ b/project/sqlschema/translator_testing_model.sql @@ -131,7 +131,6 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: --- * Slot: test_env Description: Deployment environment within which the associated TestSuite is run. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -142,7 +141,6 @@ -- * Slot: OneHopTestSuite_id Description: Autocreated FK slot -- # Class: "PathfinderTestCase" Description: "" -- * Slot: test_case_objective Description: Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity) --- * Slot: test_env Description: Deployment environment within which the associated TestSuite is run. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -156,7 +154,6 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: --- * Slot: test_env Description: Deployment environment within which the associated TestSuite is run. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -170,7 +167,6 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: --- * Slot: test_env Description: Deployment environment within which the associated TestSuite is run. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -186,7 +182,6 @@ -- * Slot: test_case_input_id Description: -- * Slot: input_category Description: -- * Slot: output_category Description: --- * Slot: test_env Description: Deployment environment within which the associated TestSuite is run. -- * Slot: id Description: A unique identifier for a Test Entity -- * Slot: name Description: A human-readable name for a Test Entity -- * Slot: description Description: A human-readable description for a Test Entity @@ -248,7 +243,7 @@ -- * Slot: TestRunSession_id Description: Autocreated FK slot -- * Slot: test_case_id Description: Slot referencing a single TestCase. -- # Class: "TestRunSession" Description: "Single run of a TestRunner in a given environment, with a specified set of test_entities (generally, one or more instances of TestSuite)." --- * Slot: test_env Description: Deployment environment within which the associated TestSuite is run. +-- * Slot: test_env Description: Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test. -- * Slot: test_runner_name Description: Global system name of a TestRunner. -- * Slot: timestamp Description: Date time when a given entity was created. -- * Slot: id Description: A unique identifier for a Test Entity @@ -479,7 +474,6 @@ CREATE TABLE "Precondition" ( ); CREATE TABLE "PathfinderTestCase" ( test_case_objective VARCHAR(23), - test_env VARCHAR(4), id TEXT NOT NULL, name TEXT, description TEXT, @@ -495,7 +489,6 @@ CREATE TABLE "AcceptanceTestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, - test_env VARCHAR(4), id TEXT NOT NULL, name TEXT, description TEXT, @@ -511,7 +504,6 @@ CREATE TABLE "QuantitativeTestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, - test_env VARCHAR(4), id TEXT NOT NULL, name TEXT, description TEXT, @@ -881,7 +873,6 @@ CREATE TABLE "TestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, - test_env VARCHAR(4), id TEXT NOT NULL, name TEXT, description TEXT, @@ -909,7 +900,6 @@ CREATE TABLE "PerformanceTestCase" ( test_case_input_id TEXT, input_category TEXT, output_category TEXT, - test_env VARCHAR(4), id TEXT NOT NULL, name TEXT, description TEXT, diff --git a/src/data/examples/Good-TestCase-001.yaml b/src/data/examples/Good-TestCase-001.yaml index 7bb3bdf..191cf5e 100644 --- a/src/data/examples/Good-TestCase-001.yaml +++ b/src/data/examples/Good-TestCase-001.yaml @@ -11,7 +11,6 @@ # TestCase, used to probe a particular test condition. # is_a: TestEntity # slots: -# - test_env # - test_case_type # - query_type # - test_assets diff --git a/src/translator_testing_model/datamodel/pydanticmodel.py b/src/translator_testing_model/datamodel/pydanticmodel.py index 6108dbe..93c50dc 100644 --- a/src/translator_testing_model/datamodel/pydanticmodel.py +++ b/src/translator_testing_model/datamodel/pydanticmodel.py @@ -423,7 +423,6 @@ class TestCase(TestEntity): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, description="""The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX.""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is 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""") @@ -435,7 +434,6 @@ class PathfinderTestCase(TestEntity): test_assets: List[PathfinderTestAsset] = Field(default_factory=list, description="""List of explicitly enumerated Test Assets. The class attributes of TestAsset would be included in the TestCase versus being referred to by the identifier (curie) of the TestAsset. That is, this would be a list of objects (in JSONSchema serialization) versus a list of strings (where each string is an identifier pointing to another class).""") test_case_objective: Optional[TestObjectiveEnum] = Field(None, description="""Testing objective behind specified set of test particulars (e.g. acceptance pass/fail; benchmark; quantitative; standards compliance; graph navigation integrity)""") components: Optional[List[ComponentEnum]] = Field(default_factory=list, description="""The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX.""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is 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""") @@ -460,7 +458,6 @@ class AcceptanceTestCase(TestCase): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, description="""The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX.""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is 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""") @@ -485,7 +482,6 @@ class QuantitativeTestCase(TestCase): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, description="""The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX.""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is 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""") @@ -512,7 +508,6 @@ class PerformanceTestCase(TestCase): input_category: Optional[str] = Field(None) output_category: Optional[str] = Field(None) components: Optional[List[ComponentEnum]] = Field(default_factory=list, description="""The component that this test case is intended to run against. Most often this is the ARS for acceptance tests, but for the Benchmarks repo integration, this can also be individual components of the system like Aragorn, or ARAX.""") - test_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which the associated TestSuite is 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""") @@ -636,7 +631,7 @@ class TestRunSession(TestEntity): 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_env: Optional[TestEnvEnum] = Field(None, description="""Deployment environment within which a TestRunSession ran. Test cases don't carry one: the same suite runs in every environment, and the TestHarness is told which one to test.""") test_runner_name: Optional[str] = Field(None, description="""Global system name of a TestRunner.""") 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.""") diff --git a/src/translator_testing_model/datamodel/translator_testing_model.py b/src/translator_testing_model/datamodel/translator_testing_model.py index 8e21322..9cba5ee 100644 --- a/src/translator_testing_model/datamodel/translator_testing_model.py +++ b/src/translator_testing_model/datamodel/translator_testing_model.py @@ -1,5 +1,5 @@ # Auto generated from translator_testing_model.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-10-29T02:03:22 +# Generation date: 2026-10-29T16:38:20 # Schema: Translator-Testing-Model # # id: https://w3id.org/TranslatorSRI/TranslatorTestingModel @@ -645,7 +645,6 @@ class TestCase(TestEntity): input_category: Optional[Union[str, ConceptCategory]] = None output_category: Optional[Union[str, ConceptCategory]] = None components: Optional[Union[Union[str, "ComponentEnum"], List[Union[str, "ComponentEnum"]]]] = empty_list() - test_env: Optional[Union[str, "TestEnvEnum"]] = None tags: Optional[Union[str, List[str]]] = empty_list() def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): @@ -697,9 +696,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.components = [self.components] if self.components is not None else [] self.components = [v if isinstance(v, ComponentEnum) else ComponentEnum(v) for v in self.components] - if self.test_env is not None and not isinstance(self.test_env, TestEnvEnum): - self.test_env = TestEnvEnum(self.test_env) - 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] @@ -720,7 +716,6 @@ class PathfinderTestCase(TestEntity): test_assets: Union[Dict[Union[str, PathfinderTestAssetId], Union[dict, PathfinderTestAsset]], List[Union[dict, PathfinderTestAsset]]] = empty_dict() test_case_objective: Optional[Union[str, "TestObjectiveEnum"]] = None components: Optional[Union[Union[str, "ComponentEnum"], List[Union[str, "ComponentEnum"]]]] = empty_list() - test_env: Optional[Union[str, "TestEnvEnum"]] = None def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): if self._is_empty(self.id): @@ -739,9 +734,6 @@ def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]): self.components = [self.components] if self.components is not None else [] self.components = [v if isinstance(v, ComponentEnum) else ComponentEnum(v) for v in self.components] - if self.test_env is not None and not isinstance(self.test_env, TestEnvEnum): - self.test_env = TestEnvEnum(self.test_env) - super().__post_init__(**kwargs) diff --git a/src/translator_testing_model/schema/translator_testing_model.yaml b/src/translator_testing_model/schema/translator_testing_model.yaml index f82fc47..ef525e3 100644 --- a/src/translator_testing_model/schema/translator_testing_model.yaml +++ b/src/translator_testing_model/schema/translator_testing_model.yaml @@ -231,7 +231,6 @@ classes: - input_category - output_category - components - - test_env slot_usage: test_assets: aliases: ["Block List"] @@ -250,7 +249,6 @@ classes: - test_assets - test_case_objective - components - - test_env slot_usage: test_assets: range: PathfinderTestAsset @@ -743,7 +741,9 @@ slots: test_env: description: >- - Deployment environment within which the associated TestSuite is run. + Deployment environment within which a TestRunSession ran. Test cases + don't carry one: the same suite runs in every environment, and the + TestHarness is told which one to test. range: TestEnvEnum query_type: diff --git a/src/translator_testing_model/scripts/generate_suite_for_demo.py b/src/translator_testing_model/scripts/generate_suite_for_demo.py index b3dd964..d483038 100644 --- a/src/translator_testing_model/scripts/generate_suite_for_demo.py +++ b/src/translator_testing_model/scripts/generate_suite_for_demo.py @@ -180,7 +180,6 @@ def create_test_cases_from_test_assets(test_assets, test_case_model): test_case = test_case_model(id=test_case_id, name="what " + key[1] + " " + key[0], description=descriptions, - test_env="ci", components=["ars"], test_case_objective="AcceptanceTest", test_assets=assets, @@ -285,7 +284,6 @@ def create_benchmark_test_case(subset: bool) -> TestCase or list[TestCase]: name=k, description=k, test_assets=[test_asset], - test_env="ci", components=["ars"], test_case_objective="QuantitativeTest", test_runner_settings=["limit_queries"] diff --git a/tests/test_test_env.py b/tests/test_test_env.py new file mode 100644 index 0000000..061d7d9 --- /dev/null +++ b/tests/test_test_env.py @@ -0,0 +1,27 @@ +"""Test that test cases no longer carry an environment.""" +import unittest + +from pydantic import ValidationError + +from src.translator_testing_model.datamodel.pydanticmodel import ( + PathfinderTestCase, + TestCase, + TestRunSession, +) + + +class TestNoTestEnv(unittest.TestCase): + """The same suite runs in every environment; the TestHarness picks one.""" + + def test_test_case_rejects_test_env(self): + with self.assertRaises(ValidationError): + TestCase.model_validate({"id": "TestCase_1", "test_env": "ci"}) + + def test_pathfinder_test_case_rejects_test_env(self): + with self.assertRaises(ValidationError): + PathfinderTestCase.model_validate({"id": "TestCase_1", "test_env": "ci"}) + + def test_test_run_session_keeps_test_env(self): + """A record of a run still says where it ran.""" + session = TestRunSession(id="session_1", test_env="prod") + assert session.test_env == "prod" From 2282964a28bbab48b38faee5957a888a817f8ea7 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:13:44 +0000 Subject: [PATCH 3/4] Pin Poetry 1.8.5 in CI snok/install-poetry installs the latest Poetry, and since 2.3.0 that needs Python 3.10+, so the Python 3.9 test job (and the docs deploy, also on 3.9) failed before running anything. poetry.lock was written by Poetry 1.8, and 1.8.5 is the last 1.x release. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d --- .github/workflows/deploy-docs.yaml | 3 +++ .github/workflows/main.yaml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml index 174363d..843b810 100644 --- a/.github/workflows/deploy-docs.yaml +++ b/.github/workflows/deploy-docs.yaml @@ -20,6 +20,9 @@ jobs: - name: Install Poetry. uses: snok/install-poetry@v1.3 + with: + # Poetry 2.3+ needs Python 3.10+, and poetry.lock is from 1.8 + version: 1.8.5 - name: Install dependencies. run: poetry install -E docs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 24342f9..733f81d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -26,6 +26,9 @@ jobs: - name: Install Poetry uses: snok/install-poetry@v1.3 + with: + # Poetry 2.3+ needs Python 3.10+, and poetry.lock is from 1.8 + version: 1.8.5 - name: Install dependencies run: poetry install --no-interaction --no-root From 48308bf6347e26285ce4605f5ef41af4974eba0b Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 29 Oct 2026 17:18:07 +0000 Subject: [PATCH 4/4] Drop Python 3.9 Poetry 2.3+ needs Python 3.10+, so rather than pinning an old Poetry in CI, require Python 3.10. CI tests 3.10 to 3.12 (all the package supports) with the latest Poetry again, and the docs and release workflows run on 3.10. poetry.lock is relocked with Poetry 2.5.1: every package keeps its version; importlib-metadata and zipp, needed only on 3.9, drop out. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01S2yuREtzxTuRqVGp8Q8a6d --- .github/workflows/deploy-docs.yaml | 5 +- .github/workflows/main.yaml | 5 +- .github/workflows/pypi-publish.yaml | 2 +- poetry.lock | 270 +++++++++++++++++++++------- pyproject.toml | 2 +- 5 files changed, 205 insertions(+), 79 deletions(-) diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml index 843b810..37072b2 100644 --- a/.github/workflows/deploy-docs.yaml +++ b/.github/workflows/deploy-docs.yaml @@ -16,13 +16,10 @@ jobs: - name: Set up Python 3. uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: "3.10" - name: Install Poetry. uses: snok/install-poetry@v1.3 - with: - # Poetry 2.3+ needs Python 3.10+, and poetry.lock is from 1.8 - version: 1.8.5 - name: Install dependencies. run: poetry install -E docs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 733f81d..d0c4c8a 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10"] + python-version: ["3.10", "3.11", "3.12"] steps: @@ -26,9 +26,6 @@ jobs: - name: Install Poetry uses: snok/install-poetry@v1.3 - with: - # Poetry 2.3+ needs Python 3.10+, and poetry.lock is from 1.8 - version: 1.8.5 - name: Install dependencies run: poetry install --no-interaction --no-root diff --git a/.github/workflows/pypi-publish.yaml b/.github/workflows/pypi-publish.yaml index b1f21a3..268dd9d 100644 --- a/.github/workflows/pypi-publish.yaml +++ b/.github/workflows/pypi-publish.yaml @@ -16,7 +16,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: "3.10" - name: Install Poetry run: | diff --git a/poetry.lock b/poetry.lock index e87957d..09c7abb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.5.1 and should not be changed by hand. [[package]] name = "annotated-types" @@ -6,6 +6,7 @@ version = "0.6.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, @@ -17,9 +18,11 @@ version = "4.9.3" description = "ANTLR 4.9.3 runtime for Python 3.7" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "arrow" @@ -27,10 +30,12 @@ version = "1.3.0" description = "Better dates & times for Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] python-dateutil = ">=2.7.0" @@ -46,6 +51,7 @@ version = "23.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, @@ -56,8 +62,8 @@ cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6) ; platform_python_implementation == \"CPython\" and python_version >= \"3.8\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.8\""] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "beautifulsoup4" @@ -65,6 +71,7 @@ version = "4.12.3" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" +groups = ["dev"] files = [ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, @@ -86,6 +93,7 @@ version = "0.11.1" description = "Integrated registry of biological databases and nomenclatures" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "bioregistry-0.11.1-py3-none-any.whl", hash = "sha256:11a1cd66da5755ffb7bcd705666f6446f9dcc14ba03e583d21d6de2cdcb9ca1b"}, {file = "bioregistry-0.11.1.tar.gz", hash = "sha256:6f6a6048db0d70d5a7644333040645d4bd5484e97ed0eab9a256e6eec446d39b"}, @@ -116,6 +124,7 @@ version = "1.4.0" description = "Biolink Model Toolkit: A Python API for working with the Biolink Model" optional = false python-versions = "<4.0,>=3.9" +groups = ["main"] files = [ {file = "bmt-1.4.0-py3-none-any.whl", hash = "sha256:ca81f3e91b3a0312bed01692a93d343d828e556ae14fc00fb016f5a3f38f44c3"}, {file = "bmt-1.4.0.tar.gz", hash = "sha256:26a831eda3d64405d849f49ee579b44412e3e6b9c2e6587e2240a7605b28fc55"}, @@ -132,6 +141,7 @@ version = "5.3.3" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, @@ -143,6 +153,7 @@ version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, @@ -154,9 +165,11 @@ version = "0.2.1" description = "rdflib collections flattening graph" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "CFGraph-0.2.1.tar.gz", hash = "sha256:b57fe7044a10b8ff65aa3a8a8ddc7d4cd77bf511b42e57289cd52cbc29f8fe74"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] rdflib = ">=0.4.2" @@ -167,10 +180,12 @@ version = "5.2.0" description = "Universal encoding detector for Python 3" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "charset-normalizer" @@ -178,6 +193,7 @@ version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["main", "dev"] files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, @@ -277,6 +293,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -291,6 +308,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] +markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -302,6 +321,7 @@ version = "0.7.9" description = "Idiomatic conversion between URIs and compact URIs (CURIEs)." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "curies-0.7.9-py3-none-any.whl", hash = "sha256:e4c5beb91642376953c94db0ee2fb5d2b011c3b16749516436114ba61442f260"}, {file = "curies-0.7.9.tar.gz", hash = "sha256:3b63c5fea7b0e967629a3a384b1a8c59b56c503487c1dcbacddeab59e25db4d8"}, @@ -326,6 +346,7 @@ version = "1.3.46" description = "Diff and patch tables" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "daff-1.3.46.tar.gz", hash = "sha256:22d0da9fd6a3275b54c926a9c97b180f9258aad65113ea18f3fec52cbadcd818"}, ] @@ -336,6 +357,7 @@ version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main", "dev"] files = [ {file = "Deprecated-1.2.14-py2.py3-none-any.whl", hash = "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c"}, {file = "Deprecated-1.2.14.tar.gz", hash = "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3"}, @@ -353,6 +375,7 @@ version = "2.1.0" description = "A library to handle automated deprecations" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"}, {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"}, @@ -367,6 +390,7 @@ version = "0.12.4" description = "EditorConfig File Locator and Interpreter for Python" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "EditorConfig-0.12.4.tar.gz", hash = "sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80"}, ] @@ -377,10 +401,12 @@ version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "exceptiongroup" @@ -388,6 +414,8 @@ version = "1.2.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, @@ -402,10 +430,12 @@ version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +groups = ["main", "dev"] files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "ghp-import" @@ -413,6 +443,7 @@ version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -430,6 +461,7 @@ version = "3.0.0" description = "Python bindings to the Google search engine." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "google-3.0.0-py2.py3-none-any.whl", hash = "sha256:889cf695f84e4ae2c55fbc0cfdaf4c1e729417fa52ab1db0485202ba173e4935"}, {file = "google-3.0.0.tar.gz", hash = "sha256:143530122ee5130509ad5e989f0512f7cb218b2d4eddbafbad40fd10e8d8ccbe"}, @@ -444,22 +476,23 @@ version = "2.18.0" description = "Google API client core library" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "google-api-core-2.18.0.tar.gz", hash = "sha256:62d97417bfc674d6cef251e5c4d639a9655e00c45528c4364fbfebb478ce72a9"}, {file = "google_api_core-2.18.0-py3-none-any.whl", hash = "sha256:5a63aa102e0049abe85b5b88cb9409234c1f70afcda21ce1e40b285b9629c1d6"}, ] [package.dependencies] -google-auth = ">=2.14.1,<3.0.dev0" -googleapis-common-protos = ">=1.56.2,<2.0.dev0" -proto-plus = ">=1.22.3,<2.0.0dev" -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" -requests = ">=2.18.0,<3.0.0.dev0" +google-auth = ">=2.14.1,<3.0" +googleapis-common-protos = ">=1.56.2,<2.0" +proto-plus = ">=1.22.3,<2.0.0" +protobuf = ">=3.19.5,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0" +requests = ">=2.18.0,<3.0.0" [package.extras] -grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0.dev0)", "grpcio-status (>=1.49.1,<2.0.dev0)"] -grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] -grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] +grpc = ["grpcio (>=1.33.2,<2.0)", "grpcio (>=1.49.1,<2.0) ; python_version >= \"3.11\"", "grpcio-status (>=1.33.2,<2.0)", "grpcio-status (>=1.49.1,<2.0) ; python_version >= \"3.11\""] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0)"] [[package]] name = "google-api-python-client" @@ -467,16 +500,17 @@ version = "2.127.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "google-api-python-client-2.127.0.tar.gz", hash = "sha256:bbb51b0fbccdf40e536c26341e372d7800f09afebb53103bbcc94e08f14b523b"}, {file = "google_api_python_client-2.127.0-py2.py3-none-any.whl", hash = "sha256:d01c70c7840ec37888aa02b1aea5d9baba4c1701e268d1a0251640afd56e5e90"}, ] [package.dependencies] -google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0.dev0" -google-auth = ">=1.32.0,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0.dev0" +google-api-core = ">=1.31.5,<2.0 || >=2.3.dev0,!=2.3.0,<3.0.0" +google-auth = ">=1.32.0,!=2.24.0,!=2.25.0,<3.0.0" google-auth-httplib2 = ">=0.2.0,<1.0.0" -httplib2 = ">=0.19.0,<1.dev0" +httplib2 = ">=0.19.0,<1" uritemplate = ">=3.0.1,<5" [[package]] @@ -485,6 +519,7 @@ version = "2.29.0" description = "Google Authentication Library" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "google-auth-2.29.0.tar.gz", hash = "sha256:672dff332d073227550ffc7457868ac4218d6c500b155fe6cc17d2b13602c360"}, {file = "google_auth-2.29.0-py2.py3-none-any.whl", hash = "sha256:d452ad095688cd52bae0ad6fafe027f6a6d6f560e810fec20914e17a09526415"}, @@ -496,11 +531,11 @@ pyasn1-modules = ">=0.2.1" rsa = ">=3.1.4,<5" [package.extras] -aiohttp = ["aiohttp (>=3.6.2,<4.0.0.dev0)", "requests (>=2.20.0,<3.0.0.dev0)"] +aiohttp = ["aiohttp (>=3.6.2,<4.0.0)", "requests (>=2.20.0,<3.0.0)"] enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] -requests = ["requests (>=2.20.0,<3.0.0.dev0)"] +requests = ["requests (>=2.20.0,<3.0.0)"] [[package]] name = "google-auth-httplib2" @@ -508,6 +543,7 @@ version = "0.2.0" description = "Google Authentication Library: httplib2 transport" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, @@ -523,6 +559,7 @@ version = "1.2.0" description = "Google Authentication Library" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "google-auth-oauthlib-1.2.0.tar.gz", hash = "sha256:292d2d3783349f2b0734a0a0207b1e1e322ac193c2c09d8f7c613fb7cc501ea8"}, {file = "google_auth_oauthlib-1.2.0-py2.py3-none-any.whl", hash = "sha256:297c1ce4cb13a99b5834c74a1fe03252e1e499716718b190f56bcb9c4abc4faf"}, @@ -541,16 +578,17 @@ version = "1.63.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "googleapis-common-protos-1.63.0.tar.gz", hash = "sha256:17ad01b11d5f1d0171c06d3ba5c04c54474e883b66b949722b4938ee2694ef4e"}, {file = "googleapis_common_protos-1.63.0-py2.py3-none-any.whl", hash = "sha256:ae45f75702f7c08b541f750854a678bd8f534a1a6bace6afe975f1d0a82d6632"}, ] [package.dependencies] -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" +protobuf = ">=3.19.5,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0" [package.extras] -grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] +grpc = ["grpcio (>=1.44.0,<2.0.0)"] [[package]] name = "graphviz" @@ -558,10 +596,12 @@ version = "0.20.3" description = "Simple Python interface for Graphviz" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "graphviz-0.20.3-py3-none-any.whl", hash = "sha256:81f848f2904515d8cd359cc611faba817598d2feaac4027b266aa3eda7b3dde5"}, {file = "graphviz-0.20.3.zip", hash = "sha256:09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"}, ] +markers = {main = "extra == \"docs\""} [package.extras] dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] @@ -574,6 +614,7 @@ version = "3.0.3" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, @@ -634,6 +675,7 @@ files = [ {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, ] +markers = {main = "extra == \"docs\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")", dev = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} [package.extras] docs = ["Sphinx", "furo"] @@ -645,6 +687,7 @@ version = "6.1.0" description = "Google Spreadsheets Python API" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "gspread-6.1.0-py3-none-any.whl", hash = "sha256:67aa3335cfcbb2625e41b53129433ba779f2890244a4c532624362ce5e022342"}, {file = "gspread-6.1.0.tar.gz", hash = "sha256:576b72b628b251d2ee41e02b982d3c714d511d2a5aa3a88e587ed9efc4d6e752"}, @@ -661,6 +704,7 @@ version = "1.1.2" description = "Complete Google Sheets formatting support for gspread worksheets" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "gspread-formatting-1.1.2.tar.gz", hash = "sha256:4d954d8c283880c4189f5684652b114c3889ffa4b442f339b80e2371782cb4c0"}, {file = "gspread_formatting-1.1.2-py2.py3-none-any.whl", hash = "sha256:e5d14477f18ec2f08db0a00d22470d1c621d53b0633412c4873d86712c9a7bca"}, @@ -675,6 +719,7 @@ version = "0.9.1" description = "Honey Badger reader - a generic file/url/string open and read tool" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "hbreader-0.9.1-py3-none-any.whl", hash = "sha256:9a6e76c9d1afc1b977374a5dc430a1ebb0ea0488205546d4678d6e31cc5f6801"}, {file = "hbreader-0.9.1.tar.gz", hash = "sha256:d2c132f8ba6276d794c66224c3297cec25c8079d0a4cf019c061611e0a3b94fa"}, @@ -686,13 +731,14 @@ version = "0.22.0" description = "A comprehensive HTTP client library." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc"}, {file = "httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"}, ] [package.dependencies] -pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} +pyparsing = {version = ">=2.4.2,!=3.0.0,!=3.0.1,!=3.0.2,!=3.0.3,<4", markers = "python_version > \"3.0\""} [[package]] name = "idna" @@ -700,36 +746,19 @@ version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["main", "dev"] files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] -[[package]] -name = "importlib-metadata" -version = "7.1.0" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] - [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -741,6 +770,7 @@ version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"}, {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"}, @@ -755,10 +785,12 @@ version = "20.11.0" description = "Operations with ISO 8601 durations" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] arrow = ">=0.15.0" @@ -769,10 +801,12 @@ version = "3.1.3" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] MarkupSafe = ">=2.0" @@ -786,6 +820,7 @@ version = "1.15.1" description = "JavaScript unobfuscator and beautifier." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "jsbeautifier-1.15.1.tar.gz", hash = "sha256:ebd733b560704c602d744eafc839db60a1ee9326e30a2a80c4adb8718adc1b24"}, ] @@ -800,6 +835,7 @@ version = "0.1.9" description = "Python library for denormalizing nested dicts or json objects to tables and back" optional = false python-versions = ">=3.7.0" +groups = ["main", "dev"] files = [ {file = "json_flattener-0.1.9-py3-none-any.whl", hash = "sha256:6b027746f08bf37a75270f30c6690c7149d5f704d8af1740c346a3a1236bc941"}, {file = "json_flattener-0.1.9.tar.gz", hash = "sha256:84cf8523045ffb124301a602602201665fcb003a171ece87e6f46ed02f7f0c15"}, @@ -815,10 +851,12 @@ version = "1.3.1" description = "JSON as python objects" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "jsonasobj-1.3.1-py3-none-any.whl", hash = "sha256:b9e329dc1ceaae7cf5d5b214684a0b100e0dad0be6d5bbabac281ec35ddeca65"}, {file = "jsonasobj-1.3.1.tar.gz", hash = "sha256:d52e0544a54a08f6ea3f77fa3387271e3648655e0eace2f21e825c26370e44a2"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "jsonasobj2" @@ -826,6 +864,7 @@ version = "1.0.4" description = "JSON as python objects - version 2" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "jsonasobj2-1.0.4-py3-none-any.whl", hash = "sha256:12e86f86324d54fcf60632db94ea74488d5314e3da554c994fe1e2c6f29acb79"}, {file = "jsonasobj2-1.0.4.tar.gz", hash = "sha256:f50b1668ef478004aa487b2d2d094c304e5cb6b79337809f4a1f2975cc7fbb4e"}, @@ -840,10 +879,12 @@ version = "1.33" description = "Apply JSON-Patches (RFC 6902)" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +groups = ["main", "dev"] files = [ {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] jsonpointer = ">=1.9" @@ -854,10 +895,12 @@ version = "1.6.1" description = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming." optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "jsonpath-ng-1.6.1.tar.gz", hash = "sha256:086c37ba4917304850bd837aeab806670224d3f038fe2833ff593a672ef0a5fa"}, {file = "jsonpath_ng-1.6.1-py3-none-any.whl", hash = "sha256:8f22cd8273d7772eea9aaa84d922e0841aa36fdb8a2c6b7f6c3791a16a9bc0be"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] ply = "*" @@ -868,10 +911,12 @@ version = "2.4" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +groups = ["main", "dev"] files = [ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "jsonschema" @@ -879,6 +924,7 @@ version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, @@ -890,7 +936,7 @@ fqdn = {version = "*", optional = true, markers = "extra == \"format\""} idna = {version = "*", optional = true, markers = "extra == \"format\""} isoduration = {version = "*", optional = true, markers = "extra == \"format\""} jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format\""} -jsonschema-specifications = ">=2023.03.6" +jsonschema-specifications = ">=2023.3.6" referencing = ">=0.28.4" rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format\""} rfc3987 = {version = "*", optional = true, markers = "extra == \"format\""} @@ -908,6 +954,7 @@ version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, @@ -922,10 +969,12 @@ version = "1.7.8" description = "Linked Open Data Modeling Language" optional = false python-versions = "<4.0.0,>=3.8.1" +groups = ["main", "dev"] files = [ {file = "linkml-1.7.8-py3-none-any.whl", hash = "sha256:4b8ebe33b422517b08ca01802dc2899ac133c502a71d811c58fa6f4263130709"}, {file = "linkml-1.7.8.tar.gz", hash = "sha256:af48ee1ad6751c8d20de2832dbeefe225da9be5f39a7f8ea7821a691cf7c0148"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] antlr4-python3-runtime = ">=4.9.0,<4.10" @@ -964,10 +1013,12 @@ version = "0.1.0" description = "LinkML Data Operations API" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "linkml_dataops-0.1.0-py3-none-any.whl", hash = "sha256:193cf7f659e5f07946d2c2761896910d5f7151d91282543b1363801f68307f4c"}, {file = "linkml_dataops-0.1.0.tar.gz", hash = "sha256:4550eab65e78b70dc3b9c651724a94ac2b1d1edb2fbe576465f1d6951a54ed04"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] jinja2 = "*" @@ -982,6 +1033,7 @@ version = "1.7.5" description = "Runtime environment for LinkML, the Linked open data modeling language" optional = false python-versions = "<4.0,>=3.8" +groups = ["main", "dev"] files = [ {file = "linkml_runtime-1.7.5-py3-none-any.whl", hash = "sha256:c58000c7c68fa97b7d76c50421a85a64e25f07eec5bcac464bc00c4cd79007a6"}, {file = "linkml_runtime-1.7.5.tar.gz", hash = "sha256:b31197a5398359441ae1ed43470c54377a1d08db961366dda670300dddcd71d7"}, @@ -993,7 +1045,7 @@ curies = ">=0.5.4" deprecated = "*" hbreader = "*" json-flattener = ">=0.1.9" -jsonasobj2 = ">=1.0.4,<2.dev0" +jsonasobj2 = ">=1.0.4,<2" jsonschema = ">=3.2.0" prefixcommons = ">=0.1.12" prefixmaps = ">=0.1.4" @@ -1008,14 +1060,12 @@ version = "3.6" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, ] -[package.dependencies] -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} - [package.extras] docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] @@ -1026,6 +1076,7 @@ version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, @@ -1088,6 +1139,7 @@ files = [ {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "mergedeep" @@ -1095,6 +1147,7 @@ version = "1.3.4" description = "A deep merge function for 🐍." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -1106,6 +1159,7 @@ version = "1.6.0" description = "Project documentation with Markdown." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"}, {file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"}, @@ -1115,7 +1169,6 @@ files = [ click = ">=7.0" colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} jinja2 = ">=2.11.1" markdown = ">=3.3.6" markupsafe = ">=2.0.1" @@ -1129,7 +1182,7 @@ watchdog = ">=2.0" [package.extras] i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform_system == \"Windows\"", "ghp-import (==1.0)", "importlib-metadata (==4.4) ; python_version < \"3.10\"", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] [[package]] name = "mkdocs-get-deps" @@ -1137,13 +1190,13 @@ version = "0.2.0" description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, ] [package.dependencies] -importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} mergedeep = ">=1.3.4" platformdirs = ">=2.2.0" pyyaml = ">=5.1" @@ -1154,6 +1207,7 @@ version = "8.5.11" description = "Documentation that simply works" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "mkdocs_material-8.5.11-py3-none-any.whl", hash = "sha256:c907b4b052240a5778074a30a78f31a1f8ff82d7012356dc26898b97559f082e"}, {file = "mkdocs_material-8.5.11.tar.gz", hash = "sha256:b0ea0513fd8cab323e8a825d6692ea07fa83e917bb5db042e523afecc7064ab7"}, @@ -1174,6 +1228,7 @@ version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, @@ -1185,6 +1240,7 @@ version = "0.6.0" description = "A MkDocs plugin for including mermaid graphs in markdown sources" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mkdocs-mermaid2-plugin-0.6.0.tar.gz", hash = "sha256:99cca6db7c6b4a954a701dcb6b507191bc32a7b0b47eacf2885c1bacf77d1af1"}, {file = "mkdocs_mermaid2_plugin-0.6.0-py3-none-any.whl", hash = "sha256:ffbe8a7daa7ed718cb800c44c5ce4c0ff413caebf7b8b63d9c4a998dfd78a64d"}, @@ -1206,6 +1262,7 @@ version = "0.1.2" description = "More click." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "more_click-0.1.2-py3-none-any.whl", hash = "sha256:f6387af37ef7e7423bd94b72a81a53c79c5086a3bfe5cc035da534ff0c2a0a9e"}, {file = "more_click-0.1.2.tar.gz", hash = "sha256:085da66d5a9b823c5d912a888dca1fa0c8b3a14ed1b21ea9c8a1b814857a3981"}, @@ -1223,6 +1280,7 @@ version = "1.26.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, @@ -1268,6 +1326,7 @@ version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, @@ -1284,6 +1343,7 @@ version = "0.3.3" description = "COGS Operates Google Sheets" optional = false python-versions = ">=3.6, <4" +groups = ["dev"] files = [ {file = "ontodev-cogs-0.3.3.tar.gz", hash = "sha256:04cf448eda59e0645c6626453f7617a6b2be3129c8586c4d4a515ad031f61a18"}, {file = "ontodev_cogs-0.3.3-py3-none-any.whl", hash = "sha256:b3299b7884891d00e016f9cb0329a1a0dc8af4bfba45dce3815f654360b1f333"}, @@ -1305,10 +1365,12 @@ version = "3.1.2" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"}, {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] et-xmlfile = "*" @@ -1319,6 +1381,7 @@ version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, @@ -1330,6 +1393,7 @@ version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, @@ -1403,10 +1467,12 @@ version = "1.20.1" description = "parse() is the opposite of format()" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "parse-1.20.1-py2.py3-none-any.whl", hash = "sha256:76ddd5214255ae711db4c512be636151fbabaa948c6f30115aecc440422ca82c"}, {file = "parse-1.20.1.tar.gz", hash = "sha256:09002ca350ad42e76629995f71f7b518670bcf93548bdde3684fd55d2be51975"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "pathspec" @@ -1414,6 +1480,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -1425,6 +1492,7 @@ version = "4.2.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, @@ -1441,6 +1509,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -1456,10 +1525,12 @@ version = "3.11" description = "Python Lex & Yacc" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"}, {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "prefixcommons" @@ -1467,6 +1538,7 @@ version = "0.1.12" description = "A python API for working with ID prefixes" optional = false python-versions = ">=3.7,<4.0" +groups = ["main", "dev"] files = [ {file = "prefixcommons-0.1.12-py3-none-any.whl", hash = "sha256:16dbc0a1f775e003c724f19a694fcfa3174608f5c8b0e893d494cf8098ac7f8b"}, {file = "prefixcommons-0.1.12.tar.gz", hash = "sha256:22c4e2d37b63487b3ab48f0495b70f14564cb346a15220f23919eb0c1851f69f"}, @@ -1484,6 +1556,7 @@ version = "0.2.4" description = "A python library for retrieving semantic prefix maps" optional = false python-versions = "<4.0,>=3.8" +groups = ["main", "dev"] files = [ {file = "prefixmaps-0.2.4-py3-none-any.whl", hash = "sha256:89bf0e6fb08c276f754f9624c42adf2e87c64ee92a3dde1f7eff01f22d85b512"}, {file = "prefixmaps-0.2.4.tar.gz", hash = "sha256:ae86a1b31189d0516d199756d5808f75f44b39e86546c356cc78c0fe8d2078af"}, @@ -1499,13 +1572,14 @@ version = "1.23.0" description = "Beautiful, Pythonic protocol buffers." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "proto-plus-1.23.0.tar.gz", hash = "sha256:89075171ef11988b3fa157f5dbd8b9cf09d65fffee97e29ce403cd8defba19d2"}, {file = "proto_plus-1.23.0-py3-none-any.whl", hash = "sha256:a829c79e619e1cf632de091013a4173deed13a55f326ef84f05af6f50ff4c82c"}, ] [package.dependencies] -protobuf = ">=3.19.0,<5.0.0dev" +protobuf = ">=3.19.0,<5.0.0" [package.extras] testing = ["google-api-core[grpc] (>=1.31.5)"] @@ -1516,6 +1590,7 @@ version = "4.25.3" description = "" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, @@ -1536,6 +1611,7 @@ version = "0.6.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pyasn1-0.6.0-py2.py3-none-any.whl", hash = "sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473"}, {file = "pyasn1-0.6.0.tar.gz", hash = "sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c"}, @@ -1547,6 +1623,7 @@ version = "0.4.0" description = "A collection of ASN.1-based protocols modules" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pyasn1_modules-0.4.0-py3-none-any.whl", hash = "sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b"}, {file = "pyasn1_modules-0.4.0.tar.gz", hash = "sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6"}, @@ -1561,6 +1638,7 @@ version = "2.7.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "pydantic-2.7.1-py3-none-any.whl", hash = "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5"}, {file = "pydantic-2.7.1.tar.gz", hash = "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"}, @@ -1580,6 +1658,7 @@ version = "2.18.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "pydantic_core-2.18.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81"}, {file = "pydantic_core-2.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2"}, @@ -1663,7 +1742,7 @@ files = [ ] [package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" +typing-extensions = ">=4.6.0,!=4.7.0" [[package]] name = "pygments" @@ -1671,13 +1750,14 @@ version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] -plugins = ["importlib-metadata"] +plugins = ["importlib-metadata ; python_version < \"3.8\""] windows-terminal = ["colorama (>=0.4.6)"] [[package]] @@ -1686,10 +1766,12 @@ version = "0.11.10" description = "Python JSON Schema Grammar interpreter" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "PyJSG-0.11.10-py3-none-any.whl", hash = "sha256:10af60ff42219be7e85bf7f11c19b648715b0b29eb2ddbd269e87069a7c3f26d"}, {file = "PyJSG-0.11.10.tar.gz", hash = "sha256:4bd6e3ff2833fa2b395bbe803a2d72a5f0bab5b7285bccd0da1a1bc0aee88bfa"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] antlr4-python3-runtime = ">=4.9.3,<4.10.0" @@ -1701,6 +1783,7 @@ version = "10.8" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pymdown_extensions-10.8-py3-none-any.whl", hash = "sha256:3539003ff0d5e219ba979d2dc961d18fcad5ac259e66c764482e8347b4c0503c"}, {file = "pymdown_extensions-10.8.tar.gz", hash = "sha256:91ca336caf414e1e5e0626feca86e145de9f85a3921a7bcbd32890b51738c428"}, @@ -1719,6 +1802,7 @@ version = "3.1.2" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" +groups = ["main", "dev"] files = [ {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, @@ -1733,10 +1817,12 @@ version = "0.8.1" description = "Python ShEx Implementation" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "PyShEx-0.8.1-py3-none-any.whl", hash = "sha256:6da1b10123e191abf8dcb6bf3e54aa3e1fcf771df5d1a0ed453217c8900c8e6a"}, {file = "PyShEx-0.8.1.tar.gz", hash = "sha256:3c5c4d45fe27faaadae803cb008c41acf8ee784da7868b04fd84967e75be70d0"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] cfgraph = ">=0.2.1" @@ -1755,10 +1841,12 @@ version = "0.9.1" description = "PyShExC - Python ShEx compiler" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "PyShExC-0.9.1-py2.py3-none-any.whl", hash = "sha256:efc55ed5cb2453e9df569b03e282505e96bb06597934288f3b23dd980ef10028"}, {file = "PyShExC-0.9.1.tar.gz", hash = "sha256:35a9975d4b9afeb20ef710fb6680871756381d0c39fbb5470b3b506581a304d3"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] antlr4-python3-runtime = ">=4.9.3,<4.10.0" @@ -1774,6 +1862,7 @@ version = "0.5.4" description = "Easily pick a place to store data for your python package." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "pystow-0.5.4-py3-none-any.whl", hash = "sha256:c377cc9fff11127007e60eb5c4dc18f2ffd986c0d0cec27134cdcd4c805bc7d8"}, {file = "pystow-0.5.4.tar.gz", hash = "sha256:2692180cb405bd77259bee6c7f4db545d10e81939980064730609f21750567ff"}, @@ -1798,6 +1887,7 @@ version = "8.1.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, @@ -1820,6 +1910,7 @@ version = "2015.11.4" description = "Configures logging and allows tweaking the log level with a py.test flag" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "pytest-logging-2015.11.4.tar.gz", hash = "sha256:cec5c85ecf18aab7b2ead5498a31b9f758680ef5a902b9054ab3f2bdbb77c896"}, ] @@ -1833,6 +1924,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -1847,6 +1939,7 @@ version = "0.4.0" description = "A pure Python implementation of the trie data structure." optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "PyTrie-0.4.0-py3-none-any.whl", hash = "sha256:f687c224ee8c66cda8e8628a903011b692635ffbb08d4b39c5f92b18eb78c950"}, {file = "PyTrie-0.4.0.tar.gz", hash = "sha256:8f4488f402d3465993fb6b6efa09866849ed8cda7903b50647b7d0342b805379"}, @@ -1861,6 +1954,7 @@ version = "2024.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, @@ -1872,6 +1966,7 @@ version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, @@ -1932,6 +2027,7 @@ version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, @@ -1946,6 +2042,7 @@ version = "6.3.2" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." optional = false python-versions = ">=3.7,<4.0" +groups = ["main", "dev"] files = [ {file = "rdflib-6.3.2-py3-none-any.whl", hash = "sha256:36b4e74a32aa1e4fa7b8719876fb192f19ecd45ff932ea5ebbd2e417a0247e63"}, {file = "rdflib-6.3.2.tar.gz", hash = "sha256:72af591ff704f4caacea7ecc0c5a9056b8553e0489dd4f35a9bc52dbd41522e0"}, @@ -1967,10 +2064,12 @@ version = "0.6.1" description = "rdflib extension adding JSON-LD parser and serializer" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "rdflib-jsonld-0.6.1.tar.gz", hash = "sha256:eda5a42a2e09f80d4da78e32b5c684bccdf275368f1541e6b7bcddfb1382a0e0"}, {file = "rdflib_jsonld-0.6.1-py2.py3-none-any.whl", hash = "sha256:bcf84317e947a661bae0a3f2aee1eced697075fc4ac4db6065a3340ea0f10fc2"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] rdflib = ">=5.0.0" @@ -1981,10 +2080,12 @@ version = "1.0.3" description = "Shim for rdflib 5 and 6 incompatibilities" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "rdflib_shim-1.0.3-py3-none-any.whl", hash = "sha256:7a853e7750ef1e9bf4e35dea27d54e02d4ed087de5a9e0c329c4a6d82d647081"}, {file = "rdflib_shim-1.0.3.tar.gz", hash = "sha256:d955d11e2986aab42b6830ca56ac6bc9c893abd1d049a161c6de2f1b99d4fc0d"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] rdflib = ">=5.0.0" @@ -1996,6 +2097,7 @@ version = "0.35.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "referencing-0.35.0-py3-none-any.whl", hash = "sha256:8080727b30e364e5783152903672df9b6b091c926a146a759080b62ca3126cd6"}, {file = "referencing-0.35.0.tar.gz", hash = "sha256:191e936b0c696d0af17ad7430a3dc68e88bc11be6514f4757dc890f04ab05889"}, @@ -2011,6 +2113,7 @@ version = "2.31.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, @@ -2032,6 +2135,7 @@ version = "2.0.0" description = "OAuthlib authentication support for Requests." optional = false python-versions = ">=3.4" +groups = ["dev"] files = [ {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, @@ -2050,10 +2154,12 @@ version = "0.1.4" description = "A pure python RFC3339 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["main", "dev"] files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] six = "*" @@ -2064,10 +2170,12 @@ version = "1.3.8" description = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "rfc3987-1.3.8-py2.py3-none-any.whl", hash = "sha256:10702b1e51e5658843460b189b185c0366d2cf4cff716f13111b0ea9fd2dce53"}, {file = "rfc3987-1.3.8.tar.gz", hash = "sha256:d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "rpds-py" @@ -2075,6 +2183,7 @@ version = "0.18.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, @@ -2183,6 +2292,7 @@ version = "4.9" description = "Pure-Python RSA implementation" optional = false python-versions = ">=3.6,<4" +groups = ["dev"] files = [ {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, {file = "rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21"}, @@ -2197,10 +2307,12 @@ version = "0.18.6" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] "ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} @@ -2215,6 +2327,7 @@ version = "0.2.8" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, @@ -2267,6 +2380,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, ] +markers = {main = "platform_python_implementation == \"CPython\" and extra == \"docs\"", dev = "platform_python_implementation == \"CPython\""} [[package]] name = "schemasheets" @@ -2274,6 +2388,7 @@ version = "0.1.24" description = "Package to author schemas using spreadsheets" optional = false python-versions = ">=3.9,<4.0" +groups = ["dev"] files = [ {file = "schemasheets-0.1.24-py3-none-any.whl", hash = "sha256:b7ebceb28e6cd61bbe743945d54e5d45540e794cfc0432b52cb228af8015c4cc"}, {file = "schemasheets-0.1.24.tar.gz", hash = "sha256:af18b1012994989cd6c811b770ed547ac52067a640e04b5a4a63cf32306dab3a"}, @@ -2292,6 +2407,7 @@ version = "69.5.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, @@ -2299,7 +2415,7 @@ files = [ [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov ; platform_python_implementation != \"PyPy\"", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -2308,10 +2424,12 @@ version = "0.8.2" description = "ShExJSG - Astract Syntax Tree for the ShEx 2.0 language" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "ShExJSG-0.8.2-py2.py3-none-any.whl", hash = "sha256:3b0d8432dd313bee9e1343382c5e02e9908dd941a7dd7342bf8c0200fe523766"}, {file = "ShExJSG-0.8.2.tar.gz", hash = "sha256:f17a629fc577fa344382bdee143cd9ff86588537f9f811f66cea6f63cdbcd0b6"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] pyjsg = ">=0.11.10" @@ -2322,6 +2440,7 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main", "dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -2333,6 +2452,7 @@ version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" optional = false python-versions = "*" +groups = ["main", "dev"] files = [ {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, @@ -2344,6 +2464,7 @@ version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, @@ -2355,10 +2476,12 @@ version = "0.5.1" description = "SPARQL Slurper for rdflib" optional = false python-versions = ">=3.7.4" +groups = ["main", "dev"] files = [ {file = "sparqlslurper-0.5.1-py3-none-any.whl", hash = "sha256:ae49b2d8ce3dd38df7a40465b228ad5d33fb7e11b3f248d195f9cadfc9cfff87"}, {file = "sparqlslurper-0.5.1.tar.gz", hash = "sha256:9282ebb064fc6152a58269d194cb1e7b275b0f095425a578d75b96dcc851f546"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] rdflib = ">=5.0.0" @@ -2371,10 +2494,12 @@ version = "2.0.0" description = "SPARQL Endpoint interface to Python" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "SPARQLWrapper-2.0.0-py3-none-any.whl", hash = "sha256:c99a7204fff676ee28e6acef327dc1ff8451c6f7217dcd8d49e8872f324a8a20"}, {file = "SPARQLWrapper-2.0.0.tar.gz", hash = "sha256:3fed3ebcc77617a4a74d2644b86fd88e0f32e7f7003ac7b2b334c026201731f1"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] rdflib = ">=6.1.1" @@ -2391,6 +2516,7 @@ version = "2.0.29" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c142852ae192e9fe5aad5c350ea6befe9db14370b34047e1f0f7cf99e63c63b"}, {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99a1e69d4e26f71e750e9ad6fdc8614fbddb67cfe2173a3628a2566034e223c7"}, @@ -2442,6 +2568,7 @@ files = [ {file = "SQLAlchemy-2.0.29-py3-none-any.whl", hash = "sha256:dc4ee2d4ee43251905f88637d5281a8d52e916a021384ec10758826f5cbae305"}, {file = "SQLAlchemy-2.0.29.tar.gz", hash = "sha256:bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0"}, ] +markers = {main = "extra == \"docs\""} [package.dependencies] greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} @@ -2478,6 +2605,7 @@ version = "0.4.15" description = "An Enum that inherits from str." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "StrEnum-0.4.15-py3-none-any.whl", hash = "sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659"}, {file = "StrEnum-0.4.15.tar.gz", hash = "sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff"}, @@ -2494,6 +2622,7 @@ version = "1.2.0" description = "String case converter." optional = false python-versions = "*" +groups = ["main"] files = [ {file = "stringcase-1.2.0.tar.gz", hash = "sha256:48a06980661908efe8d9d34eab2b6c13aefa2163b3ced26972902e3bdfd87008"}, ] @@ -2504,6 +2633,7 @@ version = "0.9.0" description = "Pretty-print tabular data" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, @@ -2518,6 +2648,7 @@ version = "2.4.0" description = "ANSI color formatting for output in terminal" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "termcolor-2.4.0-py3-none-any.whl", hash = "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63"}, {file = "termcolor-2.4.0.tar.gz", hash = "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"}, @@ -2532,6 +2663,8 @@ version = "2.0.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +markers = "python_version == \"3.10\"" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -2543,6 +2676,7 @@ version = "4.66.2" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, @@ -2563,10 +2697,12 @@ version = "2.9.0.20240316" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "types-python-dateutil-2.9.0.20240316.tar.gz", hash = "sha256:5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202"}, {file = "types_python_dateutil-2.9.0.20240316-py3-none-any.whl", hash = "sha256:6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b"}, ] +markers = {main = "extra == \"docs\""} [[package]] name = "typing-extensions" @@ -2574,6 +2710,7 @@ version = "4.11.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, @@ -2585,6 +2722,7 @@ version = "2024.1" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" +groups = ["main"] files = [ {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, @@ -2596,10 +2734,12 @@ version = "1.3.0" description = "RFC 6570 URI Template Processor" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, ] +markers = {main = "extra == \"docs\""} [package.extras] dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] @@ -2610,6 +2750,7 @@ version = "4.1.1" description = "Implementation of RFC 6570 URI Templates" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, @@ -2621,13 +2762,14 @@ version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -2638,6 +2780,7 @@ version = "4.0.0" description = "Filesystem events monitoring" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, @@ -2669,6 +2812,7 @@ files = [ {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, ] +markers = {main = "extra == \"docs\""} [package.extras] watchmedo = ["PyYAML (>=3.10)"] @@ -2679,10 +2823,12 @@ version = "1.13" description = "A library for working with the color formats defined by HTML and CSS." optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, ] +markers = {main = "extra == \"docs\""} [package.extras] docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] @@ -2694,6 +2840,7 @@ version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, @@ -2767,25 +2914,10 @@ files = [ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] -[[package]] -name = "zipp" -version = "3.18.1" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] - [extras] docs = ["linkml"] [metadata] -lock-version = "2.0" -python-versions = ">=3.9,<3.13" -content-hash = "202ac816d3eaef06b635098d127e5ba6a4837d2b207200900281220518f6c53f" +lock-version = "2.1" +python-versions = ">=3.10,<3.13" +content-hash = "35c44982ce919987c5d31bd72d51c15eb41026534dc135f9bc110e45c8c2ea6f" diff --git a/pyproject.toml b/pyproject.toml index c62bf03..9804307 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ include = [ ] [tool.poetry.dependencies] -python = ">=3.9,<3.13" +python = ">=3.10,<3.13" linkml-runtime = "^1.7.5" linkml = "^1.7.8" pandas = "^2.1.2"